一直想解决在嵌入式linux运行的时候,动态更新cramfs,今天用mtd_debug实现了对kernel和rootfs的运行时更新。
同时还使用了dd以及nandwrite,发现dd对一个文件是可以的,但是写入另一文件后,内核启动的过程中出现了ECC的kernel panic。
而使用nandwrite则一次都不能成功。
--=================================================-- 1. OK /root/mtd_utils # ./mtd_debug write /dev/mtdblock/1 0x0 1218604 zImage Copied 1218604 bytes from zImage to address 0x00000000 in flash
./mtd_debug write /dev/mtdblock/2 0x0 2404352 ./rootfs.my.cramfs # ok ./mtd_debug write /dev/mtdblock/2 0x0 2416640 rootfs080626.cramfs # ok ./mtd_debug write /dev/mtd/2 0x0 2416640 rootfs080626.cramfs # write ok, run ok!
注意mtd_debug的长度参数,要<=文件的长度,才会写入到mtd中,否则会给出如下提示并退出: file_to_flash: fread, size 0x1297f5, n 0x1297f5 fread(): Success
--=