53 lines
1.1 KiB
Python
53 lines
1.1 KiB
Python
![]() |
import shutil
|
||
|
import sys
|
||
|
import os
|
||
|
import json
|
||
|
|
||
|
import prottcp
|
||
|
|
||
|
BOOT_PATH ="file/JQ_JCXB_V54.bin"
|
||
|
APP_PATH ="file/jqcoder_slave_20230912--1.bin"
|
||
|
SCHEME_PATH = "file/JQ硬件EX工厂注码090701--2.json"
|
||
|
OUT_PATH = "file/coder_jqslave_boot.bin"
|
||
|
|
||
|
# 创建离线下载器的镜像
|
||
|
|
||
|
|
||
|
# 填充指定个数的byte
|
||
|
def arr_byte_copy(byte:int,num:int):
|
||
|
t=bytearray()
|
||
|
for i in range(num):
|
||
|
t.append(byte)
|
||
|
return t
|
||
|
# int转数组
|
||
|
def arr_from_int(num:int):
|
||
|
return bytearray([num&0xff,(num>>8)&0xff,(num>>16)&0xff,(num>>24)&0xff])
|
||
|
|
||
|
|
||
|
def creat():
|
||
|
boot=BOOT_PATH
|
||
|
app=APP_PATH
|
||
|
scheme=SCHEME_PATH
|
||
|
d=bytearray()
|
||
|
with open(boot,"rb") as f:
|
||
|
d+=f.read()
|
||
|
d+=arr_byte_copy(0xff,0x2400-len(d))
|
||
|
with open(app,"rb") as f:
|
||
|
d+=f.read()
|
||
|
d+=arr_byte_copy(0xff,0xf400-len(d))
|
||
|
with open(scheme,"rb") as f:
|
||
|
json_obj=json.loads(f.read())
|
||
|
d+=prottcp.scheme_to_byte(json_obj)
|
||
|
d+=arr_byte_copy(0xff,0xfc00-len(d))
|
||
|
d+=arr_from_int(0x669955aa)
|
||
|
with open(OUT_PATH,"wb+") as f:
|
||
|
f.write(d)
|
||
|
print(OUT_PATH+" create boot file success.")
|
||
|
|
||
|
|
||
|
|
||
|
if __name__ == "__main__":
|
||
|
creat()
|
||
|
|
||
|
|