当前位置: 首页 > news >正文

flash写失败分析

记一次产测写flash失败的问题,记录flash相关操作,供以后参考

#查看分区表 #查看分区数据 #分区拷贝指令 #flash擦除

现象:

产线写产测信息失败,研发自测正常

怀疑方向:

1、flash出厂异常

2、flash被写如异常

分析手段:

1、查看分区表,找到对应分区,产测使用的是mtd8

cat /proc/mtd
dev:    size   erasesize  name
mtd0: 00040000 00008000 "boot"
......
mtd8: 00010000 00008000 "factory"

2、使用hexdump查看分区是否有异常数据。

一般空Flash的存储单元默认值为全1(即0xFF),如果出现连续0的情况,可能 是flash出厂有问题,或者贴片烧录器异常导致的。

hexdump /dev/mtd8
0000000 6544 6976 6563 614e 656d 383d 4b36 524d
0000010 5135 3431 3135 3031 3030 3131 0a35 7250
0000020 646f 6375 4b74 7965 653d 6339 3464 3135
0000030 3864 3234 0a66 6544 6976 6563 6553 7263
0000040 7465 633d 3262 6239 3063 3833 3463 6338
0000050 6364 3334 3766 3735 6466 3631 3730 6635
0000060 3234 ff34 ffff ffff ffff ffff ffff ffff
0000070 ffff ffff ffff ffff ffff ffff ffff ffff
*
0010000注:前面非0数据为已写入数据

从hexdump来看不存在连续为0的情况(之前遇到过NAND Flash出现过)

3、将工厂设备flash分区拷出来,写到研发设备分析

拷贝到SD卡命令:
dd if=/dev/mtd8 of=/mnt/sdcard/mtd_bk.bin
128+0 records in
128+0 records out
65536 bytes (64.0KB) copied, 0.027574 seconds, 2.3MB/s写入命令(注意是mtdblock8):
dd if=/mnt/sdcard/mtd8_backup.bin of=/dev/mtdblock8
128+0 records in
128+0 records out
65536 bytes (64.0KB) copied, 0.243274 seconds, 263.1KB/stips:因为Flash写入前必须擦除,写入mtdblock8(块设备)会自动触发擦除。而mtd8为字符设备,需要手动擦除,否则写入不会生效。所以写入使用mtdblock8。

4、编写产测指令,查看flash写入失败原因,以及附近数据内容

mtd_api_read read factory from 0 size 32768 limit 65536 success
erasesize:32768
data corrupted :err :1, key:DeviceModel=XXX基站▒▒▒▒▒▒▒▒▒▒▒▒▒▒▒

发现DeviceModel后带中文,且中文 后面数据异常,结合中文通常字节计算会异常,可以推断原因如此。
5、擦除分区,重新写产测

flash_eraseall /dev/mtd8

擦除重写产测正常

6、工厂排除操作,确认有工位写入了中文

http://www.xdnf.cn/news/728227.html

相关文章:

  • Linux系统编程收尾(35)
  • 【C/C++】cmake实现Release版本禁用调试接口技巧
  • [定昌linux开发板]启用用户唯一性限制
  • Android全局网络监控最佳实践(Kotlin实现)
  • 从Java的Jvm的角度解释一下为什么String不可变?
  • Spring Boot3.4.1 集成redis
  • 自动过滤:用 AutoFilterer 实现高性能动态查询
  • 怎么从一台电脑拷贝已安装的所有python第三方库到另一台
  • 分库分表的常见策略
  • Arduino学习-跑马灯
  • day 26 函数专题
  • 基于云模型与TOPSIS评价算法的综合应用研究
  • 深度刨析树结构(从入门到入土讲解AVL树及红黑树的奥秘)
  • 深入理解Transformer架构:从原理到实践
  • python中 @注解 及内置注解 的使用方法总结以及完整示例
  • Jenkins 2.479.1安装和邮箱配置教程
  • SkyWalking如何实现跨线程Trace传递
  • 权威认证与质量保障:第三方检测在科技成果鉴定测试中的核心作用
  • 【C语言编译与链接】--翻译环境和运行环境,预处理,编译,汇编,链接
  • 怎么用外网打开内网的网址?如在异地在家连接访问公司局域网办公网站
  • DeepSeek 赋能数字人直播带货:技术革新重塑电商营销新生态
  • 处理知识库文件_编写powershell脚本文件_批量转换其他格式文件到pdf文件---人工智能工作笔记0249
  • Android 代码阅读环境搭建:VSCODE + SSH + CLANGD(详细版)
  • 生成式AI如何重塑设计思维与品牌创新?从工具到认知革命的跃迁
  • TCP通信与MQTT协议的关系
  • 使用ssh-audit扫描ssh过期加密算法配置
  • Qt实现csv文件按行读取的方式
  • ​什么是RFID电子标签​
  • 1. pytorch手写数字预测
  • 新能源集群划分+电压调节!基于分布式能源集群划分的电压调节策略!