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

13 lines
1.7 KiB
C
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.
#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. */