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

3.8 KiB
Raw Blame History

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.