
-----Original Message----- From: u-boot-bounces@lists.denx.de [mailto:u-boot-bounces@lists.denx.de] On Behalf Of Peter Pan Sent: Wednesday, September 21, 2011 9:09 AM To: u-boot@lists.denx.de Subject: [U-Boot] The command "nand write.yaffs" is not working correctly
I'm recently facing a yaffs2 image write problem in u-boot.
In u-boot console, I write the yaffs2 image in ram to an already erased nand flash with command "nand write.yaffs ${loadaddr} ${nandrootoffset} ${filesize}". After that, if I boot using a ramdisk and mount that yaffs2 partition, I can only see a folder of "lost+fount". I seems nothing has been written into that partition.
But if now I write this image using "nandwrite -a -o /dev/mtd4 yaffs2.img" and mount that partition, it's working.
Anyone met that problem already? Or if I did anything wrong?
[Jin Zhengxiong-R64188] I once met the similar issue with 2011.03 base and fixed it with following patch, But I didn't do a detail checking for that, FYI...
@@ -499,6 +499,7 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, return -EINVAL; }
+#ifndef CONFIG_CMD_NAND_YAFFS if (!need_skip) { rval = nand_write (nand, offset, length, buffer); if (rval == 0) @@ -509,13 +510,12 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, offset, rval); return rval; } - +#endif while (left_to_write > 0) { size_t block_offset = offset & (nand->erasesize - 1); size_t write_size;
WATCHDOG_RESET (); - if (nand_block_isbad (nand, offset & ~(nand->erasesize - 1))) { printf ("Skip bad block 0x%08llx\n", offset & ~(nand->erasesize - 1)); @@ -546,7 +546,7 @@ int nand_write_skip_bad(nand_info_t *nand, loff_t offset, size_t *length, ops.oobbuf = ops.datbuf + pagesize;
rval = nand->write_oob(nand, offset, &ops); - if (!rval) + if ( rval != 0) break;
offset += pagesize;