AnsweredAssumed Answered

NAND Flash Boot Process Question

Question asked by Tim Hutchinson on Aug 31, 2016
Latest reply on Sep 6, 2016 by Tim Hutchinson

Hi All,

 

I'm troubleshooting an intermittent boot problem on an MPC-5125 processor booting from a Micron NAND flash part. The processor manual states that the processor boot logic attempts to read the bootstrap utility from row address 0 at the start of the flash device (Block_0, Page_0, Column_0). At this address it does a burst read of 4 pages (about 4K of data). If no ECC failures, the boot read is considered successful and the process terminates. BUT, if an ECC failure is detected, the manual states that additional reads will be conducted at row address 256, 512 and 768. Here's my question, "what address is being referred to when the words "row address" are used?" My understanding of "row address" is that it represents the combined Column, page, block and LUN values. Since the bottom 16 bits of the full 5 byte row address represent the column address(byte within a page), is this implying 4K reads are made from columns 0, 256, 512 or 768 of the first page, block, LUN? If that's the case it's not very useful for redundancy since the 256 bytes between row addresses doesn't allow the storage of a complete bootstrap utility (remember 4k is read from each start address).

 

It would make more sense if the term "row address" referred to the starting block for a 4 page read. Can anybody help clarify this for me? Thanks in advance! ~Tim

 

 

Here's how the 5 byte flash address spec is divided up for the Micron flash part I'm using

 

        +--+----------> Bits[15-0] specify the column address (0-4319)

        |  |

0x0000000000

  ||||||

  ||||++--------------> Bits[22-16] Page address (0-127)

  ||||                  Bit [23] Plane select bit

  ||||

  ||++----------------> Bits[31-24] Block select bits

  ||

  ++------------------> Bits[34-32] Block select bits

                        Bit [35] LUN spec bit

Outcomes