如何将Intel HEX文件转换为内存数据等原始数据?

时间:2014-02-12 11:14:03

标签: avr bootloader hex-file

我想为AVR制作启动加载程序代码,它可以通过无线方式更新固件。

现在我可以使用一些固定数据写入应用程序区域。我有一个要更新的新固件的hex文件。如何将该hex文件转换为原始数据,以便我可以使用该原始数据更新应用程序?

3 个答案:

答案 0 :(得分:10)

如果您使用WinAVR进行编译,可以使用附带的avr-objcopy执行此操作:

C:\WinAVR-20100110\bin> avr-objcopy.exe -I ihex -O binary input_file.hex output.bin

如果您正在Linux上进行开发,那么有一个程序包avr-binutils和avr-objcopy程序。

答案 1 :(得分:3)

正如您所指出的,hex文件以Intel Hex格式编码。您必须从数据记录中提取闪存数据。每条记录(行)最多可容纳16个字节(通用但可能不同)的数据。 请注意,存在不同的记录类型,有些可能会引入地址偏移,具体取决于闪存数据的分布方式。 Wiki描述应该足以获得概念。

答案 2 :(得分:3)

您可以使用某些工具(http://hex2bin.sourceforge.net/或其他hex2bin转换器)或编写您自己的十六进制解析器,在访问文件时可能会有一些注意事项> 64 KB。