这里通过批处理文件,将hex文件转为bin文件
1.Hex2bin简介
hex2bin.exe该工具用于将十六进制文件(摩托罗拉或英特尔格式)转换为二进制文件。它是一个具有基本功能的命令行工具
下载地址:https://sourceforge.net/projects/hex2bin/
下载压缩包后打开文件夹:
hex2bin.exe 在bin文件夹中,分别有Debug和Release两种,这里我使用的是Release文件夹中的hex2bin.exe进行测试
2.Hex2bin的使用说明
使用说明:https://hex2bin.sourceforge.net/
这里使用了谷歌翻译大概修正了下,最好还是看原文方便点
2.1 用法
选项区分大小写,带参数的选项在选项和参数之间需要有空格。即 -s 0000 而不是 -s0000。
执行成功则退出,错误代码 = 0,如果发生任何错误,程序立即退出,错误代码 = 1。
所有值均为十六进制,不需要 0x:例如。不是 0x0100 而是 0100。
2.2 批处理 / 脚本模式
通常,如果指定的十六进制文件不存在,hex2bin/mot2bin 会反复询问有效的文件名。提供了批处理 / 脚本模式选项,用于错误退出而不是请求文件。
hex2bin -b xxxx.hex
如果文件 xxxx.hex 不存在,程序立即退出,错误代码 = 1。
2.3 源文件的校验和
默认情况下,它忽略校验和错误,以便有人可以手动更改一些字节,从而允许快速和脏的更改。
如果您想要报告校验和错误,请指定选项 -c。
hex2bin -c example.hex
如果某处存在校验和错误,程序无论如何都会继续转换。为了方便,
hex2bin/mot2bin 显示每个错误记录的预期校验和。
2.4 输出文件的扩展名
默认情况下,扩展名为.bin. 可以指定另一个值。
hex2bin -e com example.hex
example.com将生成一个文件。
2.5 填充字节
默认情况下,未使用的位置将用 FF 填充。可以指定另一个值。
hex2bin -p AA example.hex
2.6 起始地址和长度
如果最低地址不是 0000,例如:0100:(第一条记录以 :nn010000xxx 开头)使用二进制文件对 EPROM 进行编程时会出现问题,因为本应位于 0100 的第一个字节存储在二进制文件中在 0000。
您可以在命令行上指定二进制文件的起始地址:
hex2bin -s 0000 start_at_0100.hex
这些字节将存储在二进制文件中,并填充从 0000 到最低地址减 1(本例中为 00FF)。
同样,二进制文件可以用 FF 或另一个字节填充到长度 -1。
这里,最后一个字节和 07FF 之间的空间将用 FF 填充。
hex2bin -l 0800 ends_before_07FF.hex
EPROM、EEPROM 和闪存在擦除时包含所有 FF。
当源文件名为for-example.test.hex 时,创建的二进制文件的名称将为for-example.bin
“.test” 部分将被删除。
Hex2bin/mot2bin 假设源文件不包含重叠记录,如果是,则会报告重叠。
2.7 最小块大小
输出文件大小将是最小块大小的倍数。它将用 FF 或指定的模式填充。
长度必须是 2 的十六进制幂 [请参阅 -l 选项]。
注意此选项比最大长度更强。
hex2bin -m [size] example.hex
校验和或 CRC 插入二进制文件内
可以将校验和值插入到生成的二进制文件中。
hex2bin -k [0-5] -E [0|1] -r [start] [end] -f [address] [value]
-k 选择校验和类型:
0 = 8 位校验和
1 = 16 位校验和(将 16 位字添加到 16 位和、数据和结果 BE 或 LE)
2 = 8 位 CRC
3 = 16 位 CRC
4 = 32 位 CRC
5 = 16 位校验和(将字节添加到 16 位和中,结果为 BE 或 LE)
-E 要存储的结果的字节顺序
0 = 小尾数
1 = 大端
-r 计算校验和或 CRC 的范围(默认为最小和最大地址)
-f 要写入的校验和或 CRC 的地址
hex2bin-d
-d 显示校验和类型列表并退出
2.8 直接插入二进制文件中的值
可以将值直接(强制)插入到生成的二进制文件中。
hex2bin -k [0|1|2] -E [0|1] -F [address] [value]
-k 选择值长度类型:
0 = 8 位值
1 = 16 位值
2 = 32 位值
-E 字节顺序
0 = 小尾数
1 = 大端
-F 要写入的地址和值校验和
2.9 支持字节交换的十六进制 / S19 文件
一些编译器(例如 Microchip 的 MPLAB IDE)可以生成字节交换的十六进制文件。
hex2bin -w test-byte-swap.hex
-w 按字交换:对于每对字节,交换低位和高位部分。
2.10 支持字大小的十六进制文件(仅限 hex2bin)
记录类型的十六进制,其中数据以字(2 个字节)表示
例如德州仪器:TMS320F2835、TMS320F28065。
hex2bin -a example-ti.hex
- 地址对齐字。
2.11 过滤范围内的记录
超出该范围的记录将被丢弃
Hex2bin -t 0110 -T 0256 example.hex
-t 起始地址
-T 结束地址
2.12 地位
Hex2bin 和 mot2bin 处于生产状态。它对于许多小型应用程序运行良好。
虽然我现在正在处理其他项目,但 hex2bin 和 mot2bin 仍然对补丁、功能请求等开放。请在此处提交。
2.13 类似工具
SRecord具有更多功能并支持许多其他格式。
这个看起来挺好的,下篇文章试试
另请参阅Intel Hex2bin和Motorola Hex2bin
3.简单使用测试
这里随便找了个MCU的hex文件,将hex2bin.exe放在同一目录方便使用,顺便新建个test-hex2bin.bat批处理文件用来测试
当然也可以在IDE编译代码后,调用执行批处理文件来自己转换bin文件
参见这里:MounRiver Studio 在编译后执行 bat 批处理文件