
On Wed, Jul 09, 2008 at 09:05:24AM +0200, Wolfgang Denk wrote:
In message 20080709002357.GS25698@prithivi.gnumonks.org you wrote:
More precisely, the flow of events in a full dynenv + dynpart setup (like the three openmoko devices so far) is:
- u-boot creates a bad block table as part of the production process of the device
- afterwards, the device-unique partition table is created (net partition sizes as per board-level spec), including an environment partition.
How do you "create" the partition table? Do you use the "mtdparts" command for this?
There is a new 'dynpart' command, which when executed uses the compile-time board-level net partiton sizes, combined with the bad-block-table to generate the device-specific 'dynamic' partition table. The result is stored in the mtdparts environment variable. Everything else is standard u-boot/kernel behaviour.
Please see the attached patch (just for reference, not inclusion yet) for the details of the implementation. This code was used successfully in the production/flashing of a couple of thousand devices, using the Samsung NAND flash chips I mentioned (up to 1.3MByte of bad blocks within 64MByte of total flash). We have seen quite a number of different device-specific partition tables, and everything has worked fine so far.
Just like with the 'dynenv' patch, I think it is something quite useful (if not neccessarry) for the economic large-scale production of NAND-flash only devices. We can always talk about the implementation details, and I'm willing to address any feedback regarding it.
- the standard regular partition table is stored in the environment
How do you store it? In the same way as "mtdparts" is working?
yes.