热门关键字:  ubuntu  分区  函数  Fedora  linux系统进程

制作jffs2文件系统时遇到的错误

来源: 作者: 时间:2008-08-25 Tag: 点击:
由于粗心大意,又耽误了一天,不过这一天也对jffs2文件系统的制作了解了更多,前面主要是操作错误,写nand flash时我用的是nand write,而文章:在nand flash上实现JFFS2根文件文件系统中用的是:
nand write.jffs2 300008000 200000 800000
不过启动后,还有些问题:
VFS: Unable to mount root fs via NFS, trying floppy.
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0050e154: 0xfbeb instead
等这样的n行错误,这个错误,有空再做处理。
 
 
解决问题时看到网上的同类错误如下
jffs2挂载不上,大家帮忙分析分析
http://www.linuxforum.net/forum/showflat.php?Cat=&Board=embedded&Number=610679&page=&view=&sb=&o=&fpart=1&vc=1
找来找去竟然是制作镜像时大端小端的问题
制作镜像加上-b选择大端,就ok了

jffs2不能写的问题
http://www.linuxfans.org/bbs/viewthread.php?tid=122244&extra=&page=1
看過 http://www.samsung.com/Products/Semiconductor/Flash/NAND/128Mbit/K9F2808U0B/K9F2808U0B.htm
試過把pagesize改為 528,blocksize改為 16K+512,可是還是同一樣的錯誤訊息
mkfs.jffs2 -l --pagesize=0x200 --eraseblock=0x4000 --pad=0x30000 -d jffs2 -o jffs2.img
我不明白為何會有「Reading data from NAND FLASH without ECC is not recommended」這個錯誤訊息的
請問如來才可以啟動ECC的?
 
終於解決了問題
原來是因為小弟忘記了在內核啟動「JFFS2 support for NAND chips」
現在可以讀寫了
 
原来 erasesize是 0x4000 (16k)
于是重新作: mkfs.jffs2  -e 0x4000 -d rootfs_dir   -o  rootfs.jffs2 
#mkfs.jffs2 默认的erase block size 是64k
----------
然后 修改重启进入u-boot ,设置bootargs:
setenv bootargs root=/dev/mtdblock4 rootfstype=jffs2 rw console=ttySAC0,115200 mem=64M init=/linuxrc
我的命令是:
tftpboot 30800000  rootfs.jffs2
nand erase 1000000 3000000
nand write  30800000  1000000 1c0000   #正好烧写到mtdblock4 里面去了, rootfs.jffs2 的大小不到1c0000 ,我为了 64k对齐。
   #nand write.jffs2 我也试过, 但是也有下面一对的警告和错误
如果挂载jffs2的时候,出现类似于:
CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0
的问题,则见到网上说的办法:
在嵌入式Linux系统中挂载 jffs2 根文件系统
二、制作根文件系统的JFFS2镜像。使用MTD工具中的mkfs.jffs2命令,具体做法如下: mkfs.jffs2 -r /home/tekkamanninja/working/nfs/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x500000 -s 0x200 -n
各参数的意义:(1)-r : 指定要做成image的源資料夾.
(2)-o : 指定輸出image檔案的文件名.
(3)-e : 每一塊要抹除的block size,預設是64KB.要注意,不同的flash, 其block size會不一樣.我的是三星的K9F1208U0B.
(4)--pad (-p): 用16進制來表示所要輸出檔案的大小,也就是root.jffs2的size。很重要的是, 為了不浪費flash空間, 這個值最好符合flash driver所規劃的區塊大小.以我的板子來說,就是5MB.
(5)如果挂载后会出现类似:CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0   的警告,则加上 -n 就会消失。
(6) 还有的选项,自己看帮助!-h
最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册