#ifndef __UPDATE_H #define __UPDATE_H #include #include "bsp.h" #include "UartDebug.h" #define APP_START_FLAG 0x55AA5A5A #define APP_UPDATE_FLAG 0xA5A5AA55 #define FLASH_SECTOR_SIZE 0x200ul #define FLASH_BASE ((uint32_t)0x00000000) #define FLASH_SIZE (256u * FLASH_SECTOR_SIZE) #define SRAM_BASE ((uint32_t)0x20000000) #define RAM_SIZE 0x2000ul #define BOOT_ADDRESS FLASH_BASE #define BOOT_SIZE (20 * FLASH_SECTOR_SIZE) #define DEV_MAC_ADDRESS (BOOT_ADDRESS + BOOT_SIZE) //0x00002800 #define DEV_MAC_SIZE FLASH_SECTOR_SIZE #define APP_ADDRESS (DEV_MAC_ADDRESS + DEV_MAC_SIZE) #define BOOT_PARA_ADDRESS (0x0001FC00)//(FLASH_BASE + BOOT_SIZE) #define BOOT_PARA_SIZE (FLASH_SECTOR_SIZE) typedef struct { uint32_t AppFlag; uint32_t UpdateFlag; uint32_t PackageCnt; uint32_t AppSize; uint32_t Crc32Check; }BootPara_t, *BootPara; //主机下发升级请求载荷结构体 typedef struct { uint16_t PackageNum; uint32_t AppSize; uint32_t AppCrc32; }__attribute__ ((packed))UpDataRequset_t, *UDReq; //帧头结构体 typedef struct { uint8_t Header; uint8_t DevMac[6]; uint8_t Cmd; uint8_t PayloadLen; }__attribute__((packed))UpdateFrameHeader_t,*pUpdateFrameHeader; //输入接口函数定义,需根据接口重新定义 #define U_DBG_LOG(...) DBG_LOG(__VA_ARGS__) #define U_DELAY_MS(x) delay_ms(x) #define U_SYSTEM_TESET() SystemReset() #define SAVE_BOOT_PARA(addr) FlashWrite(BOOT_PARA_ADDRESS, addr, sizeof(BLPara) / 4) #define READ_BOOT_PARA(addr) FlashRead(BOOT_PARA_ADDRESS, addr, sizeof(BLPara) / 4) //输出接口 void Update(uint8_t *PayLoad); void UpdateInit(void); #endif