python自动生成hex(intel格式)--Apple的学习
2021-12-18 本文已影响0人
applecai
一,前言
有人说我很无聊,没事就在折腾小项目小工具,其实除了我感兴趣外,主要是这体现了创造发明。有人说喜欢用工具,其实就是喜欢偷懒,我理解也是这样,能用机器人做的事情,干嘛要让人来做,这不就是苦力活吗?所以任何我认为的重复劳动苦力活,我就会想办法用工具来实现。
二,需求
工作中需要修改整车uds的eeprom默认值,简单来说就是要改eeprom.hex的值。手工是可以修改,但是做成工具不是更加省力,所以我简单设计了技术落地实现的步骤
- 框架搭建。
- excel读取。
- 数据处理提取后放入dict。
- hex读取base后修改dict值。
- 文件夹位置锁定。
- 添加配置文件。
三,实现
需要用到intelhex库,excel读取的库xlrd,ini读取的库。其它的基本就是字符串处理了。其实还蛮简单的,就完成了。
intelhex库是第一次使用,官网api看了,用起来还比较简单的。
from intelhex import IntelHex
def GenHex_WriteHex(dictData,ecuName):
#print(os.path.abspath(os.path.dirname(os.getcwd())))
# 先按ECU名删除已有文件夹
delete_folder(outputHexPath+ecuName)
# 再按ECU名添加新文件夹
create_folder(outputHexPath+ecuName)
# 读取2K全0xff且修改值
ih = IntelHex() # create empty object
ih.fromfile(baseHexPath+'base2k.hex', format='hex') # also load from hex
hexdictData={}
hexdictData = ih.todict()
for key,value in dictData.items():
hexdictData[key] = int(str(value),16)
# 按新的dict值创建新的hex
newIH = IntelHex(hexdictData)
newIH.start_addr = 0
filename = ecuName+"\\"+ecuName+'_EEPROM.hex'
with open(outputHexPath+filename, 'w') as fileout:
newIH.write_hex_file(fileout, write_start_addr=True)
四,效果如下
在excel中给出对象的值和地址,然后通过python读取且进行数据处理后,生成了新的hex。全部0xff的值已经被修改为我期望要修改的值了。
![](https://img.haomeiwen.com/i12010880/cc015109fe18ad08.png)
五,小结
哈哈~之后我会把此工具用到项目中,且推广给其它小伙伴使用。