免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 6463 | 回复: 8
打印 上一主题 下一主题

linux 下对flash的读写 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-08-29 18:03 |只看该作者 |倒序浏览
板子上已经把/dev/mtdblock挂载到 /mnt/mtd , 在mtd 下创建文件,并对其写入新的image, 可是重启后,系统依然使用原有的image。已经根据flash的地址在写入时做了位移。
还有,用flash_erase工具,好像也没法擦掉flash里的东西。

请大家指教

论坛徽章:
0
2 [报告]
发表于 2006-08-30 16:20 |只看该作者
我是可以用了,对于vi可以在挂载的mnt下面修改,重新启动确实是修改后的东西了。
有问题的是我拷一个可执行文件helloword进去,在重新mount上来helloword不能执行。正常网上大虾到vi可以用就算ok了,没有往后讲。可我可执行文件怎么不能用。怎么回事?是其他原因,还是?/

论坛徽章:
0
3 [报告]
发表于 2006-08-31 15:40 |只看该作者
cat /proc/mtd
看看你的mtd文件格式

论坛徽章:
0
4 [报告]
发表于 2006-09-02 20:29 |只看该作者
格式是jffs2, 这几天其他事忙死,忘了来顶帖子,不好意思。请大侠继续指教

论坛徽章:
0
5 [报告]
发表于 2006-09-06 10:16 |只看该作者
没人回贴吗,自己顶。
下面是一些信息
/ # 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

论坛徽章:
0
6 [报告]
发表于 2006-09-06 13:40 |只看该作者
楼上的试过应用程序啊。我现在可执行文件不能运行,不知道怎么回事。请教一下,我邮箱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
??????????????/
求助高人,网上没有人讲过可执行文件啊

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

论坛徽章:
0
8 [报告]
发表于 2006-09-11 08:36 |只看该作者
至少有两个地方要注意
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程序的原代码中修改,

论坛徽章:
0
9 [报告]
发表于 2006-09-11 18:02 |只看该作者
问题解决了。。。。。。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP