这个 Intel Hex 固件文件是否已损坏?
Is this Intel Hex firmware file corrupted?
我有一个 Intel Hex format which belongs to a P80C528EBA microcontroller 的固件文件。该微控制器是一个 8 位 mC,它基于 80C51 架构。
在下面,您可以看到文件的前 5 行:
:llaaaattddddddcc
1 :03800000028100FA
2 :028003008028D3
3 :02800B00806093
4 :0280130080608B
5 :01801B003232
你可能知道,我在上面已经添加了,Intel Hex 格式行的结构如下:
:llaaaattddddd..............cc
||||||||||| CC->Checksum
|||||||||DD->Data...
|||||||TT->Record Type
|||AAAA->Address
|LL->Record Length
:->Colon
正如您在我文件的前 5 行中看到的那样,第 2 行的 AAAA
值为 0x8003
,它等于 LL
+ AAAA
第 1 行 (0x03 + 0x8000)。但是这种模式对于接下来的 3 行是不正确的。例如,对于第 3 行,我们期望 0x8005 等于 0x8003 + 0x02(第 2 行的 AAAA
+ LL
),但令人惊讶的是我们有 0x800B。我在这个文件中有大约 10 行错误的模式(大约有 2000 行)。
问:这是否意味着文件已损坏并删除了某些行?或者在 Intel Hex 格式的行之间有一些空洞(如上)是可以的吗?
文件没有损坏,所有校验和都是正确的。
我唯一期望的是文件结束记录
:00000001FF
但是正如您所说,文件比您显示的摘录要长得多。
无论如何,Intelhex文件有空隙是完全可以的。
此外,记录不必按顺序排列。
反汇编机器码,得到
C8000: ljmp C8100
C8003: sjmp C802D
C800B: sjmp C806D
C8013: sjmp C8075
C801B: reti
您正在查看重置和中断例程开始的位置。
我有一个 Intel Hex format which belongs to a P80C528EBA microcontroller 的固件文件。该微控制器是一个 8 位 mC,它基于 80C51 架构。
在下面,您可以看到文件的前 5 行:
:llaaaattddddddcc
1 :03800000028100FA
2 :028003008028D3
3 :02800B00806093
4 :0280130080608B
5 :01801B003232
你可能知道,我在上面已经添加了,Intel Hex 格式行的结构如下:
:llaaaattddddd..............cc
||||||||||| CC->Checksum
|||||||||DD->Data...
|||||||TT->Record Type
|||AAAA->Address
|LL->Record Length
:->Colon
正如您在我文件的前 5 行中看到的那样,第 2 行的 AAAA
值为 0x8003
,它等于 LL
+ AAAA
第 1 行 (0x03 + 0x8000)。但是这种模式对于接下来的 3 行是不正确的。例如,对于第 3 行,我们期望 0x8005 等于 0x8003 + 0x02(第 2 行的 AAAA
+ LL
),但令人惊讶的是我们有 0x800B。我在这个文件中有大约 10 行错误的模式(大约有 2000 行)。
问:这是否意味着文件已损坏并删除了某些行?或者在 Intel Hex 格式的行之间有一些空洞(如上)是可以的吗?
文件没有损坏,所有校验和都是正确的。
我唯一期望的是文件结束记录
:00000001FF
但是正如您所说,文件比您显示的摘录要长得多。
无论如何,Intelhex文件有空隙是完全可以的。
此外,记录不必按顺序排列。
反汇编机器码,得到
C8000: ljmp C8100
C8003: sjmp C802D
C800B: sjmp C806D
C8013: sjmp C8075
C801B: reti
您正在查看重置和中断例程开始的位置。