python自制小工具

python自动生成hex(intel格式)--Apple的学习

2021-12-18  本文已影响0人  applecai

一,前言

有人说我很无聊,没事就在折腾小项目小工具,其实除了我感兴趣外,主要是这体现了创造发明。有人说喜欢用工具,其实就是喜欢偷懒,我理解也是这样,能用机器人做的事情,干嘛要让人来做,这不就是苦力活吗?所以任何我认为的重复劳动苦力活,我就会想办法用工具来实现。

二,需求

工作中需要修改整车uds的eeprom默认值,简单来说就是要改eeprom.hex的值。手工是可以修改,但是做成工具不是更加省力,所以我简单设计了技术落地实现的步骤

  1. 框架搭建。
  2. excel读取。
  3. 数据处理提取后放入dict。
  4. hex读取base后修改dict值。
  5. 文件夹位置锁定。
  6. 添加配置文件。

三,实现

需要用到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的值已经被修改为我期望要修改的值了。


image.png

五,小结

哈哈~之后我会把此工具用到项目中,且推广给其它小伙伴使用。

上一篇下一篇

猜你喜欢

热点阅读