Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
52 lines
3.8 KiB
Markdown
52 lines
3.8 KiB
Markdown
# 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).
|