#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);
|
|
|
void OTA_UpdataResetHandler(void);
|
|
|
|
|
#endif
|