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」
現在可以讀寫了
jffs2 掛載的問題
http://linux.chinaunix.net/bbs/viewthread.php?tid=904219
原來 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
2.6.22掛載yaffs文件系統的問題
http://www.linuxsir.org/bbs/printthread.php?t=317121
換成cramfs後可以正常進入系統,把yaffs燒到另一個分區,用mount查看,發現裏面只有一個lost+found,是不是燒寫不對?我用過兩個聲稱支持yaffs的bootloader燒寫都是出現同樣問題。
另外用jffs2的時候也有問題,出現一大堆,感覺應該是文件系統製作有問題,我用的命令是:
引用:
--------------------------------------------------------------------------------
mkfs.jffs2 -l -n --eraseblock=0x4000 --pad -d rootfs -o rootfs.jffs2.new
--------------------------------------------------------------------------------
flash是三星的64M大小的K9F1208 Nand。
而且我是mknod console c 5 1過了
null zero也有
經過兩天的研究,閱讀代碼,對比分析,終於初步把這個問題解決了!
主要在於新版本內核出來後,yaffs2的代碼也有所變動,現在yaffs中通過
nandmtd1_WriteChunkWithTagsToNAND() 來寫他的chunk而不是原來的 nandmtd_WriteChunkToNAND()。寫入oob的數據變成了yaffs_PackedTags1結構,而不是原來yaffs_Spare變換後的oob。
而在mkyaffsimage中還是沒該過來,所以問題就是掛上後,就只看到lost+found.
我在我的日誌上有一些分析:
http://www.armchina.cn/article.asp?id=63
http://www.armchina.cn/article.asp?id=64
目前嘗試了一下,修改了mkyaffsimage,通過mtd_util
flash_eraseall
nandwrite -a -o
能夠正確掛載,修改uboot也應該很簡單了。
請教---用JFFS2 NAND FLASH作爲根文件系統時起不來
http://oldlinux.org/oldlinux/viewthread.php?tid=8556
我的nand flash是64MB的三星K9F1208
1Page = 512+16 Byte; 1Block = 32 Pages; 1Device = 4096 Blocks
這樣看來,Erase Size == 0x4000 (16KB)了
我加了 -e 0x4000 --pad 0x01e00000 (此分區的長度Size)選項了,
但是我同樣的方法制作的映像放在 ext-fs分區時(只是改了選項--pad x02000000),mount上去時卻可以正常的寫入和刪除.~~
是不是我的mkfs.jff2的問題, 這個是直接在網上down的一個二進制檔. ?
AT91sam9263EK使用JFFS2根文件系統
http://blog.chinaunix.net/u/27204/showart_367635.html
http://blog.21ic.com/user1/765/archives/2007/38548.html
生成jffs2根文件系統鏡像:
mkfs.jffs2 –l –s 0x400 –e 0x20000 –d tmp/ -o target.jffs2
a.通過nand編程器燒寫鏡像文件到nand flash芯片然後再焊接到pcb.
b.掛載nfs文件系統,使用nandwrite工具寫鏡像文件
5. 配置內核啓動參數如下:
setenv bootargs mem=64M console=ttyS0 115200 root=/dev/mtdblock1 rootfstype=jffs2 rw
U-Boot1.3.1中JFFS2文件系統支持和U盤支持的使用備忘
http://blog.chinaunix.net/u1/34474/showart_488324.html
http://blog.chinaunix.net/u2/67519/showart_640401.html
http://linux.chinaunix.net/techdoc/install/2008/04/29/998089.shtml
《在嵌入式Linux系統中掛載 jffs2 根文件系統 》一文中有介紹
[tekkamanninja@Tekkaman-Ninja mtd-utils.git]$ ./mkfs.jffs2 -r /home/tekkamanninja/working/nfs/boot -o boot.jffs2 -e 0x4000 --pad=0x4c0000 -s 0x200 -n
在嵌入式Linux系統中掛載 jffs2 根文件系統 Tekkaman Ninja
http://blog.chinaunix.net/u1/34474/showart_486812.html
使用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
其他查看相關文章:
我想讓你們分析下,MOUNT到底做了什麼事,它管不管格式化磁盤
http://www.icembed.com/bbs/dispbbs.asp?boardid=60&id=2644
系統會編譯生成JFFS2的輔助工具:mkfs.jffs2、eraseall、erase。其中mkfs.jffs2
會產生JFFS2文件系統鏡像的工具,eraseall和erase用來對FLASH芯片的擦除。mkfs.jffs的
使用方法如下:mkfs.jffs -d根目錄?-b| l??-e 擦除塊大小??-o 輸出文件??-v ?0-9??
?-q?。
第一步cat procmtd
查看jffs文件分區表
第二步eraseall devmtd0(或者mtd1)
擦除芯片,不知道是不是必須的
第三步
創建和複製jffs2影像
#mkfs.jffs2 –d filesystem –o jffs2.image
製作jffs2文件系統,filesystem是我製作的一個很小的包含幾個文件的目錄,生成的jffs2文件系統文件爲jffs2.image。在
mnt/下建立目錄jffs2:
#mkdir/mnt/jffs2
將jffs2文件系統拷貝到FLASH:
#cp jffs2.image /dev/mtdblock2
第四步 掛載
製作根文件系統
http://www.mcublog.com/blog/user1/675/archives/2006/13314.html
這樣製作根文件系統
mkfs.jffs2 -d ./rootbox -l -o jffs2-root.img
我公司的flash塊大小是128K,用:
mkfs.jffs2 -d ./rootbox -l -e 0x20000 -o jffs2-root.img
創建根文件系統的命令及參數:
/sbin/mkfs.jffs2 --eraseblock=0x10000 -l -n -d ramdisk -o rootfs.jffs2 --pad=0x400000
我把NOR-FLASH做了一個分區,但是MOUNT時,就報一堆這樣的信息:
http://linux.chinaunix.net/bbs/viewthread.php?tid=917346&page=1#pid6438487
http://linux.chinaunix.net/bbs/archiver/?tid-917346.html
多謝了,問題解決了,
犯錯了,我把flash的扇區大小弄錯了.
小女子初來報到,請高手指點下製作jffs2文件系統問題,謝謝
http://www.linuxfans.org/bbs/thread-170593-1-1.html
謝謝大蝦,我後來用了下面的指令產生的文件映象就沒有再出現這樣的問題了:
mkfs.jffs2 -l -n --eraseblock=0x4000 --pad -d ... -o ....img
我能不能再問多兩個問題?我之前在別的地方看到的這條指令時,其中還有一項是--pagesize=0x200。我不懂這裏的pagesize指
的是什麼 還有就是我覺得--pad的值與產生文件映象的速度快慢有關,這樣理解正確嗎?因爲是小菜鳥,老問這些簡單問題,
真不好意思,麻煩高手幫忙解答,謝謝!
jffs2不能正常mount的問題
http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=564679&page=&view=&sb=&o=all
原來的把檫除尺寸搞錯了,我是先在主機上建立映像文件
mkfs.jffs2 -e 0x20000 --pad=0x1e0000 -l -d b -o jffs2.bin
然後直接把映像文件寫入到flash中,啓動後現在還不能進行寫入,難道非要在開發板引導以後再檫除mtd分區寫入映像纔可以嗎
?我的沒有網卡所以這樣做很麻煩!
製作jffs2 根文件系統
http://blog.chinaunix.net/u1/49088/showart.php?id=1070779
2.6.24.3內核採用yaffs會出錯,採用cramfs又不能寫,目前只有jffs可以用了。
但是在生成mkfs.jffs2卻受到很大困難。編譯一直出錯。無奈網上找到了一個
工具。在附件中。
通過mkfs.jffs2 -r /rootfs -o filesystem.jffs2 -e 0x4000 --pad=0x500000 -s 0x200 -n
生產jffs2文件系統。
各參數的意義:
(1)-r : 指定要做成image的源資料夾.
(2)-o : 指定輸出image檔案的文件名.
(3)-e : 每一塊要抹除的block size,預設是64KB.要注意,不同的flash, 其block size會不一樣.
(4)--pad (-p): 用16進制來表示所要輸出檔案的大小,也就是root.jffs2的size。很重要的是, 為了不浪費flash空間, 這個
值最好符合flash driver所規劃的區塊大小.
(5)如果掛載後會出現類似:CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0 的警告,則加上 -n 就
會消失。
(6) 還有的選項,自己看幫助!-h
mkfs.jffs2 -o rootfs_jffs2.img -r rootfs -e 0x40000 -l --pad=0x1e80000
-e 表示擦除塊大小,
-l表示little-endian,
--pad=0x1e80000 表示文件系統大小爲0x1e80000 bytes,
如果不足則使用0xff來填充補滿。
嵌入式linux下jffs2文件系統的實現
http://blog2.eastmoney.com/stevenhe,856269.html
$ ./mkfs.jffs2 -e0x20000 -d./rootfsdir -ojffs2.img
其中-e 0x20000表示擦除塊的大小爲128kb;-d表示文件系統所在的目錄;-o表示文件系統映像名。
jffs2文件系統是專門針對嵌入式系統中的flash存儲芯片設計的,由於jffs2自身的特點,適合於在nor flash系列芯片上使用,
本文以intel strata flash e28f128爲例,介紹了在nor flash上實現jffs2文件系統的過程,爲嵌入式linux下的應用程序開發
奠定了基礎。
http://hi.baidu.com/perfectdeathknight/blog/item/1fc0d01e0557011d413417b7.html
./mkfs.jffs2 -d rootfs -p -s 0x200 -e 0x4000 -n -l -U -o rootfs.img
-d 指定待轉換的目錄,-p 指定將所有的已擦除但未使用的塊填充爲0xFF,-s 設定頁的大小爲528字節,-e 設定擦除塊的大小
爲16KB,-n 指明不添加清楚標記(nand flash 有自己的校檢塊,存放相關的信息。),-l 指定使用小端格式,-U 將所有文件
的擁有者設爲root用戶,最後-o 指明輸出的鏡像文件名。生成的rootfs.img可通過u-boot直接燒寫
至nand flash:
nand erase 0x200000 0x3e00000
tftp 0x30000000 rootfs.img
nand write.jffs2 0x200000 $(filesize)
要想使用jffs2文件系統作爲根文件系統,還需給linux傳入以下參數: root=/dev/mtdblock1 rw rootfstype=jffs2 ,可以通過
設定u-boot的bootargs完成這項工作。
setenv bootargs root=/dev/mtdblock1 rw rootfstype=jffs2 noinitrd init=/linuxrc
console=ttySAC0,115200
如何創建JFFS2 image
http://www.lupaworld.com/bbs/viewthread.php?tid=19212
linux下Nand Flash的JFFS2文件系統的移植
http://blog.csdn.net/bekars/archive/2006/02/22/606486.aspx
[技術問答 LINUX|編程] mkfs.jfss2交叉編譯的問題???
http://www.ic37.com/htm_bbs_dic/2007-4/158367_542026.htm
錯誤信息
http://my.clubhi.com/bbs/661523/messages/21523.html