Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 你如何理解十六进制文件?(扩展地址记录)_C_Embedded_Microcontroller_Pic_Bootloader - Fatal编程技术网

C 你如何理解十六进制文件?(扩展地址记录)

C 你如何理解十六进制文件?(扩展地址记录),c,embedded,microcontroller,pic,bootloader,C,Embedded,Microcontroller,Pic,Bootloader,我正在尝试为PIC18制作一个引导加载程序,因此我需要了解如何正确处理十六进制文件。例如,我了解如何使用下面的十六进制线 :040C0000E2EFFFF030 04:字节数 0C00:十六进制数字的地址 00:数据记录 e2efff0:数据序列 30:校验和 所以我知道如何处理上面的线,但是下面的十六进制线呢 :020000040001F9 02:#字节 0000:地址 04:扩展线性地址记录 0001:数据 F9:校验和 但我到底该怎么处理它呢?我是在把这些数据写到那个地址吗?你能把它翻

我正在尝试为PIC18制作一个引导加载程序,因此我需要了解如何正确处理十六进制文件。例如,我了解如何使用下面的十六进制线

: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。