linux 下对flash的读写
板子上已经把/dev/mtdblock挂载到 /mnt/mtd , 在mtd 下创建文件,并对其写入新的image, 可是重启后,系统依然使用原有的image。已经根据flash的地址在写入时做了位移。
还有,用flash_erase工具,好像也没法擦掉flash里的东西。
请大家指教
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(8)
问题解决了。。。。。。。。
至少有两个地方要注意
1,linux/driver/mtd/maps/physmap.c
中的
static struct mtd_partition physmap_partitions[] = {
/* Put your own partition definitions here */
#if 1
{
name: "Kernel",
size: 0x1F0000,
offset: 0,
//mask_flags: MTD_WRITEABLE, /* force read-only */
}, {
name: "Config",
size: 0x10000,
offset: MTDPART_OFS_APPEND,
//mask_flags: MTD_WRITEABLE, /* force read-only */
}, {
name: "Initrd",
size: 0x1E0000,
offset: MTDPART_OFS_APPEND,
//mask_flags: MTD_WRITEABLE, /* force read-only */
}, {
name: "Redboot",
size: MTDPART_SIZ_FULL,
offset: MTDPART_OFS_APPEND,
mask_flags : MTD_WRITEABLE,
}
#endif
};
这些参数要与你flash上的要对应好,不然就mount不上 flash上的文件结构
2如果是flash的东西被拷贝到ramdisk中再mount randisk的话,就要从boot程序的原代码中修改,
楼上的试过应用程序啊。我现在可执行文件不能运行,不知道怎么回事。请教一下,我邮箱wangyajun462@126.com
如下:(helloword 是交叉编译后的可执行文件,test是vi 建的文本文件)
>mkdir jffs2
>cd jffs2
>mkdir file1
>cp /application/helloword .
>cp /application/test .
>cd ..
>cd ..
>mkfs.jffs2 -d jffs2 -o jffs2.img
>cp jffs2.img /dev/mtdblock1
>mount -t jffs2 /dev/mtdblock1 /mnt
>cd 到mnt下面
可以用 vi看到test文本
但./helloword不能运行
报错是input /output error
??????????????/
求助高人,网上没有人讲过可执行文件啊
网络可以用了,通过网络上传发现写进nand flash的文件变小了,而且直接看文件Ascii时发现前面不少被全给成0了.就是文本文件也少了不少,300行的文件上传一看只有前面3行了.原因是找到了,这样来说可执行文件当然发生错误了.
这是怎么回事啊,是 MTD里面的write和read函数有问题吗?jffs2的文件系统毕竟是一个发布的东西,应该没问题吧.
请教.........
没人回贴吗,自己顶。
下面是一些信息
/ # cat /proc/mtd
dev: size erasesize name
mtd0: 006c0000 00020000 "Faraday Linux System"
mtd1: 00100000 00020000 "User Space"
mount jffs2 mtdblock1 是可以的,也可以通过文件读写改变flash,可是mtd0就是不行,
mkdir /mnt/mtd0
mkdir jffs2
mkfs.jffs2 -d jffs2 -o jffs2.img
flash_erase /dev/mtd0 0 4
cp jffs2.img /dev/mtd0
mount -t jffs2 /dev/mtdblock0 /mnt/mtd0
rmdir jffs2
到mount 这句就开始报错
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x006a0000: 0xeaef instead
格式是jffs2, 这几天其他事忙死,忘了来顶帖子,不好意思。请大侠继续指教
cat /proc/mtd
看看你的mtd文件格式
我是可以用了,对于vi可以在挂载的mnt下面修改,重新启动确实是修改后的东西了。
有问题的是我拷一个可执行文件helloword进去,在重新mount上来helloword不能执行。正常网上大虾到vi可以用就算ok了,没有往后讲。可我可执行文件怎么不能用。怎么回事?是其他原因,还是?/