我想为AVR制作启动加载程序代码,它可以通过无线方式更新固件。
现在我可以使用一些固定数据写入应用程序区域。我有一个要更新的新固件的hex文件。如何将该hex文件转换为原始数据,以便我可以使用该原始数据更新应用程序?
答案 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。