X-Git-Url: https://robinkrens.nl/gitweb/?a=blobdiff_plain;f=src%2FRAFlasher.py;h=d6f53d52df95135fc2e5d24f480da43bb9a17e4d;hb=ea527f1f036f5f313d0c395a9e24ae365c22f451;hp=f4501622ae4b750bfd92636f793e3ce65c1e6fd9;hpb=fd1a0da2e93115937f66c585d3a8f8927ab4c3fb;p=renesas-ra-flasher diff --git a/src/RAFlasher.py b/src/RAFlasher.py index f450162..d6f53d5 100644 --- a/src/RAFlasher.py +++ b/src/RAFlasher.py @@ -6,15 +6,35 @@ from RAPacker import * SECTOR_SIZE = 2048 +def int_to_hex_list(num): + hex_string = hex(num)[2:].upper() # convert to hex string + hex_string = hex_string.zfill(8) # pad for 8 char's long + hex_list = [f'0x{hex_string[c:c+2]}' for c in range(0, 8, 2)] + return hex_list + def get_dev_info(dev): packed = pack_pkt(SIG_CMD, "") dev.send_data(packed) - #info_ret = dev.recv_data(17) - info = b'\x81\x00\x0D\x3A\x01\x31\x2d\x00\x00\x1e\x84\x80\x04\x02\x0a\x08' # test - fmt = '>IIIBBH' - _HEADER, SCI, RMB, NOA, TYP, BFV = struct.unpack(fmt, info) - print(f'Ver{BFV >> 8}.{BFV & 0xFF}') + print(packed) + info = dev.recv_data(18) + print(info, len(info)) + #info = b'\x81\x00\x0D\x3A\x01\x31\x2d\x00\x00\x1e\x84\x80\x04\x02\x0a\x08' # test + fmt = '>IIIBBHH' + _HEADER, SCI, RMB, NOA, TYP, BFV, _FOOTER = struct.unpack(fmt, info) + print('Chip info:') + print('====================') + print(f'Serial interface speed: {SCI} Hz') + print(f'Recommend max UART baud rate {RMB} bps') + if TYP == 0x02: + print('RA MCU + RA2/RA4 Series') + elif TYP == 0x03: + print('RA MCU + RA6 Series') + else: + print('Unknown MCU type') + print(f'Boot firmware version {BFV >> 8}.{BFV & 0xFF}') + print('====================') + def verify_img(dev, img, start_addr, end_addr): raise Exception("Not implemented") @@ -43,7 +63,12 @@ def write_img(dev, img, start_addr, end_addr, verify=False): if (end_addr <= start_addr or end_addr > 0xFF800): raise ValueError("end address value error") - # @TODO setup initial communication + # setup initial communication + SAD = int_to_hex_list(start_addr) + EAD = int_to_hex_list(end_addr) + packed = pack_pkt(WRI_CMD, SAD + EAD) + dev.send_data(packed) + ret = dev.recv_data(7) with open(img, 'rb') as f: chunk = f.read(chunk_size) @@ -83,13 +108,15 @@ def main(): args = parser.parse_args() if args.command == "write": - dev = RAConnect(vendor_id=0x1a86, product_id=0x7523) + dev = RAConnect(vendor_id=0x045B, product_id=0x0261) print(args) write_img(dev, args.file_name, args.start_address, args.end_address, args.verify) elif args.command == "read": print('read command') elif args.command == "info": - dev = RAConnect(vendor_id=0x1a86, product_id=0x7523) + dev = RAConnect(vendor_id=0x045B, product_id=0x0261) + dev.establish_connection() + dev.confirm_connection() get_dev_info(dev) else: parser.print_help()