From 1aa732c81044b1e8c333f7895b01dfd015317aa3 Mon Sep 17 00:00:00 2001 From: Valentin Dabstep Date: Mon, 2 Jun 2025 20:02:22 +0300 Subject: [PATCH] add test --- .../test/{firmware.py => firmware_can.py} | 0 controller/fw/embed/test/st-link.py | 60 +++++++++++++++++++ .../test/{write_pid.py => write_pidP.py} | 0 3 files changed, 60 insertions(+) rename controller/fw/embed/test/{firmware.py => firmware_can.py} (100%) create mode 100644 controller/fw/embed/test/st-link.py rename controller/fw/embed/test/{write_pid.py => write_pidP.py} (100%) diff --git a/controller/fw/embed/test/firmware.py b/controller/fw/embed/test/firmware_can.py similarity index 100% rename from controller/fw/embed/test/firmware.py rename to controller/fw/embed/test/firmware_can.py diff --git a/controller/fw/embed/test/st-link.py b/controller/fw/embed/test/st-link.py new file mode 100644 index 0000000..ea50285 --- /dev/null +++ b/controller/fw/embed/test/st-link.py @@ -0,0 +1,60 @@ +import subprocess +import os +import sys + +def flash_hex_with_stlink(hex_file_path): + if not os.path.isfile(hex_file_path): + print(f"❌ Файл не найден: {hex_file_path}") + return False + + # ИСПРАВЛЕННАЯ КОМАНДА + command = [ + "st-flash", + "--format", "ihex", + "write", + hex_file_path # БЕЗ УКАЗАНИЯ АДРЕСА + ] + + try: + print(f"⚡️ Прошиваем {hex_file_path} через ST-Link...") + result = subprocess.run( + command, + stdout=subprocess.PIPE, + stderr=subprocess.PIPE, + universal_newlines=True, + timeout=30 # Таймаут 30 секунд + ) + + # Вывод результатов + print("▬▬▬ STDOUT ▬▬▬") + print(result.stdout) + + print("▬▬▬ STDERR ▬▬▬") + print(result.stderr) + + if result.returncode == 0: + print("✅ Прошивка успешно завершена!") + return True + else: + print(f"❌ Ошибка прошивки (код: {result.returncode})") + return False + + except FileNotFoundError: + print("❌ st-flash не найден! Установите stlink-tools.") + return False + except subprocess.TimeoutExpired: + print("❌ Таймаут операции! Проверьте подключение ST-Link.") + return False + except Exception as e: + print(f"❌ Неизвестная ошибка: {str(e)}") + return False + +if __name__ == "__main__": + if len(sys.argv) != 2: + print("Использование: python stlink_flash.py ") + sys.exit(1) + + if flash_hex_with_stlink(sys.argv[1]): + sys.exit(0) + else: + sys.exit(1) diff --git a/controller/fw/embed/test/write_pid.py b/controller/fw/embed/test/write_pidP.py similarity index 100% rename from controller/fw/embed/test/write_pid.py rename to controller/fw/embed/test/write_pidP.py