Files
templates/c/protocan-boot/ports/stm32f103
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
..

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.