
On 7/1/2010 3:02 AM, Ben Gardiner wrote:
This is a re-submission of the patch by Harald Welte laforge@openmoko.org with minor modifications for rebase and changes as suggested by Scott Wood scottwood@freescale.com [1] [2].
This patch enables the environment partition to have a run-time dynamic location (offset) in the NAND flash. The reason for this is simply that all NAND flashes have factory-default bad blocks, and a fixed compile time offset would mean that sometimes the environment partition would live inside factory bad blocks. Since the number of factory default blocks can be quite high (easily 1.3MBytes in current standard components), it is not economic to keep that many spare blocks inside the environment partition.
With this patch and CONFIG_ENV_OFFSET_OOB enabled, the location of the environment partition is stored in the out-of-band (OOB) data of the first block in flash. Since the first block is where most systems boot from, the vendors guarantee that the first block is not a factory default block.
This patch introduces the 'nand env.oob' command, which can be called from the u-boot command line. 'nand env.oob get' reads the address of the environment partition from the OOB data, 'nand env.oob set {offset,partition-name}' allows the setting of the marker by specifying a numeric offset or a partition name.
Hello Ben,
This is a nice idea. I see that the logic needs 8bytes at offset 0 in block 0 oob area. This means that it would also overwrite the offset 5 (which is the bad block marker in case of small page devices) and offset 0 (bad block marker in large page devs)
Am I missing something here
Regards Vipin