具体地,CRC码的计算可以采用以下步骤:
将需要计算CRC码的数据转化为二进制串,并在其末尾添加一定位数的0,以使其能够被多项式整除。
用多项式除以上一步得到的二进制串,得到一个商和一个余数。
将余数作为新的二进制串,并将其前导的0去除。
如果新的二进制串的位数不足多项式的位数,那么在其前面添加0,使其位数等于多项式的位数。
重复2-4步骤,直到最终余数的位数不足多项式的位数为止,此时得到的余数即为CRC码。
在内置于HEX文件中的CRC码的计算中,HEX文件中的每一行都有一个校验和字段,它就是该行数据的CRC码。通常,该CRC码的计算是通过将该行数据中的每个字节与校验和字段之前的字节的异或结果依次计算CRC码得到的。也就是说,该行数据中的每个字节都会对CRC码的计算产生影响,最终得到的CRC码会反映出该行数据是否正确传输的情况。
将这两个文件添加到任意一个IAR工程中,先进行第一遍编译。注意,如果Flash的指定地址被其他功能占用,那么只需换个地址即可。得到hex文件后,用校验码软件算出CRC,用这个CRC的值替换掉self_crc的宏定义,然后进行第二遍编译。这样,新产生的hex文件就是内置了CRC的程序。hex文件格式是可以烧写到单片机中,被单片机执行的一种文件格式。
生成Hex文件的方式有很多种,可以通过不同的编译器将C程序或者汇编程序编译生成hex。Hex文件如果用特殊的程序来查看(一般记事本就可以实现)。打开后可发现,整个文件以行为单位,每行以冒号开头,内容全部为16进制码(以ASCII码形式显示)。
Intel HEX文件由一行行符合Intel HEX文件格式的文本所构成的ASCII文本文件。在Intel HEX文件中,每一行包含一个HEX记录。这些记录由对应机器语言码和常量数据的十六进制编码数字组成。
扩展资料:
一个Intel HEX文件必须有一个文件结束记录,这个记录的类型域必须是01,Intel hex 文件常用来保存单片机或其他处理器的目标程序代码。它保存物理程序存储区中的目标代码映象。一般的编程器都支持这种格式。
Intel hex 文件记录中的数字都是16进制格式,两个16进制数字代表一个字节。CC域是数据域中的实际字节数,地址、记录类型和校验和域没有计算在内。校验和是取记录中从数据字节计数域CC到数据域最后一个字节的所有字节总和的 2 的补码。
参考资料来源:百度百科——hex文件格式
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)