jffs2_scan_eraseblock

news/2024/11/28 2:45:29/

有关 jffs2_scan_eraseblock 问题小结

2008-10-04 16:35

总结前面遇到的问题:
1.有关类似:
mtd->read(0x44 bytes from 0x68cf44) returned ECC error
jffs2_get_inode_nodes(): CRC failed on node at 0x0068c684: Read 0xe8b9b3b0, calculated 0x9402829b
的问题,是写文件系统时的错误,写cramfs用nand write就可以了,但写jffs2文件系统要用nand write.jffs2命令。

2.有关类似:
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0050e154: 0xfbeb instead
的问题,是制作文件系统时使用 mkfs.jffs2 命令有误,FS2410板的nand flash是三星的K9F1208U0B。使用的命令是:
mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -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所規劃的區塊大小.这里使用的是8MB.
(5)如果挂载后会出现类似:CLEANMARKER node found at 0x0042c000 has totlen 0xc != normal 0x0 的警告,则加上 -n 就会消失。
(6) 还有的选项,自己看帮助!-h

总结在FS2410上制作jffs2文件系统的过程:
详细过程请参考:《在nand flash上实现JFFS2根文件文件系统》
1. 下载 mtd-snapshot-20050519.tar.bz2 ,生成mkfs.jffs2的工具;
[fs2410@home]$ tar –jxvf mtd-snapshot-20050519.tar.bz2
[fs2410@home]$ cd mtd/util
[fs2410@home]$ make
用ls命令,可以看的mkfs.jffs2文件;
2. 生成JFFS2文件镜像
[fs2410@home]$ mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 --pad=0x800000 -n
3. 设置uboot启动参数:
FS2410#setenv bootargs root=/dev/mtdblock/2 rootfstype=jffs2 rw console=ttySAC0,115200 init=/linuxrc mem=64M
4.下载rootfs.jffs2镜像
下载到Nand Flash第二个分区。
FS2410#nand erase 200000 800000
FS2410#nand write.jffs2 300008000 200000 800000

方法二:
[fs2410@home]#mkfs.jffs2 -r /source/rootfs -o rootfs.jffs2 -e 0x4000 -n

启动开发板烧写rootfs.jffs2镜像
FS2410#nand erase 200000 800000//(注意把整个存放文件系统的分区全部给擦除)。
FS2410#nand write.jffs2 30008000 200000 31a28c//(必须是rootfs.jffs2的实际大小。如果是你写成了4M,那么分区的其余部分JFFS2文件系统将无法识别)。

附相关jffs2的内核配置:
File systems ---> Miscellaneous filesystems --->
     <*>JournallingFlash File System v2 (JFFS2) support
     [*]JFFS2write-bufferingsupport
     [*]AdvancedcompressionoptionsforJFFS2
     [*]JFFS2ZLIBcompressionsupport
     [*]JFFS2RTIMEcompressionsupport
     [*] JFFS2 RUBIN compression support

注意:
配置内核时,我没有选择:
NAND Flash Kevice Drivers--->
[] S3C2410 NAND Hardware ECC
在drivers/mtd/nand/s3c2410.c 中的ecc校验使用的是:
chip->eccmod = NAND_ECC_SOFT


有相关问题,且给出自己情况的解决办法:
jffs2文件系统在redboot下
http://blog.sina.com.cn/s/blog_4a082210010005dq.html
http://www.smth.edu.cn/pc/pccon.php?id=2150&nid=129263&p=n
这里主要存在两个问题,分别说明一下。
6.1.2 创建jffs2文件系统注意事项
  引导过程中出现的数十行”jffs2_scan_eraseblock(): Magic bitmask 0x198
5 not found…”信息说明jffs2文件系统有问题。另外,如果我先用远程NFS根文件
系统引导,然后在目标机系统中直接 mount -t jffs2 /dev/mtdblock/2 /mnt 也会
得到同样的警告信息,不过可以在 /mnt 下面看到正确的文件系统内容。
  为了解决这个问题,我首先仔细看了 mkfs.jffs2 的手册页,发现 --erasebl
ock 参数似乎比较重要,而我没有使用,于是找到该参数值 0x20000,用该参数重
新生成了映像文件。测试表明问题仍然存在。
  查找资料发现,有人强调在 mkfs.jffs2 时使用 -p 选项,其作用是从文件末
尾到最后一个erase block填充0xFF。这时我意识到FLASH的未分配空间必须以0xFF
填充。而我先前的做法不能保证这一点。首先没有指定-p选项;其次,由于-l参数
指定了远远大于实际映像文件大小的长度,而将内存区域中大量垃圾数据写到了FL
ASH中。
  因此,重新带参数-p制作jffs2文件系统映像,并改-l 0x200000为0x140000写
