linux 下对flash的读写

发布于 2022-07-25 19:57:04 字数 162 浏览 67 评论 8

板子上已经把/dev/mtdblock挂载到 /mnt/mtd , 在mtd 下创建文件,并对其写入新的image, 可是重启后,系统依然使用原有的image。已经根据flash的地址在写入时做了位移。
还有,用flash_erase工具,好像也没法擦掉flash里的东西。

请大家指教

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(8

灼痛 2022-07-27 00:01:36

问题解决了。。。。。。。。

喜爱纠缠 2022-07-27 00:01:33

至少有两个地方要注意
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程序的原代码中修改,

旧夏天 2022-07-27 00:01:32

楼上的试过应用程序啊。我现在可执行文件不能运行,不知道怎么回事。请教一下,我邮箱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
??????????????/
求助高人,网上没有人讲过可执行文件啊

好听的两个字的网名 2022-07-27 00:01:32

网络可以用了,通过网络上传发现写进nand flash的文件变小了,而且直接看文件Ascii时发现前面不少被全给成0了.就是文本文件也少了不少,300行的文件上传一看只有前面3行了.原因是找到了,这样来说可执行文件当然发生错误了.
这是怎么回事啊,是 MTD里面的write和read函数有问题吗?jffs2的文件系统毕竟是一个发布的东西,应该没问题吧.
请教.........

愛上了 2022-07-27 00:00:03

没人回贴吗,自己顶。
下面是一些信息
/ # 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

关于从前 2022-07-26 14:58:43

格式是jffs2, 这几天其他事忙死,忘了来顶帖子,不好意思。请大侠继续指教

慕巷 2022-07-26 12:31:22

cat /proc/mtd
看看你的mtd文件格式

我不是你的备胎 2022-07-26 09:49:26

我是可以用了,对于vi可以在挂载的mnt下面修改,重新启动确实是修改后的东西了。
有问题的是我拷一个可执行文件helloword进去,在重新mount上来helloword不能执行。正常网上大虾到vi可以用就算ok了,没有往后讲。可我可执行文件怎么不能用。怎么回事?是其他原因,还是?/

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文