25 lines
1.7 KiB
Markdown
25 lines
1.7 KiB
Markdown
# 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.
|