海思Hi35xx通过uboot查看flash指定地址的数据

海思Hi35xx通过uboot查看flash指定地址的数据 Keith_Cheung 2023-11-06 16:38:09 227

前言

在实际应用中有遇到过设备放置一段时间后设备不能启动的问题,uboot 完全没有响应,类似于flash中的数据被擦洗掉一样。

网上有介绍说是nandflash 不稳定,高温或是静电会导致nand flash 的比特位反转的问题,反转的少了,controller内部的ECC会将数据纠正,反转的多了超过纠错能力,就没有办法正确读取数据,这个在高温的时候比较明显。

在海思平台上,可以通过这样的一种方式来查看是否flash中的数据发生了数据位的反转或是数据错误:

  1. 用海思自带的HiTool工具,烧入一个uboot到ddr,也就是烧入到内存,让uboot从内存中启动。
  2. 在uboot中去读取flash指定地址的数据,把数据显示出来。
  3. 对比读取出来的数据与原来数据是否相等。

具体步骤如下:

  1. 烧入Uboot到内存,uboot从内存中启动:

易百纳社区

2. 擦除内存的一段地址,用来存放flash 数据: 将内存0x82000000 地址开始的1M 空间全部填写数据0xFF

mw.b 0x82000000 ff 100000;

3. 读取flash指定地址的数据:从flash 0地址开始的位置读取0x100000(1M)的数据到内存地址0x82000000

nand read 0x82000000 0 0x100000

4. uboot显示读取到的flash数据:md命令是memory display的缩写,显示内存地址为0x82000000 开始的0x100 个32位的数据,也就是1K数据

md 0x82000000 100

显示内容如下:

Wisdom # md 0x82000000 100
82000000: ea000517 e59ff014 e59ff014 e59ff014    ................
82000010: e59ff014 e59ff014 e59ff014 e59ff014    ................
82000020: 808016a0 80801700 80801760 808017c0    ........`.......
82000030: 80801820 80801880 808018e0 12345678     ...........xV4.
82000040: 12040050 00000000 00000000 000000fd    P...............
82000050: 12040054 00000000 00000000 00fd0000    T...............
82000060: 00000000 00000000 00000064 00000000    ........d.......
82000070: 12040000 12000000 00000000 000000fd    ................
82000080: 12040004 010060fa 00000000 000000fd    .....`..........
82000090: 12040198 00000006 00000000 00000015    ................
820000a0: 12040030 12000000 00000000 000000fd    0...............
820000b0: 12040034 000060e9 00000000 000000fd    4....`..........
820000c0: 12040198 00000049 00000000 00001845    ....I.......E...
820000d0: 12040198 00000001 00000000 0000000d    ................
820000e0: 12040198 00000000 00000000 00001005    ................
820000f0: 12040158 000000ff 00000000 003d0000    X.............=.
82000100: 10000008 00000002 00000000 0000401d    .............@..
82000110: 12040050 0001ff7c 00000000 0000008d    P...|...........
82000120: 12040054 0001ff7c 00000000 008d0000    T...|...........
82000130: 00000000 00000000 000001f4 00000000    ................
82000140: 1204014c 00000003 00000000 0000280d    L............(..
82000150: 1204014c 00000003 00000000 0000680d    L............h..
82000160: 12040148 00000001 00000000 0000100d    H...............
82000170: 12050090 ffffffff 00000000 000000fd    ................
82000180: 12050094 b17391c9 00000000 000000fd    ......s.........
82000190: 12050098 00000000 00000000 000000fd    ................
820001a0: 120500a0 000017ff 00000000 000000fd    ................
820001b0: 120e0000 000000c7 00000000 000000fd    ................
820001c0: 120e0004 000000c7 00000000 000000fd    ................
820001d0: 120e0010 00000005 00000000 0000001d    ................
820001e0: 00000000 00000000 00e4e1c0 00000000    ................
820001f0: 12110100 00001580 00000000 000000fd    ................
82000200: 12110104 71050024 00000000 000000fd    ....$..q........
82000210: 12118040 00002401 00000000 000000fd    @....$..........
82000220: 12118050 00c10a16 00000000 000000fd    P...............
82000230: 12118060 00000142 00000000 000000fd    `...B...........
82000240: 12118048 00000000 00000000 000000fd    H...............
82000250: 12118058 00000000 00000000 000000fd    X...............
82000260: 12118100 34421a12 00000000 000000fd    ......B4........
82000270: 12118104 4144b48d 00000000 000000fd    ......DA........
82000280: 12118108 540110dd 00000000 000000fd    .......T........
82000290: 1211810c 57896724 00000000 000000fd    ....$g.W........
820002a0: 12118110 00800000 00000000 000000fd    ................
820002b0: 12118114 00041308 00000000 000000fd    ................
820002c0: 12118118 00000066 00000000 000000fd    ....f...........
820002d0: 121180a0 00000001 00000000 000000fd    ................
820002e0: 12118200 000f0000 00000000 000000fd    ................
820002f0: 121184cc 00000000 00000000 000000fd    ................
82000300: 1211c01c 5dc00080 00000000 000000fd    .......]........
82000310: 1211c010 000a00c0 00000000 000000fd    ................
82000320: 1211c014 f000f000 00000000 000000fd    ................
82000330: 1211c030 34892221 00000000 000000fd    0...!".4........
82000340: 1211c034 168d1285 00000000 000000fd    4...............
82000350: 1211c038 20082208 00000000 000000fd    8....". ........
82000360: 1211c03c 0000052c 00000000 000000fd    <...,...........
82000370: 1211c040 4034657c 00000000 000000fd    @...|e4@........
82000380: 1211c0bc 00000009 00000000 000000fd    ................
82000390: 1211c064 00061014 00000000 000000fd    d...............
820003a0: 1211c068 00000020 00000000 000000fd    h... ...........
820003b0: 1211c074 00000000 00000000 000000fd    t...............
820003c0: 1211c070 00000908 00000000 000000fd    p...............
820003d0: 1211c084 0010410a 00000000 000000fd    .....A..........
820003e0: 1211d208 0002ff00 00000000 000000fd    ................
820003f0: 1211d308 0002ff00 00000000 000000fd    ................
Wisdom #