FLASH,这样再次mount该设备就OK了,没有再出现警告信息。但是Kernel panic仍
然存在,这是另外一个问题。
  
6.1.3 /dev/mtdblock/2 还是 /dev/mtdblock2
  (首先说明,’2’只是个例子./dev/mtdblock/n,n=0,1,2,3,…)
  看起来这两个设备节点应该是完全等效的。至少我原来是这么认为。所看到的
资料中,有的用/dev/mtdblock/2,有的用/dev/mtdblock2。能够看到的差别就是,
如果需要多个MTD块设备节点的话,把这些节点放在单独的/dev/mtdblock目录中,
而不是统统放在/dev下面,可以使/dev看起来清爽一些。因此,我在制作根文件系
统的时候,选择了前者,即在/dev/mtdblock目录下面创建了0-7共8个设备节点。


  然而,“Kernel panic: VFS: Unable to mount root fs on 1f:00”错误说明
内核没有从引导参数“root=/dev/mtdblock/2”正确定位到根文件系统(即使已经
解决了上一个问题,保证jffs2文件系统没有问题)。
  在考虑排除了多种可能性之后,无奈之下我决定试一下“root=/dev/mtdblock
2”。奇迹发生了,引导成功!特别注意,这时我并没有修改/dev设备节点,而仅仅
是修改了引导参数的写法。也就是说,不论你创建的MTD设备节点是/dev/mtdblock
/2还是/dev/mtdblock2,内核引导参数都应该是“root=/dev/mtdblock2”!
  为了不致于引起更多迷惑,我还是把设备节点改变为了/dev/mtdblock2的形式
。那么内核引导参数中到底可不可以使用/dev/mtdblock/2的形式呢?后来我猜测内
核如果支持 devfs 的话应该是可以的。devfs 的目的不就是把/dev从一塌糊涂的扁
平结构改成清晰的层次结构嘛?不过我还没有验证。
  另外,在内核引导参数中使用“主设备号、次设备号”的形式来指定根文件系
统的位置也是可以的。如下所示,“root=1f02”同样指定了/dev/mtdblock2。0x1
f=31是MTD块设备的主设备号,0x02=2是次设备号,即mtdblock2.


jffs2不能正常mount的问题
http://www.linuxforum.net/forum/showthreaded.php?Cat=&Board=embedded&Number=564855&page=&view=&sb=&o=all
原来的把檫除尺寸搞错了,我是先在主机上建立映像文件
mkfs.jffs2 -e 0x20000 --pad=0x1e0000 -l -d b -o jffs2.bin
然后直接把映像文件写入到flash中,启动后现在还不能进行写入,难道非要在开发板引导以后再檫除mtd分区写入映像才可以吗


急问:MTD+JFFS2
http://www.embed.com.cn/bbs/dispbbs.asp?boardID=10&ID=666
现在这个错误已经找出来了,是自己的flash分去错误,
第一个分区应该用于kernel,第二个用于user,最初我分反了!

ARM 920T Samsung2440 从cross-tools到 linux2.6.24.4
http://forum.byr.edu.cn/wForum/boardcon.php?bid=317&id=373&ftype=6
3) 加载mtdblock3 的jffs2文件系统出现下述信息:
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001001c: 0x3c04  
建议:将此分区数据清除,更近一步,加载一个image到这个分区.

hyl大侠写的 open 2440 Linux kernel移植文档
http://www.akae.cn/bbs/viewthread.php?tid=6993
jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0001001c: 0x3c04
   建议:将此分区数据清除,更近一步,加载一个image到这个分区

求助了 版主挂载文件系统出错
http://www.avantech.com.cn/bbs/Simple/Archiver.asp?fid=6&tid=73
nand flash上的文件系统也要和你的硬件对应才行,如果是1G的Nand flash,mkfs.jffs2这条命令就要改了。
-s 0x200 -e 0x4000是对应页大小和块大小的,你看看datasheet修改一下吧

jffs2问题,
http://linux.chinaunix.net/bbs/archiver/?tid-917346.html
多谢了,问题解决了,
犯错了,我把flash的扇区大小弄错了.

做了一个文件系统,但启动后就是这个下场,哪里出了问题?
http://www.ic37.com/htm_bbs_dic/2005-8/159040_225626.htm
解决了,是mkfs.jffs2的命令没用对

flash问题:Magic bitmask 0x1985 not found
http://www.ajaxstu.com/qianrushikaifa/301138.html
把flash重新擦一便,在写入文件系统试试
确实如此。。。

