Обеспечь единый процесс обновления для STM32F103/F407/G474 и TMS320F2812/F28335: discovery, служебные ответы, BUSY, тайм-аут сессии и подтверждение приложения. Добавь самостоятельные проекты CCS, аппаратные хранилища и Python-клиент. Совместимость: структуры конфигурации и порта расширены, поэтому потребители должны пересобраться и обнулить новые поля. Для C28x callbacks используют pcan_boot_byte_t; периодический pcan_boot_poll обслуживает discovery и настроенный тайм-аут.
29 lines
2.3 KiB
C
29 lines
2.3 KiB
C
#ifndef F28335_CAN_BOOT_H
|
|
#define F28335_CAN_BOOT_H
|
|
#include "../../include/pcan_boot.h"
|
|
/* Приложение задаёт версию из firmware_version.h до подключения этого заголовка.
|
|
* Формат поля FW: major[31:24], minor[23:16], patch[15:0]. Ноль — запасное
|
|
* значение при отсутствии версии сборки, а не прошитая здесь версия устройства. */
|
|
#ifndef F28335_CAN_BOOT_FIRMWARE_VERSION
|
|
#define F28335_CAN_BOOT_FIRMWARE_VERSION 0UL /* Board supplies the build identity. */
|
|
#endif
|
|
/* Адрес ProtoCAN состоит из Device Type (3 бита) и Device ID (4 бита).
|
|
* ProductType — отдельный код совместимости прошивки; это не CAN ID и не RS-адрес. */
|
|
#define F28335_CAN_BOOT_PERIPH_COUNT 32U /* Лист «Интерфейс протокола», строки 45–76: PERIPH 0–31 занимают два типа по 16 экземпляров. */
|
|
#define F28335_CAN_BOOT_PRODUCT 0x2833U
|
|
#define F28335_CAN_BOOT_DEVICE_NAME "F28335-M95M02"
|
|
/* Порядок интеграции приложения:
|
|
* StartupWatchdog/EarlyInit сразу после InitSysCtrl; Init после настройки
|
|
* таймера и EEPROM; Ready после старта прикладных подсистем; Service в main.
|
|
* RxISR вызывается из CAN ISR, WatchdogAllowed проверяется перед кормлением
|
|
* watchdog таймерным ISR. Resume применяется только отдельным загрузчиком. */
|
|
void F28335CanBoot_Init(unsigned int periph_id); /* Принимает физический номер PERIPH: 5 — УМП1, 6 — УМП2, 8 — задатчик; общий адрес для всех плат исключён. */
|
|
void F28335CanBoot_EarlyInit(void);
|
|
void F28335CanBoot_RxISR(void);
|
|
void F28335CanBoot_Service(void);
|
|
unsigned int F28335CanBoot_Active(void); /* Удерживает загрузчик в CAN recovery после ENTER_BOOT, не запуская приложение по окончании стартового окна. */
|
|
void F28335CanBoot_Ready(void);
|
|
void F28335CanBoot_Resume(unsigned int session);
|
|
unsigned int F28335CanBoot_WatchdogAllowed(void);
|
|
#endif
|