/******************************************************************************* * File Name : update.h * Author : Sim * Date First Issued : 09/05/2024 * Description : This file contains all the functions prototypes for the * update. ******************************************************************************** * History: * 09/05/2024: V0.1 *******************************************************************************/ /* Define to prevent recursive inclusion -------------------------------------*/ #ifndef _UPDATE_H #define _UPDATE_H /* Includes ------------------------------------------------------------------*/ #include "image_header.h" /* Exported macro ------------------------------------------------------------*/ #define UPDATE_MEDIA_SD 0 #define UPDATE_MEDIA_USB 1 #define UPDATE_MEDIA_UART 2 #define UPDATE_STATUS_START 0 #define UPDATE_STATUS_END 1 #define FASTBOOT_SIZE_OFFSET 0x1C #define FASTBOOT_CHECKSUM_OFFSET 0x20 /* Exported types ------------------------------------------------------------*/ typedef enum { UPFILE_TYPE_LDR, UPFILE_TYPE_APP, UPFILE_TYPE_ANIMATION, UPFILE_TYPE_ROM, UPFILE_TYPE_MCU_IMAGE, UPFILE_TYPE_MCU_FB, /* fastboot */ UPFILE_TYPE_NUM, } eUpfileType; extern const char *g_upfilename[UPFILE_TYPE_NUM]; typedef enum {UM_SD, UM_USB} eUpdateMedia; typedef struct header_offset { u32 magic; u32 offset; u32 pagesize; u32 pagespblock; u32 fboffset; u32 reserved[2]; u32 crc; } header_offset_t; typedef struct { u8 version; u8 cid; u16 marker; u32 img_pk_mod[64]; u32 img_pk_exp; u32 rot_pk_mod[64]; u32 rot_pk_exp; u32 key_sign[64]; } ImageKeyCert; /* Exported functions ------------------------------------------------------- */ header_offset_t *GetHeaderOff(void); u32 ReadHeaderOff(void); void SaveHeaderOff(void); unsigned int UPDATE_GetUpfileMaxSize(int filetype); u32 UPDATE_GetUpfileAddr(int filetype); int UPDATE_EraseData(u32 addr, u32 size); int UPDATE_EraseUpfile(int filetype); int UPDATE_WriteData(u32 addr, void *buf, u32 size); int UPDATE_ReadData(u32 addr, void *buf, u32 size); u32 UPDATE_CalcCrc(u32 addr, u32 size, u32 crc); int UPDATE_CheckApp(int in_flash, u32 app_addr); void UPDATE_SetAppValid(void); void UPDATE_ReadImageHeader(void); image_header_t *UPDATE_GetImageHeader(void); #endif /* _UPDATE_H */