diff --git a/README.md b/README.md index 921ae63..4c8dd99 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,3 @@ -# elbear_uploader -Скрипт программирования памяти MIK32 Амур платы ELBEAR ACE-UNO. -Загрузчик построчно отправляет указанный при вызове hex-файл прошивки в заданный com-порт. При этом парсинг команд осуществляется на стороне микроконтроллера. Для ускорения процесса прошивки скрипт позволяет при помощи map-файла вырезать из отправляемого hex-файла команды записи данных в неиспользуемую область памяти перед некэшируемой областью. Полный набор опций доступен в справке при запуске скрипта с опцией –-help. +# elbear_uploader +Скрипт программирования памяти MIK32 Амур платы ELBEAR ACE-UNO. +Загрузчик построчно отправляет указанный при вызове hex-файл прошивки в заданный com-порт. При этом парсинг команд осуществляется на стороне микроконтроллера. Для ускорения процесса прошивки скрипт позволяет при помощи map-файла вырезать из отправляемого hex-файла команды записи данных в неиспользуемую область памяти перед некэшируемой областью. Полный набор опций доступен в справке при запуске скрипта с опцией –-help. diff --git a/elbear_uploader.py b/elbear_uploader.py index c72ae4c..d75488b 100644 --- a/elbear_uploader.py +++ b/elbear_uploader.py @@ -1,6 +1,7 @@ import serial import time import argparse +from sys import exit ACK = 0x0F # МК подтвердил 0b00001111 NACK = 0xF0 # МК отверг 0b11110000 @@ -28,6 +29,7 @@ def cmd_package_size(package_size): if int.from_bytes(read_byte, "big") == NACK: print("NACK. COMMAND_PACKAGE_SIZE") exit() + return read_byte == b'\x0f' # Отправить пакет def cmd_send_package(data_package): @@ -159,8 +161,19 @@ if namespace.hexpath: i -= 1 # текущая строчка удалилась, следующая будет с тем же индексом i += 1 - ser = serial.Serial(port = namespace.com, baudrate = namespace.baudrate) - time.sleep(0.5) # Задержка чтобы успел выставиться RESET + ser = serial.Serial(port = namespace.com, baudrate = namespace.baudrate, timeout = 0.1) + + ping = False + for i in range(10): # вместо задержки забрасываем запросами + ping = cmd_package_size(15) + if ping: + break + + if ping: + print("Device connected") + else: + print("Device not responding") + exit() if namespace.fullerase: print('Erasing memory') diff --git a/requirements.txt b/requirements.txt index ad94102..b030760 100644 Binary files a/requirements.txt and b/requirements.txt differ