We built a production lot of DM368 IPNC based cameras with originally specified Samsung NAND, and we're programming them with IPNC DM36x Version 3.1 software
It seems that if the NAND has bad blocks in the Kernel area, the bad blocks are tolerated, but if the bad blocks are in the Squashfs area, the camera complains about errors in the file system.
Tracing through the uBoot source code we find that it uses a function nand_read_skip_bad that reads the NAND and skips over bad blocks,and since the information was also written in uBoot with a nand_write_skip_bad then everythign works out fine for loading the kernel.
Unfortunately this doesn't seem to be happening when the Kernel reads the NAND to load the file system.
According to the docs, apparently Pathpartner has optimized the NAND read with assembly language for faster reading... but since it doesn't actually work when there are errors in the Squashfs area, it seems that perhaps the optimized routines don't skip over bad blocks or don't remember to continue reading to make up for the skipped bad blocks.
Has anyone else encountered this issue in production programming ? What is the best solution ?