5. 查看原烧入flash 0地址文件的数据 原来烧入进去的数据为:

易百纳社区

6. 数据对比:这里只对比0x0000~0x000地址的数据,也就是第一行的数据,其它以此类推:uboot中读取到内存中并显示出来的数据是:

82000000: ea000517 e59ff014 e59ff014 e59ff014    ................

实际flash中应该的数据是:

易百纳社区

这里需要注意一下大小端的问题,uboot中显示出来的数据与在Windows中用UltraEdit工具查看的大小端刚好是反了。从这里我们可以看出,我们的第一行数据是一样的,没有发送反转。

如果要对比整块的内存数据,可以使用uboot的 cmp 命令进行对比,这里不再介绍。

声明:本文内容由易百纳平台入驻作者撰写,文章观点仅代表作者本人,不代表易百纳立场。如有内容侵权或者其他问题,请联系本站进行删除。
红包 点赞 收藏 评论 打赏
评论
0个
内容存在敏感词
手气红包
    易百纳技术社区暂无数据
相关专栏
置顶时间设置
结束时间
删除原因
  • 广告/SPAM
  • 恶意灌水
  • 违规内容
  • 文不对题
  • 重复发帖
打赏作者
易百纳技术社区
Keith_Cheung
您的支持将鼓励我继续创作!
打赏金额:
¥1易百纳技术社区
¥5易百纳技术社区
¥10易百纳技术社区
¥50易百纳技术社区
¥100易百纳技术社区
支付方式:
微信支付
支付宝支付
易百纳技术社区微信支付
易百纳技术社区
打赏成功!

感谢您的打赏,如若您也想被打赏,可前往 发表专栏 哦~

举报反馈

举报类型

  • 内容涉黄/赌/毒
  • 内容侵权/抄袭
  • 政治相关
  • 涉嫌广告
  • 侮辱谩骂
  • 其他

详细说明

审核成功

发布时间设置
发布时间:
是否关联周任务-专栏模块

审核失败

失败原因
备注
拼手气红包 红包规则
祝福语
恭喜发财,大吉大利!
红包金额
红包最小金额不能低于5元
红包数量
红包数量范围10~50个
余额支付
当前余额:
可前往问答、专栏板块获取收益 去获取
取 消 确 定

小包子的红包

恭喜发财,大吉大利

已领取20/40,共1.6元 红包规则

    易百纳技术社区