主题 : micro2440 nandflash怎么读写文件 复制链接 | 浏览器收藏 | 打印
级别: 侠客
UID: 90672
精华: 0
发帖: 71
金钱: 355 两
威望: 71 点
综合积分: 142 分
注册时间: 2013-04-22
最后登录: 2013-10-27
楼主  发表于: 2013-05-27 14:48

 micro2440 nandflash怎么读写文件

管理提醒: 本帖被 qq2440 从 micro2440技术交流专区 移动到本区(2013-11-18)
现在想用nandflash保存一些文本文件吧,能够读写。

不知道该如何操作啊,micro2440中的nandflash对应dev中的哪个设备啊,谢谢?
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
1楼  发表于: 2013-05-27 19:18

 回 楼主(zjun726) 的帖子

通常你需要在这个NAND Flash上挂载一个文件系统,比如ubifs, yaffs2或jffs2格式的。之后的事情就和你在PC上的Linux里读写文件一样了。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 90672
精华: 0
发帖: 71
金钱: 355 两
威望: 71 点
综合积分: 142 分
注册时间: 2013-04-22
最后登录: 2013-10-27
2楼  发表于: 2013-05-28 10:41

 回 1楼(kasim) 的帖子

我如何知道nandflash的设备名呢?nandflash应该是分为了4个区吧,前三个区分别烧写了boot,zImage和文件系统。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
3楼  发表于: 2013-05-28 18:09

 回 2楼(zjun726) 的帖子

在这种情况下,/dev/mtdblockX (X=0, 1, 2, 3)就对应于第1, 2, 3, 4个分区。你也可以通过"cat /proc/mtd"获取NAND Flash各个分区的信息。
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 90672
精华: 0
发帖: 71
金钱: 355 两
威望: 71 点
综合积分: 142 分
注册时间: 2013-04-22
最后登录: 2013-10-27
4楼  发表于: 2013-05-29 10:04

 回 3楼(kasim) 的帖子

我用cat命令试了一下,得到如下信息:
dev:    size   erasesize  name
mtd0: 00040000 00020000 "supervivi"
mtd1: 00020000 00020000 "param"
mtd2: 00500000 00020000 "Kernel"
mtd3: 0faa0000 00020000 "root"
mtd4: 10000000 00020000 "nand"

最后的name是指的挂载后的目录名吗?直接对目录名进行读写操作就可以了吗?

在dev目录下面有mtdx和mtdblockx两种设备,有什么区别吗?cat命令上面显示的dev是mtdx。
*無鈳取玳
级别: 论坛版主
UID: 27
精华: 12
发帖: 5398
金钱: 40120 两
威望: 17929 点
综合积分: 11036 分
注册时间: 2008-01-16
最后登录: 2014-11-22
5楼  发表于: 2013-05-29 11:39
最后的name是指的挂载后的目录名吗?直接对目录名进行读写操作就可以了吗?

这个是分区的名字,基本上用来表示这个分区用来存储什么东西。要进行读写,你需要把分区用mount挂载到一个挂载点(当然前提是这个分区包含一个合法的文件系统). 挂载点通常是根文件系统里的一个空目录,比如/mnt. 你可以通过"mount"命令不带任何参数显示当前已经挂载出来的分区和文件系统。

在dev目录下面有mtdx和mtdblockx两种设备,有什么区别吗?cat命令上面显示的dev是mtdx。

mtdX和mtdblockX是同一个NAND分区的两种设备形式,前者是字符型设备,后者是块设备。对于挂载操作来说,需要用NAND分区的块设备形式。关于这方面的更多信息, 可以参考http://www.linux-mtd.infradead.org/doc/general.html
"If you have an apple and I have an apple and we exchange apples, then you and I will
still each have one apple. But if you have an idea and I have an idea and we exchange
these ideas, then each of us will have two ideas."
级别: 侠客
UID: 90672
精华: 0
发帖: 71
金钱: 355 两
威望: 71 点
综合积分: 142 分
注册时间: 2013-04-22
最后登录: 2013-10-27
6楼  发表于: 2013-05-29 16:15

 回 5楼(kasim) 的帖子

谢谢斑竹的指点。