#ifndef _BOOTLOADER_IAP_H_ #define _BOOTLOADER_IAP_H_ #include "define_all.h" //FM33A0¶¨Òå512×Ö½ÚΪҳ£¬2KBΪÉÈÇø //FLASHµØÖ·´Ó0x0000_0000 ~ 0x0008_0000£¨512KB£© //FLASHĬÈÏ´Ó0µØÖ·Æô¶¯£¬ÐèҪͨ¹ýbootÌø×ªµ½APP³ÌÐòµÄÆô¶¯µØÖ· //°ÑÉý¼¶µÄ³ÌÐò±¸·ÝÔÚÆ¬Íâflash£¬ÆäËûÅäÖÃÐÅÏ¢¡¢mapµÈÒÀÈ»´æÔÚÆ¬ÄÚflash£» //ƬÄÚflashµØÖ·¶¨Ò壬512KµÄ»°ÊÇ0x0008_0000 #define BOOTLOAD_PAGE_SIZE (512) //Ò³³¤¶È(×Ö½Ú) //²îÒì³ÌÐòmap±íÆðʼµØÖ·99K flash #define BOOTLOAD_DIFF_SECTOR_MAP_ADDRESS (0x18C00) //bootµØÖ·Îª0~99K #define BOOTLOAD_DIFF_MAP_LEN_MAX BOOTLOAD_PAGE_SIZE //Éý¼¶ÅäÖÃÐÅÏ¢ÆðʼµØÖ·99.5K flash #define BOOTLOAD_CONFIG_START_ADDRESS (BOOTLOAD_DIFF_SECTOR_MAP_ADDRESS + BOOTLOAD_DIFF_MAP_LEN_MAX) //Óû§³ÌÐòÆðʼµØÖ· 100K flash´¦,100K²»¹»µÄ»°ÐèÒª¼Ó´ó #define BOOTLOAD_USER_PROG_START_ADDRESS (0x19000) #define BOOTLOAD_USER_PROG_LEN_MAX (412 * 1024) //Óû§³ÌÐò×î´ó³¤¶È 412K //ƬÍâflashµØÖ·¶¨Òå,4MµÄ»°ÊÇ0x40_0000 #define BOOTLOAD_DIFF_PROG_START_ADDRESS (0x1000) //³ÌÐò±¸·ÝÇøÆðʼµØÖ·4K #define BOOTLOAD_DIFF_PROG_LEN_MAX BOOTLOAD_USER_PROG_LEN_MAX //²îÒì³ÌÐò×î´ó³¤¶È 412K #define BOOTLOAT_PARA_SIZE sizeof(BOOTLOAD_PARA_STRUCT) typedef struct { //Éý¼¶ÅäÖÃÐÅÏ¢ unsigned long diff_prog_start_addr;//²îÒì³ÌÐò´æ·ÅµØÖ· unsigned long diff_prog_length;//²îÒì³ÌÐò×Ö½ÚÊý(²»Ò»ÑùµÄÉÈÇø¸öÊý*512×Ö½Ú ) unsigned long diff_prog_crc16;//²îÒì³ÌÐòУÑéÂë unsigned long diff_prog_map_length;//³ÌÐò²îÒì±í×Ö½ÚÊý£¨map×î´ó512£¬¼´¿ÉÒÔ±íʾ512*8bit¸öÉÈÇø²»Í¬£¬ÓÃÓÚÖ¸³öµÚ¼¸¸öÉÈÇø²»Í¬£© unsigned long diff_prog_map_crc16;//³ÌÐò²îÒì±íУÑéÂë unsigned long user_porg_start_addr;//Óû§³ÌÐòÆðʼµØÖ· £¨Óû§³ÌÐòÆðʼµØÖ·£¬¼´BOOTLOAD_USER_PROG_START_ADDRESS£© unsigned long user_prog_length;//Óû§³ÌÐò×Ö½ÚÊý£¨¾ÉÓû§³ÌÐò³¤¶È£¬×ܹ²ËùÓÃÉÈÇøÊý*512£© unsigned long user_prog_crc16;//Óû§³ÌÐòУÑéÂë unsigned long new_prog_length;//гÌÐò×Ö½ÚÊý£¨ÐÂÓû§³ÌÐò³¤¶È£¬×ܹ²ËùÓÃÉÈÇøÊý*512£© unsigned long new_prog_crc16;//гÌÐòУÑéÂë unsigned long boot_update_flag;//Éý¼¶³ÌÐò±êÖ¾£¬ 0x12345678 Ϊ¿ÉÉý¼¶±êÖ¾£¬Éý¼¶³ÌÐòÒÑÍê³ÉУÑé¡£ }BOOTLOAD_PARA_STRUCT; extern BOOTLOAD_PARA_STRUCT bootload_para_g; ErrorStatus_STM32 BootLoader_IapConfigSetHander(uint8_t *pInputData,uint32_t data_len); ErrorStatus_STM32 BootLoader_IapDiffDataHandler(uint8_t *pInputData,uint32_t offset_addr,uint16_t data_len); ErrorStatus_STM32 BootLoader_IapConfigCheckHandler(void); ErrorStatus_STM32 BootLoader_IapDiffMapSetHandler(uint8_t *pInputData,uint32_t offset_addr,uint16_t data_len); ErrorStatus_STM32 BootLoader_IapConfigLzmaSetHander(uint8_t *pInputData,uint32_t data_len); void OTA_UpdataResetHandler(void); #endif