optical/NxFuncs/stiap/stiap.h

117 lines
3.1 KiB
C
Raw Permalink Normal View History

2025-09-04 01:45:08 +00:00
#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