C 你如何理解十六进制文件?(扩展地址记录)
我正在尝试为PIC18制作一个引导加载程序,因此我需要了解如何正确处理十六进制文件。例如,我了解如何使用下面的十六进制线C 你如何理解十六进制文件?(扩展地址记录),c,embedded,microcontroller,pic,bootloader,C,Embedded,Microcontroller,Pic,Bootloader,我正在尝试为PIC18制作一个引导加载程序,因此我需要了解如何正确处理十六进制文件。例如,我了解如何使用下面的十六进制线 :040C0000E2EFFFF030 04:字节数 0C00:十六进制数字的地址 00:数据记录 e2efff0:数据序列 30:校验和 所以我知道如何处理上面的线,但是下面的十六进制线呢 :020000040001F9 02:#字节 0000:地址 04:扩展线性地址记录 0001:数据 F9:校验和 但我到底该怎么处理它呢?我是在把这些数据写到那个地址吗?你能把它翻
:040C0000E2EFFFF030
04
:字节数
0C00
:十六进制数字的地址
00
:数据记录
e2efff0
:数据序列
30
:校验和
所以我知道如何处理上面的线,但是下面的十六进制线呢
:020000040001F9
02
:#字节
0000
:地址
04
:扩展线性地址记录
0001
:数据
F9
:校验和
但我到底该怎么处理它呢?我是在把这些数据写到那个地址吗?你能把它翻译成机器语言吗
顺便说一下,我的应用程序从地址0c00
开始,引导加载程序从地址0020
开始,在地址之上是中断向量。谢谢
更新
如果十六进制文件的第三行如下所示,地址FFC0
会改变吗
:10FFC000FF00FF00FF00FF00FF00FF000001E9EF5E
我想既然十六进制文件的第二行有04
(扩展的线性地址记录),那么我应该在第三行FFC0
的地址中添加0001
,所以新地址应该是这样的
$0001+$FFC0
将等于1FFC0
,因此第3行的下一组数据字节应写入此地址1FFC0
,是否正确?来自维基百科(此类信息的明显来源)
04,扩展线性地址记录,允许完全32位
寻址(高达4GiB)。地址字段为0000,字节计数为
2两个数据字节(两个以大端顺序排列的十六进制数字对)表示所有后续数据的32位地址的上16位
00类型记录,直到下一个04类型记录出现。如果没有
04类型记录,高16位默认为0000。得到绝对值
后续00类型记录的地址,由
最新04记录的数据字段添加到00记录中
地址
所以公式是
(linAddr现在,这是某人的六性幻想。这只是一个六性幻想,因为它是一张照片18。结婚后,这是一个校验和。请用我的新假设检查新的更新,谢谢!是的。这是正确的。在看到另一行04之前,在每个地址前加上$0001。