有谁自己写过烧写hex文件的上位机程序软件,对hex内部数据格式组成比较熟悉的?

2020-01-24 12:01发布

为什么有的编译器生成的hex文件一开始就是:020000040100F9,
(02表示数据只有2个字节,0000表示地址,04,说明该记录为扩展段地址记录,0100是数据,f9是校验码)
只有在原有的地址位(2byte)用完,即有效数据位达到64k后,才会出现020000040100F9这种类型的数据啊。
在hex文件最开始的地方是不会出现扩展段地址记录的?!
下面是一个hex文件开头的几行:
:020000040100F9
:100000007CA09FE52F0AB0E10AA6A0012AA6A001C4
:10001000FF1BBAE8FF03ABE80CF0A0E10080A0E30F
:1000200090909FE5FF00B9E8FF00A8E83F00B9E81D
:100030003F00A8E80107A0E3DFF021E300D0A0E142
:10004000010B40E2D1F021E300D0A0E1010B40E23E
:1000500052F021E300D0A0E1020A40E2D7F021E310
如有大侠曾经写过烧录软件,或者对hex文件内部格式比较熟悉,不妨赐教!
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
20条回答
dr2001
1楼-- · 2020-01-24 12:05
HEX文件格式请Google。
剩下的就没问题了。
cheungman
2楼-- · 2020-01-24 16:51
这个嘛, google找资料研究一下hex格式即可. 网上搜到的一些hex to bin软件, 很多都是只支持64K的.

当一个扩展线性地址记录被读到后,扩展线性地址记录的数据区域将被保存
并应用到后面从Intel HEX文件中读出的记录,这个扩展线性记录一直有效,
直到读到下一个扩展线性记录.

绝对内存地址 = 数据记录中的地址 + 移位后的扩展线性地址

:020000040100F9                                    //04表示线性扩展地址, 扩展线性记录起始, 地址是0x0100
:100000007CA09FE52F0AB0E10AA6A0012AA6A001C4        //此时的地址就是0x 0100 0000
:10001000FF1BBAE8FF03ABE80CF0A0E10080A0E30F        //此时的地址就是0x 0100 0010
:1000200090909FE5FF00B9E8FF00A8E83F00B9E81D        //此时的地址就是0x 0100 0020
:020000040100F9                                    //04表示线性扩展地址, 扩展线性记录结束
number007cool
3楼-- · 2020-01-24 19:09
 精彩回答 2  元偷偷看……
HadesHe
4楼-- · 2020-01-24 19:44
回复【楼主位】number007cool  
-----------------------------------------------------------------------

你想要修改它?不难的...
number007cool
5楼-- · 2020-01-24 22:36
回复【4楼】HadesHe  
-----------------------------------------------------------------------

我要提取它里面的数据,然后写入flash
cheungman
6楼-- · 2020-01-25 02:26
回复【5楼】number007cool
回复【4楼】hadeshe   
-----------------------------------------------------------------------
我要提取它里面的数据,然后写入flash
-----------------------------------------------------------------------

如此说来, 楼主是想做IAP.

一周热门 更多>