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

52 lines
3.8 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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).