Skip to content

Commit b06250f

Browse files
committed
temp
1 parent a363aa4 commit b06250f

1 file changed

Lines changed: 63 additions & 3 deletions

File tree

example/onchip/IAP/toolApp/STM32_IAP.py

Lines changed: 63 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -23,15 +23,15 @@ def WriteCOM(com,bytes,ack,timeoutS):
2323
com.write(bytes)
2424
time.sleep(0.5)
2525
timestart = time.time()
26-
rcvStr = ""
26+
rcvStr = b""
2727
while 1:
2828
# length = max(1, min(2048, com.in_waiting))
2929
# rcv = com.read(length)
3030
if(time.time() - timestart > timeoutS):
3131
break
3232
len = com.in_waiting
3333
if len:
34-
rcv = com.read(len).decode()
34+
rcv = com.read(len)
3535
rcvStr = rcvStr+rcv
3636
if ack in rcvStr:
3737
break
@@ -54,6 +54,44 @@ class IAP_USART_Pack:
5454
data = [0 for i in range(MEMORY_PAGE_SIZE)]
5555
checkSum = 0x0000
5656

57+
def calcCheckSum(self):
58+
if self.len%2 != 0:
59+
print("len % 2 != 0,len:",self.len)
60+
return None
61+
sum = self.data[1]*256 + self.data[0]
62+
for i in range(1,int(self.len/2)):
63+
temp = (self.data[i*2+1]*256 + self.data[i*2])
64+
sum = sum^temp
65+
return sum
66+
67+
def toString(self):
68+
objStr = "\n----------------------------\n"
69+
objStr += (("start flag:0x%02X\ntotal opack:"+(str)(self.packTotal)+"\npack ID:"+(str)(self.packID)+"\nlen:"+(str)(self.len)+"\ncheck sum:0x%02X\n") %(self.packStart,self.checkSum))
70+
objStr +="data:\n"
71+
for i in range(MEMORY_PAGE_SIZE):
72+
objStr += ("%02X " %(self.data[i]))
73+
objStr += "\n----------------------------\n"
74+
return objStr
75+
76+
def toBytes(self):
77+
ret = []
78+
ret.append(self.packStart&0xff)
79+
ret.append(self.packStart>>8&0xff)
80+
ret.append(self.packStart>>16&0xff)
81+
ret.append(self.packStart>>24&0xff)
82+
ret.append(self.packTotal&0xff)
83+
ret.append(self.packTotal>>8&0xff)
84+
ret.append(self.packID&0xff)
85+
ret.append(self.packID>>8&0xff)
86+
ret.append(self.len&0xff)
87+
ret.append(self.len>>8&0xff)
88+
for i in self.data:
89+
ret.append(i)
90+
ret.append(self.checkSum&0xff)
91+
ret.append(self.checkSum>>8&0xff)
92+
return ret
93+
94+
5795

5896
#######################
5997
# main
@@ -75,8 +113,30 @@ class IAP_USART_Pack:
75113

76114

77115
appBin = readBinfile(binFilePath)
78-
print(appBin)
79116

117+
totalLen = (int)(len(appBin)/MEMORY_PAGE_SIZE)
118+
if len(appBin) % MEMORY_PAGE_SIZE != 0:
119+
totalLen += 1
120+
pack = IAP_USART_Pack()
121+
pack.packTotal = totalLen
122+
print("total pack len:",totalLen)
123+
124+
for i in range(totalLen):
125+
pack.packID = i
126+
if i+1 != totalLen:
127+
pack.len = MEMORY_PAGE_SIZE
128+
else:
129+
pack.len = len(appBin) % MEMORY_PAGE_SIZE
130+
for j in range(pack.len):
131+
pack.data[j] = appBin[i*MEMORY_PAGE_SIZE+j]
132+
for j in range(pack.len,MEMORY_PAGE_SIZE):
133+
pack.data[j] = 0
134+
pack.checkSum = pack.calcCheckSum()
135+
transBytes = pack.toBytes()
136+
print(pack.toString())
137+
ackBytes=[0x78,0x3E,0x00,0xAE,pack.packID&0xff,pack.packID>>8&0xff,pack.packTotal&0xff,pack.packTotal>>8&0xff,1,0,0]
138+
...
139+
WriteCOM(com,transBytes,ackBytes,1)
80140

81141

82142
com.close()

0 commit comments

Comments
 (0)