feat(rs485-boot): add STM32F103 and G474 ports

This commit is contained in:
2026-08-30 01:37:12 +03:00
parent 94c991380b
commit 217073982f
12 changed files with 334 additions and 0 deletions

24
c/rs485-boot/README.md Normal file
View File

@@ -0,0 +1,24 @@
# RS-485 firmware boot
Переносимое ядро обновления прошивки по полудуплексному RS-485. Wire-протокол
совместим с SETGUI protocol v1 проекта `KONOR_ds18b20`: кадры `A5 5A`, CRC32,
команды `FIRMWARE_BEGIN/DATA/END/ABORT/STATUS` (`0x0B..0x0F`).
Ядро не обращается к регистрам МК. Проект передаёт ему принятые байты через
`rs485_boot_feed()` и реализует callbacks Flash/передачи из `rs485_boot_port_t`.
Готовые bare-metal порты находятся в `ports/stm32f103` и `ports/stm32g474vet`.
Важно: линии A/B должны иметь терминацию и fail-safe bias. Порт держит DE
активным до флага физического завершения передачи TC, затем возвращается в RX.
## Подключение
1. Добавить `src/rs485_boot.c` и порт нужного МК в проект.
2. Скопировать `rs485_boot_port_config.template.h` в include-каталог проекта как
`rs485_boot_port_config.h` и проверить UART, DE, адрес приложения и Flash.
3. Вызвать `rs485_boot_hw_init()`, затем `rs485_boot_init()` с callbacks из
`rs485_boot_hw_make_port()`.
4. В основном цикле читать `rs485_boot_hw_get_byte()` и передавать байты ядру.
Порт STM32F103 рассчитан на стандартную периферию STM32F10x. Порт G474VET
использует CMSIS STM32G4 (`stm32g474xx.h`) и 64-битное программирование Flash.