forked from SZV10X_Software/SZV103_FM33A0xxEV_SiZhu

jinlicong
2024-04-18 de0f427ee76ab84d3afb22c92a2b065b1ce06d3e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#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