# US 11,907,049 B2 · Information processing apparatus, method of controlling the same, and storage medium with features for updating code and data areas of non-volatile memory

> Agents: this data is available as JSON from the patentgrep API and MCP server — see https://patentgrep.com/llms.txt

- Number: US 11,907,049 B2
- Document ID: US11907049B2
- Status: Granted
- Kind: B2
- Application number: 17/573,766
- Filed: 2022-01-12
- Published: 2022-07-14
- Granted: 2024-02-20
- Earliest claimed: 2021-01-13
- Assignees: Canon Kabushiki Kaisha
- Applicants: Canon Kabushiki Kaisha
- Inventors: Hidemi Sasaki
- Web page: https://patentgrep.com/patent/US11907049B2

## CPC

- G06F 11/0733: {in a data processing system embedded in an image processing device, e.g. printer, facsimile, scanner}
- G06F 11/1417: {Boot up procedures}
- G06F 9/4411: {Configuring for operating with peripheral devices; Loading of device drivers}
- G06F 11/1433: {during software upgrading}
- G06F 11/1458: {Management of the backup or restore process}
- G06F 11/327: {Alarm or error message display}
- G06F 21/572: {Secure firmware programming, e.g. of basic input output system [BIOS]}
- G06F 21/575: {Secure boot}
- G06F 21/64: Protecting data integrity, e.g. using checksums, certificates or signatures
- G06F 11/1004: {to protect a block of data words, e.g. CRC or checksum (G06F11/1076 takes precedence; security arrangements for protecting computers or computer systems against unauthorized activity G06F21/00)}
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

The present information processing apparatus comprises a non-volatile memory that has a first portion including a code area configured to hold a program and a data area configured to hold data. In addition, the information processing apparatus acquires update data of a first portion, and updates the first portion with the acquired update data. In the updating process, at least a portion of the program held in the code area is deleted before updating the contents of the data area, and after updating the contents of the data area, updating to the code area is completed.

## Claims

### Claim 1

An information processing apparatus comprising:
a non-volatile memory that has a first portion including a code area configured to hold a program and a data area configured to hold data; and
at least one processor that executes a program to:
acquire update data for the first portion, and
update the first portion by the acquired update data,
wherein the at least one processor executes a program in the non-volatile member to delete all of the program held in the code area before updating contents of the data area, and thereafter, delete data held in the data area, and to write update data to the data area, and thereafter write the update data to the code area.

### Claim 2 (depends on 1)

The information processing apparatus according to claim 1, wherein the non-volatile memory further includes a second portion that is a backup area for data held in the first portion, and
wherein the at least one processor executes a program in the non-volatile memory to acquire update data of the first portion from the second portion of the non-volatile memory.

### Claim 3 (depends on 2)

The information processing apparatus according to claim 2, wherein the at least one processor executes a program in the non-volatile memory to acquire firmware as update data from an external apparatus.

### Claim 4 (depends on 3)

The information processing apparatus according to claim 3, wherein the at least one processor executes a program in the non-volatile memory to, after the firmware is written to the first portion, write the firmware to the second portion.

### Claim 5 (depends on 1)

The information processing apparatus according to claim 1, further comprising another non-volatile memory having a second portion that is a backup area for data held in the first portion,
wherein the at least one processor executes a program in the non-volatile memory to: acquire update data of the first portion from the second portion of the other non-volatile memory.

### Claim 6 (depends on 1)

The information processing apparatus according to claim 1, wherein the at least one processor executes a program in the non-volatile memory to verify a validity of content held in the first portion, and, in a case where the verification failed, update the first portion.

### Claim 7 (depends on 6)

The information processing apparatus according to claim 6, wherein signature data for executing the verification is held in the code area.

### Claim 8 (depends on 7)

The information processing apparatus according to claim 7, wherein the at least one processor executes a program in the non-volatile memory to decrypt the signature data with a public key, acquire a first digest, use a hash function in relation to other data different to the signature data in the code area to acquire a second digest, and, by comparing the first digest and the second digest, verify a validity of content held in the first portion.

### Claim 9 (depends on 7)

The information processing apparatus according to claim 7, wherein the at least one processor executes a program in the non-volatile memory to:
verify a validity of content of the code area using the signature data, and
verify a validity of content of the data area using an error detection code.

### Claim 10 (depends on 6)

The information processing apparatus according to claim 6, wherein the at least one processor executes a program in the non-volatile memory to notify an error to a user in a case where verification of at least one of the code area and the data area failed.

### Claim 11 (depends on 1)

The information processing apparatus according to claim 1, wherein a program for at least one product is stored in the code area, and setting data specific to at least one product is stored in the data area.

### Claim 12

An information processing apparatus comprising:
a non-volatile memory that has a first portion including a code area configured to hold a program and a data area configured to hold data, wherein the code area includes a holding area; and
at least one processor that executes a program to:
acquire update data for the first portion, and
update the first portion by the acquired update data,
wherein the at least one processor executes a program in the non-volatile memory to delete all of the program held in the code area before updating contents of the data area, and thereafter delete the data held in the data area, and to write update data to an area different from the holding area of the code area, and write update data to the data area, and thereafter write update data to the holding area of the code area.

### Claim 13

An information processing apparatus comprising:
a non-volatile memory that has a first portion including a code area configured to hold a program and a data area configured to hold data, wherein the code area includes a holding area; and
at least one processor that executes a program to:
acquire update data for the first portion, and
update the first portion by the acquired update data,
wherein the at least one processor executes a program in the non-volatile memory to delete a program held in an area different from a holding area of the code area and write update data before updating contents of the data area, and thereafter delete data held in the data area, and write update data, and thereafter delete a program held in the holding area of the code area and write update data.

### Claim 14

A method of controlling an information processing apparatus comprising a non-volatile memory that has a first portion including a code area for holding a program and a data area for holding data, the method comprising:
acquiring update data for the first portion; and
updating the first portion by the acquired update data,
wherein, in the updating, all of the program held in the code area is deleted before updating contents of the data area, and thereafter the data held in the data area is deleted, update data is written to an area different from a holding area of the code area, update data is written to the data area, and thereafter update data is written to the holding area of the code area.

### Claim 15

A non-transitory storage medium operable to store a program for causing a computer to execute each step of a method of controlling an information processing apparatus comprising a non-volatile memory that has a first portion including a code area for holding a program and a data area for holding data, the method comprising:
acquiring update data for the first portion; and
updating the first portion by the acquired update data,
wherein, in the updating, all of the program held in the code area is deleted before updating contents of the data area, and thereafter the data held in the data area is deleted, update data is written to an area different from a holding area of the code area, update data is written to the data area, and thereafter update data is written to the holding area of the code area.
