| .. | ||
| CMakeLists.txt | ||
| main.c | ||
| README.md | ||
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 работает (
PING→PONG), в том числе 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 и прогнать тест