# 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. Аппаратное обновление, питание и восстановление после обрыва на физических платах в эту проверку не входят.