uboot中的bootargs设置如下:

bootargs=noinitrd console=ttyS0,115200n8 maxcpus=1mem=240Mmtdparts=S29GL:768K(boot),128K(env),15M(system),13M(rootfs),-(custfs);spi1.0:640k(uboot),320k(env),64k(mac),6M(system),23M(rootfs),-(config)root=/dev/mtdblock9 rw rootfstype=jffs2 init=/linuxrc

可以看到给custfs分配了3M大小的空间。

系统启动后,挂载文件系统后出现如下现象:

只有一片串行flash的设备上不会有此打印信息,同时又串行和并行flash的设备上有此打印信息(此打印信息时有时无,有的设备上有,有的设备上没有)

jffs2: jffs2_scan_eraseblock(): Magic bitmask0x1985 not found at 0x00000000: 0x4255 instead

jffs2: jffs2_scan_eraseblock(): Magic bitmask0x1985 not found at 0x00000004: 0x0001 instead

jffs2: jffs2_scan_eraseblock(): Magic bitmask0x1985 not found at 0x00000018: 0x0fcc instead

jffs2: jffs2_scan_eraseblock(): Magic bitmask0x1985 not found at 0x0000003c: 0x9221 instead

一直到:

jffs2: jffs2_scan_eraseblock(): Magic bitmask0x1985 not found at 0x00ce01d4: 0x16f1 instead

jffs2: Further such events for this erase blockwill not be printed

jffs2: Cowardly refusing to erase blocks onfilesystem with no valid JFFS2 nodes

jffs2: empty_blocks 0, bad_blocks 0, c->nr_blocks104

可以发现地址从0x00000000 ---0x00ce01d4刚好3M大小的内容。然后根据网上提供的两种解决方案:

  1. jffs2制作的过程中没有指定生成的文件文件系统的大小,在从内存地址中下载文件系统后写入到flash中的时候,写入的大小和生成的大小不一样,可能是由于内存中的脏数据下载到flash中去了,所以在制作jffs2文件系统的时候指定了生成文件的大小:--pad指定生成文件的大小

    /home/project/XLDK/buildroot/output/host/usr/sbin/mkfs.jffs2-e 0x10000 --pad=0x600000 -l -s 0x1000 -d/home/project/XLDK/buildroot/output/target -o/home/project/XLDK/buildroot/output/images/rootfs.jffs2

  2. flash没有擦除干净

    把整片flash都擦除后重新烧写还是有此打印信息出现。

经过这两种方法都没有解决此问题,说明问题不是出在此处,由于这块的操作一直都是针对第二片串行的flash进行操作的,发现打印出来的地址大小却是第一片并行flash的mtdblock4的大小,而且是给他分配多大空间,打印信息就报出多少空间的信息。所以定位在第一片并行flash对串行flash有影响。具体影响暂时没法定位,由于没有并行flash的座子,无法读出并行flash中的内容,无法判断flash是否被使用。

进入系统后df查看内存使用情况:(两片flash)

第一片flash的mtdblock4使用了388k的内容,当拆掉第一片flash后进入系统查看到:

根据df查看到内存使用情况后,突然发现文件系统下多出了一个mtdblock4,挂载在mnt目录下,对比其他设备都没有这一栏,所以这肯定是系统启动的时候系统自动创建目录并且把mtdblock4挂载到/mnt/custfs下。经过分析,后来查看到在/etc/inittab下发现了如下:

在文件系统制作过程中,会默认挂载mtdblock4到目录custfs下,那么之前的现象就得到解释了,这里才是出现此打印信息的真正原因所在,因为如果我们设备上有两片flash的话,mtd分区第一片flash分区如下:

mtdparts=S29GL:768K(boot),128K(env),15M(system),13M(rootfs),-(custfs);custfs刚好是mtdblock4,而系统启动过程中把mtdblock4挂载到/mnt/custfs下,并且文件类型是jffs2,这时候系统会去扫描该空间,出现打印信息,并且空间大小刚好是mtdblock4的大小,这就可以解释文档最开始的现象了。当我们拆掉并行flash后,mtd分区:

mtdparts=spi1.0:640k(uboot),320k(env),64k(mac),6M(system),23M(rootfs),-(config)其中mtdblock4刚好是rootfs,所以才会出现下面的有两个挂载的问题了

挂载的问题是在制作文件系统的时候添加到/etc/inittab下的,所以可以更改制作文件系统时候的文件可解决该问题,该文件目录如下:

修改inittab后,重新烧写rootfs.jffs2即可解决问题。





