【发布时间】:2016-01-03 23:36:32
【问题描述】:
正如标题所说,我很想知道校验和值是如何计算的,从我读过的内容来看,它是使用 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 Hex 或 010101010101 二进制。我已将二进制值输入在线 2s 补码计算器,但它总是显示“无效二进制”??
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 FF 04 00 03 00 AB
【问题讨论】:
-
什么样的文件?从你在哪里读到的?校验和还是 CRC?注意这个词是双complement,而不是'compliment'。
-
注 0x55 + 0xaa 加起来等于 0xff。只是说...
-
@EJP - 这是一个 .hex 文件
-
什么是 .hex 文件?它在哪里指定?
-
它并不特定于单个微控制器。他说的是英特尔 HEX 格式,这是许多供应商多年来(可能是几十年)使用的标准。