python向bin文件添加CRC32校验码
python向bin文件添加CRC32校验码; 1、keil添加配置,编译后调用脚本生成bin文件 D:\Keil_v5\ARM\ARMCC\bin\fromelf.exe --bin -o fromelf --bin -o "$L@L.bin" "#L" 2、keil添加配置,调用python脚本,向bin文件中插入crc32校验码 python ./crc32_bin.py python脚本如下: # -*- coding:utf-8 -*- import binascii import os import sys def crc2hex(crc): res='' for i in range(4): t=crc & 0xFF crc >>= 8 res='%02X%s' % (t, res) return res inputfile = "E:\IAP\APP\Project\OBJ\STM32F407.bin"#实际存放的bin文件路径 isfile = os.path.isfile(inputfile); print(inputfile); fp = open(inputfile, "r+b") #直接打开一个文件,如果文件不存在则创建文件 filesize = os.path.getsize(inputfile) print("ZI app firmware size:", filesize, "bytes.") #计算bin文件的CRC,首先清空CRC32区域的4个byte fp.seek(0x1c, 0)#从bin文件开始,偏移地址为0x1c的地方存放bin的CRC32 clear4bytes = '00000000' c4 =binascii.unhexlify(clear4bytes) fp.write(c4) #将CRC32存放的区域4bytes清零 fp.seek(0, 0)#从0开始读取整个bin file_content = fp.read()#读整个文件内容到 file_content crc = binascii.crc32(file_content) print('CRC32:', hex(crc)) fp.seek(0x1c, 0)#从bin文件开始,偏移地址为0x1c的地方存放bin的CRC32 #存放计算CRC32四个字节 crcstr_2 = crc2hex(crc) r=binascii.unhexlify(crcstr_2) fp.write(r) fp.close() sys.exit(0)##正常退出 这个脚本我是用在stm32 Bootloader中的,因为经串口或其他方式接收到的程序未必是正确的,而且有时候会加入版本信息什么的,所以加入CRC校验可以方便的检验文件完整性。 ...