linux flash读写程序,Arm9 linux系统 flash读写问题

2023-05-16

Arm9 linux系统 flash读写问题

当前板子环境:

(a)16MiB Nor FLASH(默认从Nor Flash启动)

(b)32MiB Nand FLASH

(c)环境参数

~ $

Please stand by while rebooting the system.

Restarting system.

NAND:  NAND_ECC_NONE selected by board driver. This is not recommended !!

32 MiB

U-Boot 2008.10 (Sep 29 2010 - 09:20:06)

DRAM:  256 MB

Flash: 16 MB

In:    serial

Out:   serial

Err:   serial

Press CTRL-C to abort autoboot in hilinux # printenv

baudrate=115200

bootfile="uImage"

ethaddr=5E:4E:27:EB:59:7F

bootcmd=bootm 0x80100000

bootdelay=1

bootargs=mem=32M console=ttyAMA0,115200 root=1f01 rootfstype=jffs2 mtdparts=physmap-flash.0:3M(boot),13M(rootfs) pcimod=host pciclksel=1

filesize=2A0378

fileaddr=80300000

netmask=255.255.0.0

ipaddr=10.22.4.205

serverip=10.22.4.52

stdin=serial

stdout=serial

stderr=serial

verify=n

ver=U-Boot 2008.10 (Sep 29 2010 - 09:20:06)

Environment size: 421/131068 bytes

hilinux #

(d)烧写的固件皆为华为官方SDK  目录pub/img中提供,硬件参考Hi3515dmeb_ver_a版本

出现的主要问题:

(1)NAND:  NAND_ECC_NONE selected by board driver. This is not recommended !!

关于nor flash和Nand flash共存的情况下,nand如何初始化,是否需要更改内核或uboot原码

(2)

Scanning device for bad blocks

Bad eraseblock 0 at 0x00000000

Bad eraseblock 1 at 0x00004000

该错误是nand flash存在坏块,该如何解决.

u-boot下直接擦除不成功,

(3)jffs2文件系统不可写,写入重启后丢失

jffs2_scan_inode_node(): CRC failed on node at 0x002a0510: Read 0x709b3df2, calculated 0xe9287682

jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002c0000: 0x1905 instead

jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x002c0004: 0x000c instead

该错误的可能原因是什么,该如何解决

(4)以下错误如何解决,是否与制作jffs2文件系统有关

Node totlen on flash (0x00000004) != totlen from node ref (0x00000044)

Auto login as root ...

Node totlen on flash (0x0000002f) != totlen from node ref (0x00000070)

|

1.nand的初始化应该在内核中加载相应的驱动就可以了。

2.nand flash存在坏块的话,你在擦除时可用uboot命令:

nand write.jffs2:向Nand Flash写入数据,如果NandFlash相应的区域有坏块,可以跳过坏块。

3.jffs2文件系统写入的原因应该是对应的nand区域块没有擦除干净,我之前在nor flash上写入jffs2文件系统时也有遇过这个问题,擦除之后就ok了。

4.这个或许是jffs2的原因吧,具体不清楚。。

|

nand flash有坏块很正常吧,驱动会处理的吧。经常看见这个坏块的错误

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

