Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
3.8 KiB
STM32F407VE: ProtoCAN Boot v1
Подключённый climate
boot_main.c содержит извлечённый CMSIS-загрузчик, boot_control_hal.c/.h —
адресный ENTER_BOOT из рабочего приложения. boot_profile.h определяет карту
Flash и SRAM-запрос; идентичность прибора остаётся в pcan_boot_config.h проекта.
Исходные Bootloader/bootloader_f407.c, Libraries/ProtoCanBoot/Src/pcan_boot.c
и Core/Src/can_boot_control.c стали include-обёртками общего submodule.
Старый include API также перенаправлен в templates.
BOOT linker исключает последние восемь байт SRAM: запрос хранится в
0x2001FFFC, а initial stack не может затереть его до main. Приложение climate
уже использует нижние 112 КиБ SRAM и не перекрывает запрос. Обычный reset
сохраняет десятисекундное окно обновления; TX ACK перед REBOOT проверяется.
Native boot main и reusable HAL .c ниже — отдельные варианты сборки.
Reusable HAL-порт
Аппаратный single-slot профиль извлечён из
climate_control_f407vet6_f4/Bootloader/bootloader_f407.c и
Libraries/ProtoCanBoot/Inc/pcan_boot_config.h проекта climate.
Операции с регистрами адаптированы к современному STM32CubeF4 HAL.
| Область | Начало | Конец, исключён | Размер |
|---|---|---|---|
| Загрузчик: секторы 0/1 | 0x08000000 |
0x08008000 |
32 КиБ |
| Приложение: секторы 2..5 | 0x08008000 |
0x08040000 |
224 КиБ |
| EEPROM-кольцо: секторы 6/7 | 0x08040000 |
0x08080000 |
256 КиБ |
| Основная SRAM для MSP | 0x20000000 |
0x20020000 |
128 КиБ |
Размеры стираемых секторов 2/3/4/5: 16/16/64/128 КиБ. Запись выполняется
словами 32 бита, с FLASH_VOLTAGE_RANGE_3; VDD платы должно быть 2,7..3,6 В.
Порт не стирает секторы 0/1/6/7. CCM не используется как область допустимого MSP.
Подключайте pcan_boot_stm32f407.c, общий src/pcan_boot.c и сохраните соседний
каталог stm32-common. В CMSIS выберите STM32F407xx, в HAL включите CAN и
Flash/FlashEx. Проект настраивает CAN1, скорость и GPIO: исходная плата использует
PD0 RX, PD1 TX, AF9, 500 кбит/с, DeviceType=7 / DeviceID=3.
Вызывайте pcan_boot_stm32f407_init после HAL_CAN_Init, затем
pcan_boot_stm32f407_poll из основного цикла. Адрес прибора, Product/HW/FW,
окно ACK и тайм-аут сессии задаются через pcan_boot_config_t по именам полей.
Инициализация принудительно задаёт логический слот A и ёмкость 224 КиБ.
Linker приложения и VTOR должны указывать на 0x08008000; загрузчик должен
помещаться в 32 КиБ до этого адреса. Это исходная CAN-разметка climate:
USB SET v2-порт F407 из set-protocol использует другую карту памяти,
поэтому его linker и готовые USB-образы нельзя подключать без адаптации.
Общая инструкция, пример, ограничения COMMIT и запуска после reset.