Files
templates/c/protocan-boot/projects/STM32.md
T
Andrey c6390ae1c9 feat(protocan-boot): Добавь порты MCU и сервисы загрузки
Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент.

Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
2026-10-23 14:16:19 +03:00

5.9 KiB
Raw Blame History

STM32: подключение исходных проектов к templates

Канонические загрузочные реализации находятся в c/protocan-boot/ports. В проектах сохранены прежние пути файлов, содержащие только include общего исходника из их submodule. Это сохраняет внешний API и настройки Keil, не оставляя локальных копий state machine, Flash writer или boot-control.

Проект Submodule Подключённый порт Сборки
KONOR_ds18b20 lib stm32f103 CMSIS, BKP request, CAN/UART Keil app и BOOT
home/climate third_party/templates stm32f407 CMSIS boot, HAL app control Keil app и BOOT
CANdle_stm32 templates stm32g474 HAL FDCAN/Flash, CAN/UART, startup/control Keil app/BOOT, CMake app/BOOT

Что перенесено

  • Общие pcan_boot.c/.h используются через submodule; устаревшая копия Libraries/ProtoCanBoot climate заменена совместимыми include-обёртками.
  • F103/F407 CMSIS transport, Flash, CRC readback, безопасный naked handoff, single-slot callbacks и таймеры используют общий boot_native.inc.
  • F103 UART firmware flow теперь использует имеющийся общий rs485-boot; приложение KONOR продолжает использовать свой прикладной parser proto.c.
  • G474 локальная CAN state machine полностью заменена текущим pcan_boot. Единый Flash writer используется CAN/UART; вход из приложения и startup также принадлежат templates.
  • Конфигурации ядра заполняются по именам полей. Сохранены исходные Device ID, скорости CAN/UART, границы Flash и режим одного логического слота A.
  • В F407 BOOT и G474 app/BOOT linker исключает последние восемь байт используемой SRAM, где хранится запрос обновления. Initial MSP G474 согласован с этим.
  • В GCC-таблице IRQ G474 размер выведен из самого старшего назначенного IRQ: прежний предел по USB_LP не вмещал USART1 и ломал CMake app-сборку.

Clock tree, USB–CAN приложение, трансивер, GPIO board-support, настройки программирования ST-Link и application linker остаются в исходных проектах. Нативные boot_main.c не нужно компилировать вместе с альтернативным HAL boot main в одном target. Изменения не прошивают подключённые устройства.

Зависимости и публикация

CANdle получен из https://git.rd12.ru/setcorp/CANdle_stm32.git, исходный HEAD 61a93c5. Записанный там gitlink templates указывает на отсутствующий на сервере объект 520788491c803e07ba1889e1fa60ed1550afb848. Для локальной интеграции submodule переключён на доступный локальный HEAD templates, после чего текущие общие исходники синхронизированы в рабочее дерево. Рабочие копии submodule KONOR/climate также содержат соответствующие текущие файлы.

Подключение проверено локально. Для воспроизводимого нового клонирования потребуется зафиксировать и опубликовать изменения templates, затем обновить gitlinks в исходных проектах на этот доступный commit. Коммиты и push не являются частью этой локальной интеграции; чужие незавершённые изменения не включались в commit.

Проверка

21 октября 2026 года проверены настоящие Keil/Arm Compiler 6.22 сборки BOOT и приложения каждого из трёх проектов. Все загрузчики помещаются в исходные лимиты 12/32/32 КиБ. G474 дополнительно проверен ARM GCC/CMake для STM32G474VE_CAN_bootloader и STM32G474VE_DevBoard_fw.

Включённые в G474 BOOT строгие диагностики Arm Compiler выдают предупреждения о layout структур, GNU-расширениях и обычном C-доступе к буферам в HAL/общих модулях; компиляция и линковка завершаются без ошибок. GNU/newlib конфигурация также сообщает о заглушках syscall при отключённом semihosting. Эти сообщения не подавлялись общими флагами проекта.

Host CMake/CTest: 10 тестов, включая три production HAL-порта. G474 проверяется в DBANK=0 и DBANK=1: весь слот, переход между банками, отказ swap/неверной плотности, все хвосты DATA, CRC readback, тайм-аут и TX ACK до reset. Проверки интеграции climate подтверждают реальную цепочку include/Keil и границы Flash/SRAM. Аппаратное обновление, питание и восстановление после обрыва на физических платах в эту проверку не входят.