由于粗心大意,又耽误了一天,不过这一天也对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了
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的?
請問如來才可以啟動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 我也试过, 但是也有下面一对的警告和错误
于是重新作: 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
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 位网友发表了评论
查看所有评论
发表评论
