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

70 lines
5.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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. Аппаратное обновление, питание и восстановление после обрыва на
физических платах в эту проверку не входят.