
Harald Welte wrote:
On Mon, Jul 07, 2008 at 01:47:24PM -0500, Scott Wood wrote:
It works if you allow room for bad blocks within each partition, and treat the environment as its own partition. Current u-boot supports skipping bad blocks within a desginated environment region.
which wastes a lot of space, if you have something like a 128kByte erase-block-size (like most 2kByte page size NAND's today)... so if you want to have redundancy and use some spare blocks you will end up with something on the order of 512kByte of wasted flash space to store a couple of hundreds of bytes environment. Not very elegant.
Furthermore, if you want to make sure it always works with any of your components that are within the spec of the manufacturer, then you will waste even more. The problem is that a new virgin component e.g. a 64MByte flash from Samsung can have already as many as 1.3MBytes of bad blocks.
Fair enough...
Therefore, I still believe that such a feature is useful and should be merged into u-boot. If there are problems with my particular implementation, I'm happy to address them.
Can you base it off of the testing branch of the u-boot-nand-flash repo?
I also have another patchset for what I call 'dynpart' support, i.e. the dynamic calculation of a unit-specific partition table that ensures the net size of partitions are as per spec, no matter how many of the factory default blocks are located where. So it would even support NAND devices with a worse spec than the ones that we were using.
Interesting... Would such a patch eliminate the need for this one, by making the environment a dynamic partition? Is there any (plan for) Linux support?
-Scott