From 442d04713ab26db6c6ebec8932e37079a8425924 Mon Sep 17 00:00:00 2001 From: khristolyubov Date: Mon, 19 Aug 2024 22:26:39 +0700 Subject: [PATCH] =?UTF-8?q?=D0=B2=D0=BC=D0=B5=D1=81=D1=82=D0=BE=20=D0=BF?= =?UTF-8?q?=D0=B0=D1=83=D0=B7=D1=8B=20=D0=BE=D0=BF=D1=80=D0=BE=D1=81=20?= =?UTF-8?q?=D0=BF=D1=80=D0=B8=20=D1=81=D1=82=D0=B0=D1=80=D1=82=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit в некоторых случаях пауза перед опросом оказывается не эффективной, происходил срыв загрузки hex. Теперь перед стартом загрузки посылаем ни к чему не обязывающую комманду --- README.md | 6 +++--- elbear_uploader.py | 17 +++++++++++++++-- requirements.txt | Bin 132 -> 54 bytes 3 files changed, 18 insertions(+), 5 deletions(-) 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 ad94102ce50f7887ea6e16f907fd0126fe633f79..b030760829c7436a696e2eefffbbebab0987a7f4 100644 GIT binary patch literal 54 zcmezWuYjSFp_n0+p@<=qA(0`6!4?RO8T1%T8F(4E82lJYf#M|$*+4mvj1f@Am;nG- CvkC_Q literal 132 zcmW-aOA3H63`E~r@F+_CExm$wDAAPb*KQb>`c-j78;m7IQSBozYt?>Axz&TjJm1#B1wvd@LpvV*mgE