Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
13 lines
1.7 KiB
C
13 lines
1.7 KiB
C
#include "boot_profile.h" /* Использует ту же карту памяти и magic, что общий загрузчик F103. */
|
||
#include "stm32f10x.h" /* Сохраняет совместимость KONOR с CMSIS/StdPeriph без зависимости от HAL. */
|
||
static void request_boot(uint16_t magic) /* Сохраняет одноразовый запрос через программный reset. */
|
||
{ /* BKP DR1 существует в backup-домене STM32F103 и не требует резервирования основной SRAM. */
|
||
RCC->APB1ENR |= RCC_APB1ENR_PWREN | RCC_APB1ENR_BKPEN; /* Разрешает тактирование PWR и backup-регистров. */
|
||
PWR->CR |= PWR_CR_DBP; /* Разрешает запись в защищённый backup-домен. */
|
||
BKP->DR1 = magic; /* Записывает совместимый код назначения следующего запуска. */
|
||
__DSB(); /* Гарантирует завершение записи до запроса системного сброса. */
|
||
NVIC_SystemReset(); /* Следующий startup потребляет запрос и выбирает загрузчик. */
|
||
} /* Завершает общую аппаратную последовательность входа. */
|
||
void Boot_RequestFirmware(void) { request_boot(BOOT_REQUEST_FIRMWARE_MAGIC); } /* Сохраняет прежний API приложения KONOR для обновления CAN/UART. */
|
||
void Boot_RequestSystemMemory(void) { request_boot(BOOT_REQUEST_SYSTEM_MAGIC); } /* Сохраняет прежний API меню для заводского UART-загрузчика STM32. */
|