JFFS2 文档系统移植到s3c44b0+sst39vf1601zt
http://hi.baidu.com/igomine/blog/item/0e7145312ff396ad5edf0e8a.html
ffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00040000: 0x4662 instead
则可能是flash这个分区里面非空。将其擦除再重新mount即可。


其他相关问题:
嵌入式linux-Jffs2根文件系统jffs2_scan_eraseblock()错误
http://topic.csdn.net/u/20080723/11/529870ea-5a68-43af-8f39-811fd5ab0082.html?989760748
实例分析-在FLASH上构造JFFS2文件系统
http://blog.csdn.net/NetGeek/archive/2006/04/22/673151.aspx
制作根文件系统
http://www.mcublog.com/blog/user1/675/archives/2006/13314.html
制作jffs2 根文件系统
http://blog.chinaunix.net/u1/49088/showart.php?id=1070779
uclinux下Nand Flash的JFFS2文件系统的移植(4)
http://marigold1979.spaces.live.com/blog/cns!11D102CBE411075F!142.entry
NSLU2 编译环境终于安装完了,遇到了新问题!
http://designs.bokee.com/3084188.html
小女子初来报到,请高手指点下制作jffs2文件系统问题,谢谢
http://www.linuxfans.org/bbs/thread-170593-1-1.html
mtd/nand怎么mount/测试?
http://www.linuxsir.org/bbs/printthread.php?p=1530228
请帮忙看看JFFS2问题,谢拉!!!!
http://bbs.netbuddy.org/unix/17444.html

文章出处:http://www.diybl.com/course/6_system/linux/Linuxjs/2008827/137950.html

 


http://www.ppmy.cn/news/346460.html

相关文章

access violation reading 0x0000000000000020

access violation reading 0x0000000000000020 原因&#xff1a; 再次使用之前应该先释放一下内存&#xff1a; av_freep(aviobuffer); //printf("restart 4"); aviobuffer (unsigned char *)av_malloc(32768); 加上之后继续报错&#xff1a; OSError: excep…

jffs2_scan_eraseblock()问题解决办法

原文地址&#xff1a;https://blog.csdn.net/xin289379297/article/details/40923655 这个问题搞了我三天&#xff0c;尝试了网上的所有办法&#xff0c;均不奏效&#xff0c;只是偶尔能mount上jffs2系统&#xff1b; Old JFFS2 bitmask found at 0x02476c3cYou cannot use old…

jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0064ffe4: 0x0011 in

jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x0064ffe4: 0x0011 in ./mkfs.jffs2 -s 0x1000 -e 0x40000 -p 0x500000 -d rootfs/ -o rootfs.jffs2 说明&#xff1a; 页大小0x1000 4k 块大小0x40000 64k jffs2分区总空间0x500000即5M 当然生成的…

zynq linux内核出错,Zynq-Linux移植学习笔记(二十五)——新内核JFFS2文件系统CRC错误解决...

1、背景介绍 最近为了使用PCIe驱动,对Linux内核进行了升级,目前ZYNQ发布的最新版内核为2017.4(对应内核版本4.9),升级虽然解决了PCIe驱动问题,但却引入了另一个奇怪的问题-挂载JFFS2文件系统时会出现如下错误: jffs2: jffs2_scan_eraseblock(): Node at 0x0000225c {0x198…

linux提取文件关键字命令,Linux 中awk 提取包含某个关键字的段落

前提 AWK是一种处理文本文件的语言,是一个强大的文本分析工具。 本文将使用命令awk将具有某个关键字的段落提取出来。 准备数据 "Finalizer" #3 daemon prio=8 os_prio=0 tid=0x00007fb2dc1aa800 nid=0x63f6 in Object.wait() [0x00007fb2be61f000] java.lang.Threa…

c#上位机plc通讯读位

1、 var result McNet2.Read("D6000", 200); saveData["Barcode"] BitConverter.ToString(result.Content, (6100-6000)*2,80); 先一次性读取200个&#xff0c;result为一个字节数组。(6100-6000)*2为字节数组的位置【一个…

golang切片slice

切片不是数组,他是指向底层的数组 创建一般用make方法,第一个参数是指向的数组类型,第二个是存放元素的个数,第三个是存放容量,如果存放的个数超过容量,那么他就会从分配内存地址(容量在原来的基础上*2),len方法获取长度,cap获取容量 如果是简洁声明,不声明数组长度就是切片,譬…

android 8 奕骆,为耐而生的手机 Innos奕骆D6000评测

说道手机续航能力真是让人头疼的问题,当然也是老生常谈的问题,随着快速充电技术广泛应用到手机上,续航问题才在一定程度上得了缓解,但一天多充仍然不可避免,虽然市面上也出现了许多超续航手机,大电池容量+快速充电续航能力显著,但说道超续航手机比较优秀手机的当属Innos…