#ifndef __CONFIG_H__ #define __CONFIG_H__ #include "stdint.h" #define EEPDEBUG 0 #define DEBUG_OTA 0 #define CAN_DEBUG 0 // Flash分区配置 constexpr u32 BOOTLOADER_SIZE = 0x4000; // 16KB constexpr u32 BOOTLOADER_START_ADDR = 0x08000000; // BOOT起始地址 constexpr u32 APPLATEST_START_ADDR = 0x08011000; // APP起始地址 constexpr u32 APPBACK_START_ADDR = 0x08005000; // APPBACK起始地址 constexpr u32 APP_MAX_SIZE = 0xC000; // 48KB constexpr u32 FMC_PAGE_SIZE = 0x400; // 1KB // BOOT 相关 constexpr u32 OTA_CONFIG_NUM = 6; constexpr u32 n_APP_LATEST_AVAL_ADDR = 0x0801D000; // 最新APP可用地址 constexpr u32 n_APP_BACKUP_AVAL_ADDR = 0x0801D004; // 备份APP可用地址 constexpr u32 n_APP_LATEST_EN_ADDR = 0x0801D008; // 最新APP激活 constexpr u32 n_APP_BACKUP_EN_ADDR = 0x0801D00C; // 备份APP激活 constexpr u32 n_APP_LATEST_CHECK_ADDR = 0x0801D010; // 最新APP校验 constexpr u32 n_APP_BACKUP_CHECK_ADDR = 0x0801D014; // 备份APP校验 constexpr u32 OTA_NOT_AVAL = 0xFFFFFFFF; constexpr u32 OTA_AVAL = 0x00000000; // 全零表示可用 constexpr u32 FLASH_EEPROM_OK = 0; constexpr u32 FLASH_EEPROM_ERROR = 1; // CANFD配置 constexpr u32 CANFD_OTA_REQ_ID = 0x00000100; constexpr u32 CANFD_OTA_DATA_ID = 0x00000101; constexpr u32 CANFD_OTA_ACK_ID = 0x00000102; constexpr u32 CANFD_OTA_WAIT_ID = 0x00000103; constexpr u32 CANFD_OTA_CANCEL_ID = 0x00000000; // 设备唯一ID寄存器地址 (GD32C10x系列) constexpr u32 DEVICE_SERIAL_ADDR_MSB = 0x1FFFF7E8; // 最高32位 constexpr u32 DEVICE_SERIAL_ADDR_MID = 0x1FFFF7EC; // 中间32位 constexpr u32 DEVICE_SERIAL_ADDR_LSB = 0x1FFFF7F0; // 最低32位 // CANFD数据段最大64字节,我们用1字节序号 + 48字节数据 + 1字节CRC校验 constexpr u32 OTA_PACKET_SIZE = 48; // 定义一个联合体类型用于float和byte数组之间的转换 typedef union { u32 u; u8 b[4]; } u32_union_t; // 全局变量(需在安全区域存储) constexpr uint8_t K_master[16] = {0x01, 0x23, 0x45, 0x67, 0x89, 0xAB, 0xCD, 0xEF, 0xFE, 0xDC, 0xBA, 0x98, 0x76, 0x54, 0x32, 0x10}; // 预置主密钥 // 其他 constexpr u32 OTA_TIMEOUT = 10000; constexpr u8 SIZE_U32 = sizeof(uint32_t); constexpr u8 SIZE_FLOAT = sizeof(float); #endif