我正在尝试创建一个可以在工厂用闪存编程器闪存的生产映像。我正在使用Micron 51MB nand flash。
我发现到目前为止我采用的方法存在问题。
1)使用所有分区引导开发板
即
/dev/mtd0--> xloader
/dev/mtd1 -> uboot
/dev->mtd2 -> kernel
/dev/mtd3> root file system
/dev/mtd4 -> user application
now, I used nanddump -nof xloader.bin /dev/mtd0
nanddump -nof uboot.bin /dev/mtd1
nanddump -nof kernel.bin /dev/mtd2
nanddump -nof rootfs.bin /dev/mtd3
nanddump -nof apps.bin /dev/mtd4
cat /dev/mtd0 /dev/mtd1 /dev/mtd2 /dev/mtd3 /dev/mtd4 > golden_flash
当我在空闪存上闪现这个golden_flash时,我首先从RAM运行u-boot然后
tftp golden_flash
nand erase all
nand write 0x82000000 golden_flash
它不起作用。
启动后,我
mtd->read(0x1fc38 bytes from 0x60a03c8) returned ECC error
mtd->read(0xa7b0 bytes from 0x60b5850) returned ECC error
Empty flash at 0x060b584c ends at 0x060b6000
jffs2_scan_eraseblock(): Node at 0x060b618c {0x1985, 0xe022, 0x000000a7) has invalid CRC 0x5c3d15cb (calculated 0x5b9110fd)
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x060b6190: 0x00a7 instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x060b6194: 0x15cb instead
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x060b6198: 0x2e5b instead
mtd->read(0x59c bytes from 0x13eba64) returned ECC error
mtd->read(0x44 bytes from 0x13ec800) returned ECC error
mtd->read(0x7bc bytes from 0x13ec844) returned ECC error
mtd->read(0x558 bytes from 0x13ebaa8) returned ECC error
mtd->read(0x44 bytes from 0x13ec844) returned ECC error
mtd->read(0x514 bytes from 0x13ebaec) returned ECC error
mtd->read(0x44 bytes from 0x13ec888) returned ECC error
我从u-boot中闪现了图像
有没有更好的方法来创建生产图像或正确的方法来为NAND闪存创建生产图像?
答案 0 :(得分:1)
正如之前的一位评论者所说,由于坏块计数和设备之间的位置不一致,您将遇到坏块问题。但是如果跳过转储上的坏块,mtd0-mtd3中的任何坏块都将导致分区边界不匹配。 nand write命令可能不利用分区布局的知识,因此制造中设备的前四个分区中的坏块也将导致未对准。我认为最好的选择是分别刷新五个分区。