Skip to content

Commit 5a3f4e4

Browse files
committedAug 12, 2015
tools/flterm.py: some cleanup and fix last frame data that was not transmitted
1 parent abf9a58 commit 5a3f4e4

File tree

1 file changed

+18
-22
lines changed

1 file changed

+18
-22
lines changed
 

Diff for: ‎tools/flterm.py

+18-22
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import serial
66
import threading
77
import argparse
8+
89
from serial.tools.miniterm import console, character, LF
910

1011
sfl_magic_len = 14
@@ -13,17 +14,17 @@
1314

1415
# General commands
1516
sfl_cmd_abort = 0x00
16-
sfl_cmd_load = 0x01
17-
sfl_cmd_jump = 0x02
17+
sfl_cmd_load = 0x01
18+
sfl_cmd_jump = 0x02
19+
1820

1921
# Replies
20-
sfl_ack_success = 'K'
22+
sfl_ack_success = 'K'
2123
sfl_ack_crcerror = 'C'
22-
sfl_ack_unknown = 'U'
23-
sfl_ack_error = 'E'
24+
sfl_ack_unknown = 'U'
25+
sfl_ack_error = 'E'
26+
2427

25-
# XXX : can we get CRC16 from a standard Python library as it's done
26-
# for CRC32 with binascii?
2728
crc16_table = [
2829
0x0000, 0x1021, 0x2042, 0x3063, 0x4084, 0x50A5, 0x60C6, 0x70E7,
2930
0x8108, 0x9129, 0xA14A, 0xB16B, 0xC18C, 0xD1AD, 0xE1CE, 0xF1EF,
@@ -64,7 +65,7 @@ def crc16(l):
6465
crc = 0
6566
for d in l:
6667
crc = crc16_table[((crc >> 8) ^ d) & 0xff] ^ (crc << 8)
67-
return crc
68+
return crc & 0xffff
6869

6970

7071
class SFLFrame:
@@ -87,8 +88,8 @@ def encode(self):
8788
self.raw = []
8889
self.raw.append(self.length)
8990
self.compute_crc()
90-
self.raw.append((self.crc & 0xff00) >> 8)
91-
self.raw.append(self.crc & 0x00ff)
91+
for d in self.crc.to_bytes(2, "big"):
92+
self.raw.append(d)
9293
self.raw.append(self.cmd)
9394
for d in self.payload:
9495
self.raw.append(d)
@@ -165,14 +166,11 @@ def upload(self, filename, address):
165166
while len(data) != 0:
166167
print("{}%\r".format(100*position//length), end="")
167168
frame = SFLFrame()
168-
if len(data) > 251:
169-
frame_data = data[:251]
170-
frame.length = len(frame_data)+4
169+
frame_data = data[:251]
170+
frame.length = len(frame_data) + 4
171171
frame.cmd = sfl_cmd_load
172-
frame.payload.append((current_address & 0xff000000) >> 24)
173-
frame.payload.append((current_address & 0x00ff0000) >> 16)
174-
frame.payload.append((current_address & 0x0000ff00) >> 8)
175-
frame.payload.append((current_address & 0x000000ff) >> 0)
172+
for d in current_address.to_bytes(4, "big"):
173+
frame.payload.append(d)
176174
for d in frame_data:
177175
frame.payload.append(d)
178176
if self.send_frame(frame) == 0:
@@ -193,10 +191,8 @@ def boot(self):
193191
frame = SFLFrame()
194192
frame.length = 4
195193
frame.cmd = sfl_cmd_jump
196-
frame.payload.append((self.kernel_address & 0xff000000) >> 24)
197-
frame.payload.append((self.kernel_address & 0x00ff0000) >> 16)
198-
frame.payload.append((self.kernel_address & 0x0000ff00) >> 8)
199-
frame.payload.append((self.kernel_address & 0x000000ff) >> 0)
194+
for d in self.kernel_address.to_bytes(4, "big"):
195+
frame.payload.append(d)
200196
self.send_frame(frame)
201197

202198
def detect_magic(self, data):
@@ -290,7 +286,7 @@ def _get_args():
290286
parser.add_argument("--port", default="2", help="serial port")
291287
parser.add_argument("--speed", default=115200, help="serial baudrate")
292288
parser.add_argument("--kernel", default=None, help="kernel image")
293-
parser.add_argument("--kernel-adr", default=0x40000000, help="kernel address")
289+
parser.add_argument("--kernel-adr", default="0x40000000", help="kernel address")
Has conversations. Original line has conversations.
294290
return parser.parse_args()
295291

296292
if __name__ == "__main__":

0 commit comments

Comments
 (0)
Please sign in to comment.