如何计算 Hex 文件的校验和?
How is the Checksum from Hex file calculated?
正如标题所说,我很想知道校验和值是如何计算的,从我读到的内容来看,它是使用 2s 补码计算的。下面是加载到我的微控制器上的 hex 文件中的 2 行,我添加了空格以使其更易于阅读,S315 出现在每一行上,第 1 行的地址是 080C0000,后跟代表字节的 16 个十六进制值,第 1 行的值 AA 和第 2 行的 AB 是我假设的校验和值。
对于第 1 行,我尝试添加以下 15+08+0C+00+00+4D+53+53+70+6F+74+31+00+66+10+AE+19+7E+63+1F+78
,这使我得到 555
十六进制或 010101010101
二进制。我已经将二进制值输入在线 2s 补码计算器,但它总是显示 "invalid binary"??
S3 15 080C0000 4D 53 53 70 6F 74 31 00 66 10 AE 19 7E 63 1F 78 AA
S3 15 080C0010 00 00 00 00 45 85 63 EB FF FF FF 04 00 03 00 AB
您添加字节值,就像您所做的那样。从那个总和中你只需要最低有效字节。
然后是摩托罗拉 HEX (SREC):
然后你通过反转它的位来取那个字节的补码(即 1s 变成 0s,反之亦然)。
然后对于 Intel HEX:
然后你通过反转它的位来取那个字节的二进制补码(即 1s 变成 0s,反之亦然)然后你加 1.
按照您的示例,总和为 0x555。然后取最低有效字节,也就是0x55.
对于 Motorola HEX (SREC):计算其补码。您得到 0xAA 作为校验和。
对于 Intel HEX:计算它的二进制补码。您得到 0xAB 作为校验和。
正如标题所说,我很想知道校验和值是如何计算的,从我读到的内容来看,它是使用 2s 补码计算的。下面是加载到我的微控制器上的 hex 文件中的 2 行,我添加了空格以使其更易于阅读,S315 出现在每一行上,第 1 行的地址是 080C0000,后跟代表字节的 16 个十六进制值,第 1 行的值 AA 和第 2 行的 AB 是我假设的校验和值。
对于第 1 行,我尝试添加以下 15+08+0C+00+00+4D+53+53+70+6F+74+31+00+66+10+AE+19+7E+63+1F+78
,这使我得到 555
十六进制或 010101010101
二进制。我已经将二进制值输入在线 2s 补码计算器,但它总是显示 "invalid binary"??
S3 15 080C0000 4D 53 53 70 6F 74 31 00 66 10 AE 19 7E 63 1F 78 AA
S3 15 080C0010 00 00 00 00 45 85 63 EB FF FF FF 04 00 03 00 AB
您添加字节值,就像您所做的那样。从那个总和中你只需要最低有效字节。
然后是摩托罗拉 HEX (SREC): 然后你通过反转它的位来取那个字节的补码(即 1s 变成 0s,反之亦然)。
然后对于 Intel HEX: 然后你通过反转它的位来取那个字节的二进制补码(即 1s 变成 0s,反之亦然)然后你加 1.
按照您的示例,总和为 0x555。然后取最低有效字节,也就是0x55.
对于 Motorola HEX (SREC):计算其补码。您得到 0xAA 作为校验和。
对于 Intel HEX:计算它的二进制补码。您得到 0xAB 作为校验和。