当前位置: 技术问答>linux和unix
u-boot nand读写问题
来源: 互联网 发布时间:2016-08-26
本文导语: u-boot 1.1.15 kernel 2.6.23.17 mkyaffsimage源码为最新的 jffs2用mkfs.jffs2 根据 http://blog.csdn.net/arriod/archive/2008/07/31/2743064.aspx 修改 在u-boot中加入了yaffs2系统烧写功能 但是不管是yaffs yaffs2 jffs2用u-boot的nand write.xxx命令都无法...
u-boot 1.1.15
kernel 2.6.23.17
mkyaffsimage源码为最新的
jffs2用mkfs.jffs2
根据
http://blog.csdn.net/arriod/archive/2008/07/31/2743064.aspx
修改 在u-boot中加入了yaffs2系统烧写功能
但是不管是yaffs yaffs2 jffs2用u-boot的nand write.xxx命令都无法正确写入数据
用内核的nand write写jffs2可以正确写入但是写yaffs yaffs2也不正确
后来又修改了mkyaffsimage.c的源码
根据http://blog.csdn.net/lanmanck/archive/2009/07/17/4356242.aspx
依然不行
后来又根据
http://www.unixresources.net/linux/clf/embedded/archive/00/00/68/60/686030.html
修改还是不行
也试过u-boot用NAND_ECC_NONE kernel用NAND_ECC_NONE开yaffs的ecc 似乎都米有作用
不知道大家知道还有用啥补丁?
kernel 2.6.23.17
mkyaffsimage源码为最新的
jffs2用mkfs.jffs2
根据
http://blog.csdn.net/arriod/archive/2008/07/31/2743064.aspx
修改 在u-boot中加入了yaffs2系统烧写功能
但是不管是yaffs yaffs2 jffs2用u-boot的nand write.xxx命令都无法正确写入数据
用内核的nand write写jffs2可以正确写入但是写yaffs yaffs2也不正确
后来又修改了mkyaffsimage.c的源码
根据http://blog.csdn.net/lanmanck/archive/2009/07/17/4356242.aspx
依然不行
后来又根据
http://www.unixresources.net/linux/clf/embedded/archive/00/00/68/60/686030.html
修改还是不行
也试过u-boot用NAND_ECC_NONE kernel用NAND_ECC_NONE开yaffs的ecc 似乎都米有作用
不知道大家知道还有用啥补丁?
|
老兄阿, 烧个 yaffs 不用那么麻烦。
你直接用 nfs 启动, 格式化(擦除) mtd 分区, 然后把分区mount 上来,
直接把文件系统 copy 进去就得了, 连做 yaffs2 包这一步都省了。
另外对于不同的 flash , mkyaffsimage 是有区别的, 因为块的大小不一样,
128MB 以下容量 NAND FLASH 芯片的一页大小为 528 字节,用来存放数据,另外每一页还有 16 字节的备用空间( SpareData,OOB ),用来存储 ECC 校验 / 坏块标志等信息,再由若干页组成一个块,通常一块为 32 页 16K 。以前的 nand flash 的
Pagesize 页大小,多为 512B+16B 的 oob , block 大小为 64* ( 512B+16B ) =32KB+1KB
现在目前市场上见到的,绝大多数,都是新的 nand falsh ,其 Pagesize 页大小多为 2KB+64B 的 oob , block 大小多为 64pages 页 =64* ( 2K+64B ) =128KB+4KB ,一个 nand flash 中的芯片,一般含有 4096 个块,比如 samsung 的 K9F4G08U0M ,所以这个 nand flash 大小就是
4096 Blocks = 4096 * 64 * ( 2K+64B ) =512MB
即:
1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
= (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 4,096 Blocks
= 4,224 Mbits =512MB
你直接用 nfs 启动, 格式化(擦除) mtd 分区, 然后把分区mount 上来,
直接把文件系统 copy 进去就得了, 连做 yaffs2 包这一步都省了。
另外对于不同的 flash , mkyaffsimage 是有区别的, 因为块的大小不一样,
128MB 以下容量 NAND FLASH 芯片的一页大小为 528 字节,用来存放数据,另外每一页还有 16 字节的备用空间( SpareData,OOB ),用来存储 ECC 校验 / 坏块标志等信息,再由若干页组成一个块,通常一块为 32 页 16K 。以前的 nand flash 的
Pagesize 页大小,多为 512B+16B 的 oob , block 大小为 64* ( 512B+16B ) =32KB+1KB
现在目前市场上见到的,绝大多数,都是新的 nand falsh ,其 Pagesize 页大小多为 2KB+64B 的 oob , block 大小多为 64pages 页 =64* ( 2K+64B ) =128KB+4KB ,一个 nand flash 中的芯片,一般含有 4096 个块,比如 samsung 的 K9F4G08U0M ,所以这个 nand flash 大小就是
4096 Blocks = 4096 * 64 * ( 2K+64B ) =512MB
即:
1 Page = (2K + 64)Bytes
1 Block = (2K + 64)B x 64 Pages
= (128K + 4K) Bytes
1 Device = (2K+64)B x 64Pages x 4,096 Blocks
= 4,224 Mbits =512MB
|
仔细看下你用的Flash的Datasheet。还有你所用的uboot是否支持这种FLASH
|
对,有些flash对文件系统的支持不好,例如有些flash IC支持yaffs,但不支持yaffs2.