打印
[PIC®/AVR®/dsPIC®产品]

【每周分享】如何阅读烧录到单片机的Hex文件

[复制链接]
463|19
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
本帖最后由 mxkw0514 于 2025-3-28 15:03 编辑

#申请原创#   @21小跑堂
曾经、现在和未来,PIC单片机在工业控制领域起着重要的作用,尤其是少数量引脚的MCU,在传感器数据的采集、系统功耗的管理、中低速通信协议的转换、稳定可靠的自动化控制应用中,充当着协处理器的角色,有的朋友或许会发现,在某些复杂工控主板上,总能找到一两颗PIC单片机......

在产品生产的过程中,可能会遇到失效的问题,这个问题可能是设计本身存在缺陷造成的,也有可能是供应商产品存在不良品,虽然PIC单片机的不良率控制在百万分之一的范围内,但是也不能完全排除没有。在检查PIC单片机本身问题的时候,有时会去排查FLASH失效的问题。
在没加密的情况下,可以使用MPLAB X IPE软件和对应的烧录工具将良品的Hex和不良品的Hex读出来,使用文件对比工具去分析,查看不良品读出Hex的异常。

IPE软件



相关的调试烧录工具

在Hex文件中,大家应该比较清楚几个重要的地址名称,分别是程序起使地址、中断入口地址、配置字起使地址,可以从数据手册相应的页面中找到。PIC单片机的Hex文件是由一行行Hex码组成,每一行Hex码的组成有着既定的规则。

Hex文件示例

每一行的Hex组成规则如下图所示,其中“:”是每行的起始字符,“11”是数据字节数,“aaaa"是数据的起始地址,”tt"是记录类型,“[dd....]"是数据字节。”tt"作为记录记录类型,又分为几种类型,其中,00是数据记录,01是文件结束记录,02是扩展段地址记录,04是扩展线性地址记录。


Hex文件组成规则

对于上述描述,举个例子,截取两行如下:
:020000040030CA
:0A000000FFFFFFFFFFFFFFFFFFFF00
第一行的记录类型是04,所以是扩展线性地址记录,那么第一行的地址30加上第二行的地址0000就是0x300000,这个是PIC单片机的配置字的起使地址,打开数据手册,可以找到如下图片:

FLASH地址段描述

但是想了解这一段Hex配置字寄存器具体配置信息,但又不想对着数据手册去查,可以将其导入到IPE软件中,查看相关的信息,如下图所示。配置字展示了设置的时钟、中断、看门狗、烧录模式等信息。如果要要查看和分析其它部分Hex,方法是类似的。

示例配置字部分信息

由于本人水平有限,分享内容中难免存在不足,还请麻烦批评指正。





使用特权

评论回复
沙发
jiekou001| | 2025-3-27 12:40 | 只看该作者
这工具还支持提取单片机内的固件吗

使用特权

评论回复
板凳
mxkw0514|  楼主 | 2025-3-27 13:09 | 只看该作者
jiekou001 发表于 2025-3-27 12:40
这工具还支持提取单片机内的固件吗

没加密就可以

使用特权

评论回复
评论
xionghaoyun 2025-3-28 08:42 回复TA
+1 加密不能导出 
地板
wahahaheihei| | 2025-3-27 14:07 | 只看该作者
用这个工具可以批量烧录吗

使用特权

评论回复
评论
gaoyang9992006 2025-3-28 20:18 回复TA
@xionghaoyun :感谢,我去查查 
mxkw0514 2025-3-28 09:24 回复TA
@xionghaoyun :想请教一下,这个按键精灵是什么呀? 
xionghaoyun 2025-3-28 08:42 回复TA
最简单自己弄个按键精灵就可以了 
5
mxkw0514|  楼主 | 2025-3-27 14:51 | 只看该作者
wahahaheihei 发表于 2025-3-27 14:07
用这个工具可以批量烧录吗

批量烧录估计要借助官方烧录器+外部的自动化控制设备

使用特权

评论回复
6
cooldog123pp| | 2025-3-28 13:58 | 只看该作者
批量烧录估计要借助官方烧录器+外部的自动化控制设备?你这是直接调用被人的软件拿来用还是咋地?

使用特权

评论回复
7
mxkw0514|  楼主 | 2025-3-28 14:29 | 只看该作者
cooldog123pp 发表于 2025-3-28 13:58
批量烧录估计要借助官方烧录器+外部的自动化控制设备?你这是直接调用被人的软件拿来用还是咋地? ...

这个要根据烧录器型号而定,如果是PM3可以批量烧录,如果是ICD3,可能需要将烧录状态指示引脚引出给外部设备进行判断,来帮助批量烧录。

使用特权

评论回复
8
灵犀幻影| | 2025-3-28 21:05 | 只看该作者
这个方法听起来很实用啊,那如果遇到加密的Hex文件怎么办

使用特权

评论回复
9
autopccopy| | 2025-3-29 08:45 | 只看该作者
正式产品没加密是不存在的。

使用特权

评论回复
10
我是一颗胖蘑菇| | 2025-3-29 13:04 | 只看该作者
对于不同的单片机型号,Hex文件的组成规则会不会有所不同呢?需要分别学习吗

使用特权

评论回复
11
蚊子的噩梦| | 2025-3-29 13:24 | 只看该作者
文中提到的扩展线性地址记录的作用是什么?

使用特权

评论回复
12
mxkw0514|  楼主 | 2025-3-29 17:36 | 只看该作者
我是一颗胖蘑菇 发表于 2025-3-29 13:04
对于不同的单片机型号,Hex文件的组成规则会不会有所不同呢?需要分别学习吗 ...

具体单片机可能略有不同

使用特权

评论回复
13
mxkw0514|  楼主 | 2025-3-29 17:36 | 只看该作者
蚊子的噩梦 发表于 2025-3-29 13:24
文中提到的扩展线性地址记录的作用是什么?

应该就是一种数据规定

使用特权

评论回复
14
mxkw0514|  楼主 | 2025-3-29 17:40 | 只看该作者
autopccopy 发表于 2025-3-29 08:45
正式产品没加密是不存在的。

是的,大部分产品都会开启写保护,主要是方便客户分析Hex

使用特权

评论回复
15
穷得响叮当侠| | 2025-3-29 20:11 | 只看该作者
使用MPLAB X IPE软件读取Hex文件的时候,有没有什么常见的错误或者需要注意的地方呢

使用特权

评论回复
16
作业天敌在此| | 2025-3-29 22:45 | 只看该作者
文中提到的配置字寄存器具体配置信息很重要,那这些配置信息对单片机的运行有哪些具体影响呢

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

665

帖子

5

粉丝