关于flash分区打印信息jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985相关推荐

  1. android电视打印信息解析,关于液晶电视打印信息

    原来是波特率的原因..换了个波特率显示正常了,下面这个是红灯亮不开机的酷开k2打印信息,有老师能解释一下怎么看吗 J Hello world!{m3a} svn-r(Apr  2 2015 19:53 ...

  2. android电视打印信息解析,液晶电视获取打印信息的方法与操作

    通过本文我们先来了解一下打印信息,首先要说的就是打印信息并不要打印机,只需要我们的烧录器就可以了.打印信息是什么呢,打印信息是电视机主控送出来的一段代码,我们通过电脑或是手机来查看代码,是机器本身运行 ...

  3. 启明云端分享|sigmastar SSD201 \ SSD202D内存大小问题及flash分区问题解答

    提示:作为Espressif(乐鑫科技)大中华区合作伙伴及sigmastar(厦门星宸)VAD合作伙伴,我们不仅用心整理了你在开发过程中可能会遇到的问题以及快速上手的简明教程供开发小伙伴参考.同时也用 ...

  4. Android Flash分区大小查看

    正常的8G Flash有多少可以用的 这样算吧: 硬盘和U盘厂家的算法:8GB*1000=8000MB*1000=8000000KB*1000=8000000000B 电脑系统的算法:80000000 ...

  5. Linux nor flash分区,Linux驱动开发笔记:NOR FLASH编写实例

    1. 背景介绍 板子上的zynq通过emc外接一块nor flash,地址分配如下: Nor flash的起始地址为0x80000000.当zynq上运行Linux后可以通过对该地址起始的区域进行擦除 ...

  6. 分析arm linux启动打印信息

    ===================================================== arm linux系统启动相关文章列表: arm linux系统启动流程 http://bl ...

  7. RT-thread应用讲解——FLASH分区

    RT-thread应用讲解--FLASH分区 目录 RT-thread应用讲解--FLASH分区 前言 一.挂载FLASH 二.ENV配置 1.打开on-chip flash 2.打开FAL软件包 3 ...

  8. esp32 Flash分区与OTA功能简析

    升级功能对于所有的嵌入式产品都是非常重要的.尤其是当产品量产/销售阶段,已经没有条件让厂家对产品升级,因此升级方式的设计必须防呆防错以及稳定. 乐鑫ESP32作为蓝牙WIFI合一的物联网芯片,开发成产 ...

  9. GD32上FAL Flash分区驱动移植及Easyflash与FlashDB移植说明

    GD32上FAL Flash分区驱动移植及Easyflash与FlashDB移植说明 效果 移植前提 下载源码 移植过程 加入以下文件及文件夹到工程目录和工程 将demo目录下的接口文件做下修改 修改 ...

  10. f1c100s spi flash分区

    spi flash分区 u-boot-sunxi-with-spl.bin – 1M suniv-f1c100s-licheepi-nano.dtb – 64K zImage – 4M rootfs ...

最新文章

  1. c语言游戏call调用,C语言-植物大战僵尸-刷僵尸call;fps游戏CS-方框透视(矩阵+传统)...
  2. android SDK manager 无法获取更新版本列表
  3. VC++把输入的字符转换为十六进制
  4. 决策树Decision Tree 及实现
  5. java安全编码指南之:可见性和原子性
  6. kotlin学习之数据类(七)
  7. 一个torch版本报错
  8. 由浅到深理解ROS URDF教程
  9. UNIX网络编程——进程间通信概述
  10. php自动加载什么时候用到,php的自动加载的使用
  11. IndexTank全文检索引擎设计分析
  12. String字符串工具类 StringUtils.java
  13. vmware安装dsm7.0
  14. 离职前一定要删除这几个文件,不然你的微信聊天记录全被别人看了
  15. 众筹一个报名签到平台的设计思路(一)——业务需求篇
  16. ALEXA站长全攻略(转)
  17. 为QNX系统增加定制命令方法
  18. 编程5分钟,命名2小时!聊聊命名规则!
  19. .有一千万条短信,有重复,以文本文件的形式保 请用5 分钟时间,找出重复出现最多的前10 条。
  20. flash游戏右键功能

热门文章

  1. the little schemer 笔记(10.1)
  2. Python动态网页爬取
  3. 实现开启和关闭android移动网络
  4. Minimum supported Gradle version is 6.1.1. Current version is 5.6.4.
  5. 学期博客:学习进度条
  6. 网页底部小鱼游动特效
  7. Retrofit 使用 DELETE 方式
  8. Android 直播 直播播放器选型
  9. 极狐GitLab 连接 minikube集群
  10. SpringBoot 启动报错 No property found for type !