From mboxrd@z Thu Jan 1 00:00:00 1970 From: Paul B. Henson Date: Fri, 05 Apr 2013 21:28:53 -0700 Subject: [U-Boot] freescale i.MX28 mxsboot NAND booting on mx28evk bad blocks In-Reply-To: References: <5147B63F.4020407@acm.org> Message-ID: <515FA485.1090709@acm.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de On 4/4/2013 3:09 AM, Trent Piepho wrote: > It's something to do with the way u-boot writes to nand. If I write > with nandwrite it doesn't happen, nandtest doesn't find any bad Hmm, I'm pretty sure I tested burning the u-boot generated nand image with nandwrite under Linux with exactly the same result, it seems to be inherent in the underlying data, not the burn method. Did you use the --oob option to nandwrite? The u-boot generated image is actually written in two separate steps, the initial piece is written raw and includes oob data, the second piece is written normally and the ecc/oob is generated by the hardware. To burn it under linux, you need to split the u-boot nand image into those two pieces, and write the first with -oob, and the second normally. > A bad block on that chip is marked with a non-0xff as the first OOB > byte in the 1st page of a block. So, my guess is that when u-boot > writes the FCB data it also writes something to the OOB data. Yes, as would linux if you used the --oob option to nandwrite. > You said you've booted from NAND. Did you have to program any of the > OTP fuses to do this? No. All I did was install the actual NAND chip and update the boot dip switches. Testing u-boot, I followed the script in the default environment other than updating it to load the firmware from SD rather than tftp. For testing under Linux, I used dd to split the u-boot nand image into two pieces, corresponding to the u-boot burn instructions. > nandwrite didn't seem to want to program the blocks after they were > marked bad. The only way fix this seemed to be to scrub nand from > u-boot. So it's a problem if you want to be able to flash the > bootloader from Linux, unless there is some way to get the blocks > written when they have been marked bad. No, from what I understand there is no way to clear bad block markers from within linux short of modifying the mtd driver. I followed up with Otavio off list, he said he had ordered some nand chips for his board and would get back to me once he had received them and had a chance to replicate the issue. Are you targeting burning the nand with u-boot or linux? If you are using an older kernel, the kobs-ng that comes with the mx28 BSP works fine. It does not work with newer kernels though, there is a newer version of kobs-ng that comes with a different chip BSP that I've heard will work correctly on current kernels, it is on my to do list to try it out.