案例背景(共6页精讲):
有如下一段Intel Hex文件,为其创建Checksum校验和:CRC16,CRC32(CVN),SHA-256 Hash算法…, 将Checksum Value填充到指定地址。
:2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F
:2091200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973F
:2091400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71F
:20916000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FF
:20918000D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DF
:2091A000F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BF
:2091C00018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379F
:0891E00038393A3B3C3D3E3FAB
:00000001FF
目录
1 使用Vector HexView工具实现:Intel Hex文件计算Checksum校验和
1.1 “自动”计算Checksum校验和
1.2 “手动”计算Checksum校验和
1.3 Command line命令行说明
结尾
优质博文推荐阅读(单击下方链接,即可跳转):
点击返回「《Autosar从入门到精通-实战篇》总目录」
点击返回「《Autosar_BSW高阶配置》总目录」
点击返回《嵌入式硬件/软件开发刷写/烧录文件》专栏
1 使用Vector HexView工具实现:Intel Hex文件计算Checksum校验和
1.1 “自动”计算Checksum校验和
基于批处理Bat(如下图中的Hex_To_Checksum.bat)调用HexView工具提供的Command line,通过该脚本来实现Intel Hex文件(Application. Hex)的Checksum校验和的计算。将该脚本集成开发环境IDE(CodeWarrior,S32K DS,Davinci,EB Tresos,ETAS…)中,即可自动实现。见图1-1。
图1-1
Application.Hex摘录:
:2091000058595A5B5C5D5E5F606162636465666768696A6B6C6D6E6F70717273747576775F
:2091200078797A7B7C7D7E7F808182838485868788898A8B8C8D8E8F90919293949596973F
:2091400098999A9B9C9D9E9FA0A1A2A3A4A5A6A7A8A9AAABACADAEAFB0B1B2B3B4B5B6B71F
:20916000B8B9BABBBCBDBEBFC0C1C2C3C4C5C6C7C8C9CACBCCCDCECFD0D1D2D3D4D5D6D7FF
:20918000D8D9DADBDCDDDEDFE0E1E2E3E4E5E6E7E8E9EAEBECEDEEEFF0F1F2F3F4F5F6F7DF
:2091A000F8F9FAFBFCFDFEFF000102030405060708090A0B0C0D0E0F1011121314151617BF
:2091C00018191A1B1C1D1E1F202122232425262728292A2B2C2D2E2F30313233343536379F
:0891E00038393A3B3C3D3E3FAB
:00000001FF
Hex_To_Checksum.bat摘录:
@echo offRem Path to the executable exe of the Vector HexView tool on your PC
set "HexViewPath=D:\Hex_To_Checksum\HexView\hexview.exe"Rem The input file Input_Hex_File
set "Input_Hex_File=D:\Hex_To_Checksum\Application.hex"Rem The output file Output_Hex_File
set "Output_Hex_File=D:\Hex_To_Checksum\Application_Checksum.hex"Rem Call the command line provided by the HexView tool to convert the Hex file to a Hex file
%HexViewPath% /S %Input_Hex_File% /CS9:@0x91E8;[0x9100-0x91E7] /XI:32:0 -o %Output_Hex_File%
运行该批处理Hex_To_Checksum.bat,即可得到带CRC32(“大端Big-Endian”格式)的Hex文件。
如果希望将CRC32校验结果,将以“小端little-Endian”格式填充到指定地址,使用命令行CSR。
%HexViewPath% /S %Input_Hex_File% /CSR9:@0x91E8;[0x9100-0x91E7] /XI:32:0 -o %Output_Hex_File%
1.2 “手动”计算Checksum校验和
使用Vector Hexview工具打开Hex文件,接着在菜单栏中依次选择Edit -- > Create Checksum;
在弹出的Create a checksum value对话框,进行如下设置:
- Checksum range:可以限制checksum计算操作的数据字段;
- Checksum type:使用的Checksum算法:CRC16,CRC32(CVN),SHA-256 Hash…;
- 按钮[Calculate]将运行计算,并在字段checksum value中显示结果;
- 如果选择[Insert],checksum value将被添加到给定地址(Checksum address)的内部数据字段中。
地址段0x9100-0x91e7的CRC32校验结果,将以“大端Big-Endian”格式填充到指定地址。
如果希望将CRC32校验结果,将以“小端little-Endian”格式填充到指定地址,勾选Reverse results即可。
1.3 Command line命令行说明
/CS[R]xx:target[;!forced range[#Fill-pattern]]
[;limited_range]
[/exclude_range1]
[/exclude_range2]
[:target[;limited_range]
[/exclude_range1]
[/exclude_range2]]…
这个选项指定了Checksum calculation校验和计算方法。如果添加了可选的location参数,checksum value就会被写入这个文件中。该结果也可以使用@操作符放到加载的应用程序数据中。注意:在大多数情况下,"location "是一个前置条件。
如果使用/CSR而不是/CS,生成的Checksum将被倒置(低字节在先)。
Filename (e.g. csum.txt) | 将结果写进一个文件。该值以十六进制的形式从高字节到低字节写入。每个字节用逗号隔开。 |
@append | checksum的结果将被加在文件的最末尾。 |
@begin | 将内容写在文件的开头。 重要提示:它将覆盖你数据的第一个字节。将被覆盖的字节数取决于校验方法。 |
@upfront | 将校验结果写在第一个块的开头之前。没有数据会被覆盖。 |
@end | 将校验和放在文件最后一节的最后一个字节上。地址是自动计算的。 重要提示:它将覆盖你的数据的最后一个字节。将被覆盖的字节数取决于校验方法。 |
@0x1234 | 将校验结果写入@运算符后给出的地址位置。 |
结尾
获取更多“汽车电子资讯”和“工具链使用”,
请关注CSDN博客“汽车电子助手”,做您的好助手。