update.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. /*******************************************************************************
  2. * File Name : update.h
  3. * Author : Sim
  4. * Date First Issued : 09/05/2024
  5. * Description : This file contains all the functions prototypes for the
  6. * update.
  7. ********************************************************************************
  8. * History:
  9. * 09/05/2024: V0.1
  10. *******************************************************************************/
  11. /* Define to prevent recursive inclusion -------------------------------------*/
  12. #ifndef _UPDATE_H
  13. #define _UPDATE_H
  14. /* Includes ------------------------------------------------------------------*/
  15. #include "image_header.h"
  16. /* Exported macro ------------------------------------------------------------*/
  17. #define UPDATE_MEDIA_SD 0
  18. #define UPDATE_MEDIA_USB 1
  19. #define UPDATE_MEDIA_UART 2
  20. #define UPDATE_STATUS_START 0
  21. #define UPDATE_STATUS_END 1
  22. #define FASTBOOT_SIZE_OFFSET 0x1C
  23. #define FASTBOOT_CHECKSUM_OFFSET 0x20
  24. /* Exported types ------------------------------------------------------------*/
  25. typedef enum {
  26. UPFILE_TYPE_LDR,
  27. UPFILE_TYPE_APP,
  28. UPFILE_TYPE_ANIMATION,
  29. UPFILE_TYPE_ROM,
  30. UPFILE_TYPE_MCU_IMAGE,
  31. UPFILE_TYPE_MCU_FB, /* fastboot */
  32. UPFILE_TYPE_NUM,
  33. } eUpfileType;
  34. extern const char *g_upfilename[UPFILE_TYPE_NUM];
  35. typedef enum {UM_SD, UM_USB} eUpdateMedia;
  36. typedef struct header_offset {
  37. u32 magic;
  38. u32 offset;
  39. u32 pagesize;
  40. u32 pagespblock;
  41. u32 fboffset;
  42. u32 reserved[2];
  43. u32 crc;
  44. } header_offset_t;
  45. typedef struct {
  46. u8 version;
  47. u8 cid;
  48. u16 marker;
  49. u32 img_pk_mod[64];
  50. u32 img_pk_exp;
  51. u32 rot_pk_mod[64];
  52. u32 rot_pk_exp;
  53. u32 key_sign[64];
  54. } ImageKeyCert;
  55. /* Exported functions ------------------------------------------------------- */
  56. header_offset_t *GetHeaderOff(void);
  57. u32 ReadHeaderOff(void);
  58. void SaveHeaderOff(void);
  59. unsigned int UPDATE_GetUpfileMaxSize(int filetype);
  60. u32 UPDATE_GetUpfileAddr(int filetype);
  61. int UPDATE_EraseData(u32 addr, u32 size);
  62. int UPDATE_EraseUpfile(int filetype);
  63. int UPDATE_WriteData(u32 addr, void *buf, u32 size);
  64. int UPDATE_ReadData(u32 addr, void *buf, u32 size);
  65. u32 UPDATE_CalcCrc(u32 addr, u32 size, u32 crc);
  66. int UPDATE_CheckApp(int in_flash, u32 app_addr);
  67. void UPDATE_SetAppValid(void);
  68. void UPDATE_ReadImageHeader(void);
  69. image_header_t *UPDATE_GetImageHeader(void);
  70. #endif /* _UPDATE_H */