117 lines
3.1 KiB
C
117 lines
3.1 KiB
C
|
|
|
|||
|
|
#ifndef __STIAP_H__
|
|||
|
|
#define __STIAP_H__
|
|||
|
|
|
|||
|
|
#include "config.h"
|
|||
|
|
#include "stflash.h"
|
|||
|
|
#include "stapp.h"
|
|||
|
|
|
|||
|
|
#if (APP_SAVE_TO == APP_SAVE_NORFLASH)
|
|||
|
|
#include "norflash.h"
|
|||
|
|
#elif (APP_SAVE_TO == APP_SAVE_EXRAM)
|
|||
|
|
#include "corefmc.h"
|
|||
|
|
#endif
|
|||
|
|
//-------------------------------------------------------------------------------
|
|||
|
|
/*
|
|||
|
|
iap <EFBFBD><EFBFBD><EFBFBD>Ƴ<EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
ͨ<EFBFBD><EFBFBD> bootloader <EFBFBD><EFBFBD><EFBFBD><EFBFBD> app <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
֧<EFBFBD><EFBFBD> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ݵ<EFBFBD> norflash exram st-flash <EFBFBD><EFBFBD>Ȼ<EFBFBD><EFBFBD>д<EFBFBD><EFBFBD>app<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
#if (APP_SAVE_TO == APP_SAVE_NORFLASH)
|
|||
|
|
|
|||
|
|
#define NOR_SAVE_BASE (SNF_UPDATE_BEGIN) // NORflash<73>д<EFBFBD><D0B4><EFBFBD>IAP<41><50><EFBFBD>ݵĻ<DDB5><C4BB><EFBFBD>ַ = 32MB-512KB
|
|||
|
|
#define NOR_SAVE_SIZE (SNF_UPDATE_SIZE) // NORflash<73>д<EFBFBD><D0B4><EFBFBD>IAP<41><50><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>С
|
|||
|
|
|
|||
|
|
#define NOR_SAVE_END (NOR_SAVE_BASE+NOR_SAVE_SIZE)
|
|||
|
|
|
|||
|
|
#define NOR_MARK_ADDR (NOR_SAVE_BASE) // NORflash<73>д<EFBFBD><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־<EFBFBD><D6BE>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>1K
|
|||
|
|
#define NOR_APP_ADDR (NOR_SAVE_BASE+STM32_BOOT_SIZE) // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>NORflash<73><68>Ӧ<EFBFBD>ó<EFBFBD><C3B3><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|||
|
|
|
|||
|
|
#define MASK_BUF_LEN 0x80
|
|||
|
|
|
|||
|
|
|
|||
|
|
#define APP_SAVE_BASE NOR_SAVE_BASE
|
|||
|
|
#define APP_ADDR_BEG NOR_APP_ADDR
|
|||
|
|
#define APP_MARK_ADDR NOR_MARK_ADDR
|
|||
|
|
|
|||
|
|
|
|||
|
|
#elif (APP_SAVE_TO == APP_SAVE_EXRAM)
|
|||
|
|
|
|||
|
|
#define EXRAM_SAVE_BASE CORE_SDRAM2_ADDR_BEG //
|
|||
|
|
|
|||
|
|
#define EXRAM_APP_ADDR (EXRAM_SAVE_BASE + STM32_BOOT_SIZE) // APP <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ
|
|||
|
|
#define TMP_SEC_ADDR EXRAM_SAVE_BASE // <20><>ʱ<EFBFBD><CAB1><EFBFBD>ݴ洢<DDB4><E6B4A2>ַ
|
|||
|
|
#define MAX_TMP_SIZE (STM32_BOOT_SIZE) // STM32_BOOT_SIZE
|
|||
|
|
|
|||
|
|
#define EXRAM_MARK_ADDR TMP_SEC_ADDR
|
|||
|
|
|
|||
|
|
#define MASK_BUF_LEN 0x80
|
|||
|
|
|
|||
|
|
#define APP_SAVE_BASE EXRAM_SAVE_BASE
|
|||
|
|
#define APP_ADDR_BEG EXRAM_APP_ADDR
|
|||
|
|
#define APP_MARK_ADDR EXRAM_MARK_ADDR
|
|||
|
|
|
|||
|
|
#elif (APP_SAVE_TO == APP_SAVE_INFLASH)
|
|||
|
|
|
|||
|
|
#define INFLASH_SAVE_BASE STF_UPDATE_BEGIN
|
|||
|
|
|
|||
|
|
#define INFLASH_MARK_ADDR INFLASH_SAVE_BASE
|
|||
|
|
#define INFLASH_APP_ADDR (INFLASH_SAVE_BASE+MARK_SIZE)
|
|||
|
|
|
|||
|
|
#define MASK_BUF_LEN 0x80
|
|||
|
|
|
|||
|
|
#define APP_SAVE_BASE INFLASH_SAVE_BASE
|
|||
|
|
#define APP_ADDR_BEG INFLASH_APP_ADDR
|
|||
|
|
#define APP_MARK_ADDR INFLASH_MARK_ADDR
|
|||
|
|
#else
|
|||
|
|
|
|||
|
|
#define MASK_BUF_LEN 0x80
|
|||
|
|
#define APP_SAVE_BASE 0
|
|||
|
|
#define APP_ADDR_BEG 0
|
|||
|
|
#define APP_MARK_ADDR 0
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define IAPHEAD_LEN (1*1024)
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#define STM32_MARK "APP_CAN_UPDATE" // <20>ؼ<EFBFBD><D8BC><EFBFBD>
|
|||
|
|
#define APP_RIGHT "APP_FILE_RIGHT"
|
|||
|
|
|
|||
|
|
typedef struct
|
|||
|
|
{
|
|||
|
|
char upmask[MASK_BUF_LEN];
|
|||
|
|
u32 rdaddr; // <20><><EFBFBD>ݶ<EFBFBD>ȡƫ<C8A1>Ƶ<EFBFBD>ַ
|
|||
|
|
u32 wraddr; // <20><><EFBFBD><EFBFBD>д<EFBFBD><D0B4>ƫ<EFBFBD>Ƶ<EFBFBD>ַ
|
|||
|
|
u32 size; // <20><><EFBFBD>ݳ<EFBFBD><DDB3>ȣ<EFBFBD><C8A3>ֽ<EFBFBD><D6BD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
u32 wsize; // д<>볤<EFBFBD><EBB3A4>
|
|||
|
|
u32 appcheck; // app <20><><EFBFBD>ݵ<EFBFBD>У<EFBFBD><D0A3><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
u8 rev[IAPHEAD_LEN - MASK_BUF_LEN - 4*5 - 4];
|
|||
|
|
u32 checkcrc; // У<><D0A3>
|
|||
|
|
} __attribute__ ((packed)) IapHead;
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
//bootloader <20>ӿں<D3BF><DABA><EFBFBD>
|
|||
|
|
int UpdateApp(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ļ<EFBFBD>
|
|||
|
|
int JumpToApp(void); // ִ<><D6B4>flash<73><68><EFBFBD><EFBFBD><EFBFBD><EFBFBD>app<70><70><EFBFBD><EFBFBD>
|
|||
|
|
|
|||
|
|
//<2F><><EFBFBD><EFBFBD> <20>ӿں<D3BF><DABA><EFBFBD>
|
|||
|
|
void IAPCleanUpdateArea(void); // <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>norflash<73>Ŀ<EFBFBD>
|
|||
|
|
void IapWritePara(u32 rdAddr, u32 wrAddr, u32 len, u32 wlen, u32 check); // д<><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC>ַ<EFBFBD>ͳ<EFBFBD><CDB3>Ⱥ<EFBFBD><C8BA><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>־
|
|||
|
|
void IapRestartMcu(void); // STM32<33><32><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ
|
|||
|
|
|
|||
|
|
void CloseAllPeripheral(void);
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
|
|||
|
|
//--------------------------------------------------------------------
|
|||
|
|
|
|||
|
|
#endif
|
|||
|
|
|