Boot Program Start Method for NAND Flash Bad Block Handling

Resolve Bottlenecks,
Find Innovative Solutions
Generate Solutions

Solution Overview

Problem

NAND flash memory devices face issues with bit switching and randomly occurring bad blocks, leading to data errors and boot program start failures, which existing ECC algorithms cannot always correct, resulting in low successful boot program start probabilities.

Innovation Solution

A method and apparatus that detect bad blocks in NAND flash memory and re-read boot data from backup blocks when errors occur, ensuring that only when all error correction fails across multiple blocks is a boot program start failure fed back, thereby increasing the chances of successful boot program initiation.

Engineering Contradictions & Design Principles

VSEngineering Contradiction Analysis

1Reliability

If ECC algorithm is used to check boot data, then data errors can be corrected, but bit switching and bad blocks cause errors beyond correction capacity

Engineering Contradiction:
Improveboot program start success rateVSAvoidbit switching and bad blocks
Core Design Contradiction:
ReliabilityVSObject-affected harmful factors

Solution Approach 1:

The patent applies preliminary action by detecting bad blocks before attempting to read boot data from them. The system proactively identifies bad blocks using a bad block indicator and skips them beforehand, preventing wasted correction attempts on inevitably failed blocks. This preliminary detection and avoidance strategy improves boot success rate by eliminating futile ECC correction attempts on blocks that will definitely fail.

Inventive Principle:
Principle #10Preliminary action

Solution Approach 2:

The patent implements dynamics by dynamically adjusting the boot data reading process based on real-time detection results. When a bad block is detected, the system dynamically changes the reading strategy to skip that block and attempt alternative blocks. This dynamic adaptation allows the system to respond to actual block conditions rather than following a fixed reading sequence, thereby improving overall boot reliability.

Inventive Principle:
Principle #15Dynamics

2Ease of manufacture

If only one NAND flash is used for boot, then product cost is reduced, but bit switching and bad blocks lead to boot failure

Engineering Contradiction:
Improveproduct costVSAvoidboot program start success rate
Core Design Contradiction:
Ease of manufactureVSReliability

Solution Approach 1:

The patent applies segmentation by dividing the single NAND flash into multiple independently addressable blocks for boot data storage. Instead of relying on a single block, the system segments the storage into multiple candidate blocks (first block, second block, third block, etc.), each capable of storing boot data. This segmentation allows the system to distribute boot data across multiple blocks within the same NAND flash, enabling fallback options when one block fails while maintaining cost-effectiveness of using a single NAND flash device.

Inventive Principle:
Principle #1Segmentation

Solution Approach 2:

The patent implements parameter changes by modifying the block selection parameter during the boot process. Instead of always reading from a fixed first block, the system changes the block parameter dynamically based on detection results - attempting first block, then second block, then third block, and so on. This parameter change strategy allows the system to adapt to actual block conditions while using the same NAND flash device, thereby improving reliability without increasing hardware cost.

Inventive Principle:
Principle #35Parameter changes

Data Source

PatentEP2846261B1Method and apparatus for starting a boot program
Publication Date: 2020.01.01 HUAWEI TECH CO LTD
  • EP2846261B1 patent drawingFigure 1
  • EP2846261B1 patent drawingFigure 2
  • EP2846261B1 patent drawingFigure 3

AI summary

A method and a relevant apparatus for starting a boot program are provided. The method includes: when a boot request is detected, first determining whether a first physical block in a NAND flash is a bad block; then reading first boot data stored in the first physical block if the first physical block is not a bad block; then determining whether the read first boot data has a data error; re-reading the first boot data from a first backup block when the read first boot data has a data error; determining whether the first boot data that is re-read from the first backup block has a data error; and when the first boot data that is re-read from the first backup block has no data error, continuing to process according to a same manner of processing the first boot data, other boot data that needs to be read to start the boot program, until start of the boot program is complete.