# US 2019/0171534 A1 · Method of error correction in a flash memory

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

- Number: US 2019/0171534 A1
- Document ID: US20190171534A1
- Status: Published application
- Kind: A1
- Application number: 16/323,868
- Filed: 2017-09-07
- Published: 2019-06-06
- Earliest claimed: 2016-09-08
- Assignees: Continental Automotive France; Continental Automotive GmbH
- Applicants: Continental Automotive France; Continental Automotive GmbH
- Inventors: José De Oliva
- Web page: https://patentgrep.com/patent/US20190171534A1

## CPC

- G06F 11/1469: {Backup restoration techniques}
- G06F 9/4403: {Processor initialisation}
- G06F 11/1417: {Boot up procedures}
- G06F 11/1666: {where the redundant component is memory or memory area}
- G06F 11/20: using active fault-masking, e.g. by switching out faulty elements or by switching in spare elements
- G06F 2201/82: Solving problems relating to consistency
- G06F 2201/84: Using snapshots, i.e. a logical point-in-time copy of the data
- G06F: ELECTRIC DIGITAL DATA PROCESSING (computer systems based on specific computational models G06N)

## Abstract

A method of error correction in a nonvolatile flash memory of NAND type, the memory including a first and a second, identical, copies of software to be loaded, a page of a block occupied by data of the first copy of the software being corrupted, and a page of a block occupied by data of the second copy of the software being corrupted, the method including: the replacement of the block occupied by the second copy of the software and including a corrupted page with the identical block occupied by the first copy of the software, making it possible to correct the second copy of the software; the re-execution of the boot loading program; the loading of the second copy of the software.

## Claims

### Claim 1

A method of error correction in a nonvolatile flash memory of NAND type, said flash memory comprising a set of blocks which the application accesses in read mode or in write mode or in erase mode, each block comprising a plurality of pages, said memory comprising a first and a second, identical, copies of software to be loaded, the first and the second copies of the software physically occupying an equal number of distinct blocks, a page of a block occupied by data of the first copy of the software being corrupted, and a page of a block occupied by data of the second copy of the software being corrupted, said method comprising the execution of a boot loading program implementing the following steps:
an attempted loading of the first copy of the software by the boot loading program;
discovering by the boot loading program that at least one page of a block occupied by the first copy of the software is corrupted;
recording of an identification of said at least one corrupted page in a persistent memory of the flash memory;
configuring the boot loading program so that it loads the second copy of the software at the next execution;
re-executing of the boot loading program;
an attempted loading of the second copy of the software by the boot loading program;
discovering by the boot loading program that at least one page of a block occupied by the second copy of the software is corrupted;
recording of an identification of said at least one corrupted page in a persistent memory of the flash memory;
the replacement of the block occupied by the second copy of the software comprising a corrupted page with the identical block occupied by the first copy of the software not comprising any corrupted page, making it possible to correct the second copy of the software;
re-executing of the boot loading program; and
the loading of the second copy of the software.

### Claim 2 (depends on 1)

The method as claimed in claim 1, moreover comprising the replacement of the corrupted block of the first copy of the software with the identical block occupied by the second copy of the software, making it possible to correct the first copy of the software to be loaded.

### Claim 3 (depends on 1)

The method as claimed in claim 1, comprising, before the replacement of the corrupted block of the second copy of the software, when two distinct pages of two identical blocks are corrupted, that is to say when, in blocks intended to be occupied by identical data, respectively of the first and of the second copies of the software to be loaded, two pages intended to contain distinct data, respectively in each of said blocks, are corrupted:
implementing an algorithm configured to reconstruct an uncorrupted block corresponding to said corrupted blocks, on the basis of the data occupying uncorrupted pages of each of said corrupted blocks, and
replacing the corrupted block of the first copy of the software to be loaded with said reconstructed uncorrupted block.

### Claim 4 (depends on 1)

An embedded system comprising a boot loading program configured to implement the method as claimed in claim 1.

### Claim 5 (depends on 1)

A computer comprising a boot loading program configured to implement the method as claimed in claim 1.

### Claim 6 (depends on 5)

An automotive vehicle comprising a computer as claimed in claim 5.

### Claim 7 (depends on 2)

The method as claimed in claim 2, comprising, before the replacement of the corrupted block of the second copy of the software, when two distinct pages of two identical blocks are corrupted, that is to say when, in blocks intended to be occupied by identical data, respectively of the first and of the second copies of the software to be loaded, two pages intended to contain distinct data, respectively in each of said blocks, are corrupted:
implementing an algorithm configured to reconstruct an uncorrupted block corresponding to said corrupted blocks, on the basis of the data occupying uncorrupted pages of each of said corrupted blocks, and
replacing the corrupted block of the first copy of the software to be loaded with said reconstructed uncorrupted block.
