Marvell ARMADA 16x Applications Processor Family
7 Marvell ® ARMADA 16x Applications Processor Family ...
7 Marvell ® ARMADA 16x Applications Processor Family ...
- 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