linux flash读写程序,Arm9 linux系统 flash读写问题 的相关文章

  • 动态加载库和共享全局符号

    由于我在动态加载的库中观察到全局变量的一些奇怪行为 因此我编写了以下测试 首先我们需要一个静态链接库 头文件test hpp ifndef BASE HPP define BASE HPP include
  • 如何在 Linux 中显示进程状态(阻塞、非阻塞)

    有没有办法查询 Linux 进程表中进程的状态 以便能够演示执行查询时进程是正在运行还是被阻止 我的目标是从进程或程序的 外部 执行此操作 因为我希望从操作系统进程的角度来理解这一点 但欢迎任何想法 这是Python代码阻塞的过程 impo
  • 选择多个模式的 awk 代码

    这是我的输入文件 比如modified txt r4544 n479826 2012 08 28 07 12 33 0400 Tue 28 Aug 2012 1 line Changed paths M branches 8 6 0 con
  • 有没有办法改变vim的默认模式

    有谁知道如何更改vim的默认模式 它的默认模式是命令模式 但是我可以将其更改为插入模式吗 只需将以下行添加到您的 vimrc 中 start Vim s default mode will be changed to Insert mode
  • 无法使用 tar -cvpzf 解压完整目录

    把我的头敲在这上面 I used tar cvpzf file tar gz压缩一个完整的目录 我将文件移动到另一台服务器 并尝试解压缩复制存档的目录 无法使其发挥作用 bash 3 2 tar xvpzf news tar gz tar
  • 终止 ssh 会话会终止正在运行的进程

    我正在使用 ssh 连接到我的 ubuntu 服务器 我使用命令启动编码程序 然而 似乎当我的 ssh 会话关闭时 因为我在进入睡眠状态的笔记本电脑上启动它 有没有办法避免这种情况 当然 阻止我的笔记本电脑休眠并不是永久的解决方案 运行你的
  • 如何将字符串推送到标准输入?在启动时通过 stdin 提供输入,然后以交互方式读取 stdin 输入 [重复]

    这个问题在这里已经有答案了 有没有办法在调用程序时将字符串 推送 到程序的标准输入流 这样我们就可以达到这样的效果 echo something my program 但不是在之后读取 EOF something my program将从原
  • 查找当前打开的文件句柄数(不是 lsof )

    在 NIX系统上 有没有办法找出当前正在运行的进程中有多少个打开的文件句柄 我正在从正在运行的进程中寻找在 C 中使用的 API 或公式 在某些系统上 见下文 您可以在 proc pid fd 中对它们进行计数 如果不属于其中之一 请参阅下
  • 并发 I/O - 缓冲区损坏、块设备驱动程序

    我开发块分层设备驱动程序 所以 我拦截WRITE请求并加密数据 并解密数据end bio 例行程序 在处理和READ要求 所以在单流中一切正常 但是 如果尝试同时从两个或更多进程执行 I O 我会遇到缓冲区内容损坏的情况 我没有任何本地存储
  • gnutls_handshake() 失败:握手失败 GIT

    一切都工作正常 但突然我收到错误 致命 无法访问 https 电子邮件受保护 cdn cgi l email protection name repo name git gnutls handshake 失败 握手失败 我在我的计算机和 E
  • 使用 xargs 时如何获取退出代码(并行)

    我制作了一个用于启动并行 rsync 进程的脚本 bin bash LIST 1 DEST DIR 2 RSYNC OPTS 3 echo rsyncing From SRC DIR To DEST DIR RSYNC OPTS RSYNC
  • 在Linux中执行jar文件[关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我创建了一个可执行的 Java jar 文件 也就是说 我将 java 程序正确打包到 jar 文件中 包括 META INF MANIFEST 文件
  • 打破条件变量死锁

    我遇到这样的情况 线程 1 正在等待条件变量 A 该变量应该由线程 2 唤醒 现在线程 2 正在等待条件变量 B 该变量应该由线程 1 唤醒 在我使用的场景中条件变量 我无法避免这样的死锁情况 我检测到循环 死锁 并终止死锁参与者的线程之一
  • 带有接收器的 boost_log 示例无法编译

    我正在考虑将 boost log 用于一个项目 一开始我就遇到了以下问题 我在以下位置找到的升压日志示例 http www boost org doc libs 1 54 0 libs log example doc tutorial fi
  • 如何从 swagger 文档生成静态 html 文件?

    我创建了一个 Swagger 文档yaml文件位于 api swagger swagger yaml 现在我想分享一个静态 HTML 文档及其定义 但它已在招摇项目 https github com swagger api swagger
  • 如何像C99一样使用make和编译?

    我正在尝试使用 Makefile 编译 Linux 内核模块 obj m main o all make C lib modules shell uname r build M PWD modules clean make C lib mo
  • 如何告诉 CMake 将构建文件放在哪里?

    我想告诉 CMake 将文件和文件夹输出到不同的文件夹而不是当前文件夹 我在下面讨论的是 CMake 生成的文件 文件 CMakeCache txt 目录 CMakeFiles 文件 生成文件 目录 bin 文件 cmake install
  • 如何在Linux中获取带有图标的活动应用程序

    我想找到一种方法获取活动应用程序的列表及其名称和图标 实际上 我正在使用此命令来获取所有活动进程 wmctrl lp 示例输出 0x03800002 0 3293 user notebook XdndCollectionWindowImp
  • /proc/kmsg 和 dmsg 有什么区别?

    我们通常这样做cat proc kmsg or dmesg从用户空间查看内核日志 我明白了dmesg是一个循环缓冲区 它从kmsg 但是kmsg也不是循环缓冲区 它们之间有什么区别和联系呢 宽松地说 dmesg 是一个转储 proc kms
  • 超立方体错误。非法的最小或最大规格

    尝试从这里运行示例代码http tess4j sourceforge net codesample html http tess4j sourceforge net codesample html我收到一条错误消息 Error Illega

随机推荐