一直想解决在嵌入式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
--=

本文介绍了在嵌入式Linux系统运行过程中,如何使用mtd_debug、dd和nandwrite工具动态更新cramfs分区。通过实例展示了不同工具的使用方法,包括成功和失败的情况,如dd可能导致ECC错误,而nandwrite无法成功完成更新。
最低0.47元/天 解锁文章
5602

被折叠的 条评论
为什么被折叠?



