# 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](../stm32-common/README.md).