X-Git-Url: https://robinkrens.nl/gitweb/?a=blobdiff_plain;f=src%2FRAFlasher.py;h=025bee48f9b3e34592c0321d56dee549decd4dd6;hb=5bc6b530d89045f25e246d471fbb7deb70e7f10c;hp=1f6d4bfb2b4996dc12b7ecbfcf0826ea161fb75c;hpb=46fdf8ec796c5465c3b39b5c00381f684e9165a0;p=renesas-ra-flasher diff --git a/src/RAFlasher.py b/src/RAFlasher.py index 1f6d4bf..025bee4 100644 --- a/src/RAFlasher.py +++ b/src/RAFlasher.py @@ -8,6 +8,8 @@ from RAConnect import * from RAPacker import * SECTOR_SIZE = 2048 +VENDOR_ID = 0x045B +PRODUCT_ID = 0x0261 def int_to_hex_list(num): hex_string = hex(num)[2:].upper() # convert to hex string @@ -40,16 +42,6 @@ def set_size_boundaries(start_addr, size): return (start_addr, end_addr) -def inquire_connection(dev): - packed = pack_pkt(INQ_CMD, "") - dev.send_data(packed) - info = dev.recv_data(7) - if info == bytearray(b'\x00') or info == bytearray(b''): - return False - msg = unpack_pkt(info) - #print("Connection already established") - return True - def get_area_info(dev): for i in [0,1,2]: packed = pack_pkt(ARE_CMD, [str(i)]) @@ -104,7 +96,6 @@ def read_img(dev, img, start_addr, size): size = 0x3FFFF - start_addr # read maximum possible (start_addr, end_addr) = set_size_boundaries(start_addr, size) - print(hex(start_addr), hex(end_addr)) # setup initial communication SAD = int_to_hex_list(start_addr) @@ -139,7 +130,6 @@ def write_img(dev, img, start_addr, size, verify=False): raise ValueError("Write size > file size") (start_addr, end_addr) = set_size_boundaries(start_addr, size) - print(start_addr, end_addr) chunk_size = 1024 # max is 1024 according to protocol @@ -151,11 +141,12 @@ def write_img(dev, img, start_addr, size, verify=False): ret = dev.recv_data(7) unpack_pkt(ret) + totalread = 0 with open(img, 'rb') as f: - with tqdm(total=file_size, desc="Writing progress") as pbar: + with tqdm(total=size, desc="Writing progress") as pbar: chunk = f.read(chunk_size) pbar.update(len(chunk)) - while chunk: + while chunk and totalread < size: if len(chunk) != chunk_size: padding_length = chunk_size - len(chunk) chunk += b'\0' * padding_length @@ -165,6 +156,7 @@ def write_img(dev, img, start_addr, size, verify=False): reply = dev.recv_data(reply_len) msg = unpack_pkt(reply) chunk = f.read(chunk_size) + totalread += chunk_size pbar.update(len(chunk)) @@ -206,29 +198,16 @@ def main(): args = parser.parse_args() if args.command == "write": - dev = RAConnect(vendor_id=0x045B, product_id=0x0261) - status_con = inquire_connection(dev) - if not status_con: - dev.confirm_connection() - #print(args.start_address, args.size) + dev = RAConnect(VENDOR_ID, PRODUCT_ID) write_img(dev, args.file_name, args.start_address, args.size, args.verify) elif args.command == "read": - dev = RAConnect(vendor_id=0x045B, product_id=0x0261) - status_con = inquire_connection(dev) - if not status_con: - dev.confirm_connection() + dev = RAConnect(VENDOR_ID, PRODUCT_ID) read_img(dev, args.file_name, args.start_address, args.size) elif args.command == "erase": - dev = RAConnect(vendor_id=0x045B, product_id=0x0261) - status_con = inquire_connection(dev) - if not status_con: - dev.confirm_connection() + dev = RAConnect(VENDOR_ID, PRODUCT_ID) erase_chip(dev, args.start_address, args.size) elif args.command == "info": - dev = RAConnect(vendor_id=0x045B, product_id=0x0261) - status_con = inquire_connection(dev) - if not status_con: - dev.confirm_connection() + dev = RAConnect(VENDOR_ID, PRODUCT_ID) get_dev_info(dev) get_area_info(dev) else: