Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
70 lines
5.9 KiB
Markdown
70 lines
5.9 KiB
Markdown
# 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. Аппаратное обновление, питание и восстановление после обрыва на
|
||
физических платах в эту проверку не входят.
|