提高bin_to_hex的速度
This commit is contained in:
@@ -50,6 +50,8 @@ _DevType={
|
|||||||
_PKT_HEADER_MAGIC_NO = 0x00005566
|
_PKT_HEADER_MAGIC_NO = 0x00005566
|
||||||
_IMG_HEADER_MAGIC_NO = 0xa4e49a17
|
_IMG_HEADER_MAGIC_NO = 0xa4e49a17
|
||||||
|
|
||||||
|
|
||||||
|
# 从info文件读取flash信息
|
||||||
def load_flash_info(file_name:str):
|
def load_flash_info(file_name:str):
|
||||||
flash_info_list:list[dict]=[]
|
flash_info_list:list[dict]=[]
|
||||||
with open(file_name,mode='r',encoding='utf-8') as f:
|
with open(file_name,mode='r',encoding='utf-8') as f:
|
||||||
@@ -193,30 +195,8 @@ def img_header_check(data:bytearray):
|
|||||||
return ""
|
return ""
|
||||||
|
|
||||||
|
|
||||||
def bin_to_hex(bin:bytearray,flash_info:list[dict]=[]):
|
# 转化为hex文本
|
||||||
all_size=len(bin)
|
def bin_to_hex(bin:bytearray,f):
|
||||||
pack_size=32
|
|
||||||
turned=0
|
|
||||||
turned_old=0
|
|
||||||
out_text=''
|
|
||||||
index=0
|
|
||||||
while turned < all_size:
|
|
||||||
if(turned+pack_size<=all_size):
|
|
||||||
data=bin[turned:turned+pack_size]
|
|
||||||
turned_old=turned
|
|
||||||
turned+=pack_size
|
|
||||||
else:
|
|
||||||
data=bin[turned:]
|
|
||||||
turned=all_size
|
|
||||||
if(index<len(flash_info)):
|
|
||||||
if(turned_old==(flash_info[index])["Offset"]):
|
|
||||||
out_text+=f"{(flash_info[index])['ImgType']}----------------------\n"
|
|
||||||
index+=1
|
|
||||||
out_text+=f"[{hex(turned_old)}] {data.hex(' ')}\n"
|
|
||||||
return out_text
|
|
||||||
|
|
||||||
# 这个是从固件里直接读出数据头
|
|
||||||
def bin_to_hex2(bin:bytearray):
|
|
||||||
all_size=len(bin)
|
all_size=len(bin)
|
||||||
pack_size=32
|
pack_size=32
|
||||||
turned=0
|
turned=0
|
||||||
@@ -238,25 +218,21 @@ def bin_to_hex2(bin:bytearray):
|
|||||||
hdr_data=bytearray()
|
hdr_data=bytearray()
|
||||||
hdr_v=img_header_check(hdr_data)
|
hdr_v=img_header_check(hdr_data)
|
||||||
if(hdr_v=='V0'):
|
if(hdr_v=='V0'):
|
||||||
out_text+=tran_img_headerv0(hdr_data)+'\n'
|
out_text=tran_img_headerv0(hdr_data)+'\n'
|
||||||
|
f.write(out_text)
|
||||||
elif(hdr_v=='V1'):
|
elif(hdr_v=='V1'):
|
||||||
out_text+=tran_img_headerv1(hdr_data)+'\n'
|
out_text=tran_img_headerv1(hdr_data)+'\n'
|
||||||
out_text+=f"[{hex(turned_old)}] {data.hex(' ')}\n"
|
f.write(out_text)
|
||||||
return out_text
|
out_text=f"[{hex(turned_old)}] {data.hex(' ')}\n"
|
||||||
|
f.write(out_text)
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
def bin_to_hex_file(bin_file_name:str,hex_file_name:str,info_file_name:str=None):
|
def bin_to_hex_file(bin_file_name:str,hex_file_name:str):
|
||||||
with open(bin_file_name,mode='rb') as f:
|
with open(bin_file_name,mode='rb') as f:
|
||||||
bin=f.read()
|
bin=f.read()
|
||||||
if info_file_name is None:
|
|
||||||
info=[]
|
|
||||||
else:
|
|
||||||
info=load_flash_info(info_file_name)
|
|
||||||
text=bin_to_hex2(bin)
|
|
||||||
print(f"write to file {hex_file_name}")
|
|
||||||
with open(hex_file_name,mode='w+',encoding="utf-8") as f:
|
with open(hex_file_name,mode='w+',encoding="utf-8") as f:
|
||||||
f.write(text)
|
bin_to_hex(bin,f)
|
||||||
|
|
||||||
# bin_to_hex.py input_file output_file
|
# bin_to_hex.py input_file output_file
|
||||||
if __name__ == "__main__":
|
if __name__ == "__main__":
|
||||||
|
11
kunlun.py
11
kunlun.py
@@ -143,15 +143,6 @@ def putc(data, timeout=1):
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
'''
|
|
||||||
IMG_TYPE 0xfc00 sp.bin
|
|
||||||
IMG_TYPE 0xfc01 sbl.bin
|
|
||||||
IMG_TYPE 0xfc05 oem.bin
|
|
||||||
IMG_TYPE 0xfc03 pib.bin
|
|
||||||
IMG_TYPE 0xfc08 ht.bin
|
|
||||||
|
|
||||||
'''
|
|
||||||
|
|
||||||
|
|
||||||
_work_dir='work'
|
_work_dir='work'
|
||||||
if not os.path.exists(_work_dir):
|
if not os.path.exists(_work_dir):
|
||||||
@@ -201,7 +192,7 @@ def upload_fun():
|
|||||||
|
|
||||||
myprint ("Total transmission time: %s s" % str(trans_time_0+trans_time_1))
|
myprint ("Total transmission time: %s s" % str(trans_time_0+trans_time_1))
|
||||||
myprint("Start transform bin to hex.")
|
myprint("Start transform bin to hex.")
|
||||||
bin_to_hex_file(calc_upload_name(), calc_hex_name(),calc_flash_info_name())
|
bin_to_hex_file(calc_upload_name(), calc_hex_name())
|
||||||
myprint("Transform to hex end.")
|
myprint("Transform to hex end.")
|
||||||
|
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user