lift_indicator_suite/tests/target/host_uart
2026-07-09 10:07:04 +03:00
..
CMakeLists.txt # 7 2026-03-19 18:28:45 +03:00
main.c # 7 2026-03-19 18:28:45 +03:00
README.md # bootloader: target test docs 2026-07-09 10:07:04 +03:00

test_host_uart

Модуль под тестом

bsp/uart_host — HIL-прошивка test_host_uart (main.c), поднимающая текстовый CLI (PING, ECHO <text>, UART_BUF_SIZE) поверх реального LPUART1 (MCU-Link VCOM). Сама прошивка не содержит проверок — она только исполняет команды; assert'ы находятся в pytest на хосте (см. «Моки»).

Категория

HIL (Hardware-in-the-Loop), автономный — стимул не нужен, достаточно платы таргета и SWD/VCOM подключения через MCU-Link. M5StampPLC используется только для управления питанием таргета (реле RLY1), не как источник сигнала.

Моки

Программных моков нет — тестируется реальный физический UART. Роль «тестового окружения» играет pytest-стек в tools/hil/:

  • conftest.py — фикстура loaded_host_uart грузит ELF на таргет по SWD через pyOCD, фикстура uart открывает VCOM-порт и ждёт строку READY от прошивки, хелпер uart_cmd() шлёт команду и читает одну строку ответа.
  • 01_test_uart.py — все проверки (assert) и сценарии.

Что проверяется

  • Канал host↔target работает (PINGPONG), в том числе 10 раз подряд без потерь и зависаний.
  • ECHO не искажает данные: простой текст, текст с пробелами, цифры, payload, близкий к CLI_LINE_MAX.
  • UART_BUF_SIZE возвращает значение, совпадающее с фактически скомпилированным BSP_UART_HOST_RX_BUFFER_SIZE (512, задаётся через target_compile_definitions в CMake).
  • Неизвестная команда даёт ERR_UNKNOWN, после чего канал продолжает работать (PING снова отвечает PONG).

Гарантии

  • Канал host↔target не виснет ни после серии команд, ни после неизвестной команды.
  • ECHO передаёт полезную нагрузку побайтово точно, без обрезки, вплоть до почти полного CLI_LINE_MAX.
  • Размер RX-буфера, о котором сообщает прошивка, соответствует реально скомпилированному значению — расхождение между прошивкой и ожиданиями хоста будет замечено.

Запуск

just build::build-hil   # в devcontainer: собрать HIL-прошивки
just host::hil-uart     # на хосте: прошить по SWD и прогнать тест