Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
STM32F103C8: ProtoCAN Boot v1
Подключённый KONOR без HAL
boot_main.c содержит извлечённый CMSIS-загрузчик CAN/UART, boot_request.c —
вход из приложения через BKP DR1, boot_profile.h — общие адреса и magic.
KONOR_ds18b20/src/bootloader.c, src/boot_control.c, inc/boot_control.h
теперь включают эти файлы из lib/c/protocan-boot/ports/stm32f103.
Keil BOOT компилирует общие pcan_boot.c и rs485_boot.c; локальный proto.c
исключён только из загрузчика, приложение продолжает использовать свой parser.
UART BEGIN/DATA/END/STATUS сохраняют SETGUI v1, 512000 бод и PA9/PA10.
Номера блоков, CRC и сессии CAN обслуживает только общий ProtoCAN-автомат.
Оба транспорта используют один Flash writer; одновременная запись блокируется.
Native вариант не нужно собирать вместе с reusable HAL .c ниже.
Reusable HAL-порт
Аппаратный single-slot профиль извлечён из KONOR_ds18b20/src/bootloader.c.
Прямые операции с регистрами адаптированы к современному STM32CubeF1 HAL;
UART SETGUI parser исходного проекта в этот CAN-порт не входит.
| Область | Начало | Конец, исключён | Размер |
|---|---|---|---|
| Загрузчик | 0x08000000 |
0x08003000 |
12 КиБ |
| Приложение | 0x08003000 |
0x08010000 |
52 КиБ |
| SRAM для MSP | 0x20000000 |
0x20005000 |
20 КиБ |
MSP может совпадать с верхней границей SRAM, но не с нижней; выравнивание — восемь байт. Страница Flash — 1024 байта, единица записи — полуслово 16 бит. Профиль предназначен для штатных 64 КиБ Flash STM32F103C8, без использования недокументированного расширения памяти.
Подключайте pcan_boot_stm32f103.c, общий src/pcan_boot.c и сохраните соседний
каталог stm32-common. STM32CubeF1 HAL должен включать CAN и Flash/FlashEx.
Для определения CMSIS обычно используется STM32F103xB; физический профиль
этого порта остаётся C8 с 64 КиБ.
Проект настраивает CAN1 и GPIO: исходная плата использует PA11 RX, PA12 TX,
500 кбит/с, DeviceType=7 / DeviceID=13. Значения адреса задавайте через
pcan_boot_config_t и согласуйте с host-клиентом. На стороне Flash всегда
используется логический слот A.
Вызывайте pcan_boot_stm32f103_init после HAL_CAN_Init, затем
pcan_boot_stm32f103_poll из основного цикла. Linker приложения и VTOR должны
указывать на 0x08003000. В загрузчике зарезервируйте весь диапазон до этого
адреса и проверьте размер итогового образа по MAP: HAL-сборка может оказаться
крупнее исходного загрузчика с прямым доступом к регистрам.
Общая инструкция, пример, ограничения COMMIT и запуска после reset.