03.09.2015 Views

Marvell ARMADA 16x Applications Processor Family

7 Marvell ® ARMADA 16x Applications Processor Family ...

7 Marvell ® ARMADA 16x Applications Processor Family ...

SHOW MORE
SHOW LESS
  • No tags were found...

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

<strong>Marvell</strong> ® <strong>ARMADA</strong> <strong>16x</strong> <strong>Applications</strong> <strong>Processor</strong> <strong>Family</strong><br />

Version 3.2.x Boot ROM Reference Manual<br />

unsigned int Reserved1;<br />

unsigned int NumberofFactoryBadBlocks<br />

unsigned int RunTimeBBTLocationBootPartition;<br />

unsigned int Reserved2;<br />

unsigned int Reserved3;<br />

unsigned int Reserved4;<br />

unsigned int FactoryBadBlocks[NumberofFactoryBadBlocks];<br />

}<br />

The factory bad-block table is used to maintain the factory marked bad-block information on a NAND<br />

device. This table MUST be maintained for the life of the device as it is used as a reference in the<br />

event that errant software erases the factory information located in the spare area of the bad block.<br />

The fields used are as follows (also see Example 4):<br />

• Identifier – 32-bit ASCII encoded hex identifier “MBBT” (0x4D424254). This identifier is<br />

used by the Boot ROM and must be set to “MBBT” for the Boot ROM to load and use the<br />

information in the table.<br />

• Version – 32-bit version identifier currently set to 0x31303031. This field is used for tracking<br />

purposes and is not currently required by the Boot ROM.<br />

• Type – 32-bit ASCII encoded hex identifier “Fact” (0x46616374). This identifier is used by the<br />

Boot ROM and must be set to “Fact” for the Boot ROM to recognize this table as the factory<br />

bad-block table.<br />

• NumberofFactoryBadBlocks – Number of blocks identified as bad by the manufacturer.<br />

• RunTimeBBTLocationBootPartition – Address offset from the base of the boot partition<br />

to the location of the runtime bad-block table used for the boot partition.<br />

• FactoryBadBlocks [] – Array of block numbers identified as bad from the manufacturer.<br />

Example 4: Runtime Bad Block Table Structure<br />

struct {<br />

unsigned int Identifier;<br />

unsigned int Version;<br />

unsigned int Type;<br />

unsigned int Reserved;<br />

unsigned int PartitionID;<br />

unsigned int NumberofRleocationPairs;<br />

unsigned int Reserved;<br />

unsigned int Reserved;<br />

unsigned int BackupRuntimeBBTLocation;<br />

unsigned int Reserved;<br />

unsigned int RelocationPairs[NumberofRelocationPairs];<br />

}<br />

The runtime bad-block table is optional, but strongly suggested. At boot time, if the Boot ROM does<br />

not find the runtime bad-block table, it performs a best-effort boot. This means that it will read the<br />

first-level boot loader (OBM) according to information in the NTIM header and transfer control if no<br />

errors are encountered. For NAND devices, if an ECC error is encountered the boot process would<br />

be terminated. One option is to put the first-level boot loader into the first block of the NAND device<br />

1<br />

2<br />

3<br />

4<br />

5<br />

6<br />

7<br />

8<br />

9<br />

10<br />

11<br />

12<br />

13<br />

14<br />

15<br />

16<br />

17<br />

18<br />

19<br />

20<br />

21<br />

22<br />

23<br />

24<br />

25<br />

26<br />

27<br />

28<br />

29<br />

30<br />

31<br />

32<br />

33<br />

34<br />

35<br />

36<br />

37<br />

38<br />

39<br />

40<br />

41<br />

42<br />

43<br />

44<br />

45<br />

46<br />

47<br />

48<br />

49<br />

50<br />

51<br />

52<br />

53<br />

54<br />

55<br />

56<br />

57<br />

58<br />

Doc. No. MV-S301208-00 Rev. - Copyright © 11/15/10 <strong>Marvell</strong><br />

Page 52<br />

November 2010 PUBLIC RELEASE

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!