更新硬件SDK

This commit is contained in:
kerwincui
2023-03-04 03:44:56 +08:00
parent dcdf6e1b7c
commit e39d3d2f03
1900 changed files with 663153 additions and 0 deletions

View File

@@ -0,0 +1,26 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_chksum.h
*
* Description:
*
* History:
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_CHKSUM_H
#define FOTA_CHKSUM_H
int32_t fotaInitChksum(uint8_t flags, void *args);
int32_t fotaDeinitChksum(uint8_t flags, void *args);
int32_t fotaCalcChksum(uint8_t flags, void *args);
#endif

View File

@@ -0,0 +1,49 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_custom.h
*
* Description:
*
* History: 2021/10/24 created by xuwang
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_CUSTOM_H
#define FOTA_CUSTOM_H
/*----------------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*
* MACROS *
*----------------------------------------------------------------------------*/
/* Is there a custmized app image? */
//#define FOTA_CUST_APP_ENABLE
/*----------------------------------------------------------------------------*
* DATA TYPE DEFINITION *
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*
* GLOBAL FUNCTIONS DECLEARATION *
*----------------------------------------------------------------------------*/
int32_t fotaDoExtension(uint8_t flags, void *args);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,28 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_mem.h
*
* Description:
*
* History:
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_MEM_H
#define FOTA_MEM_H
int32_t fotaInitMem(uint8_t *buf, uint32_t size);
void* fotaAllocMem(uint32_t size);
void fotaFreeMem(void *buf);
#endif

View File

@@ -0,0 +1,144 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_nvm.h
*
* Description:
*
* History: 2021/10/24 created by xuwang
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_NVM_H
#define FOTA_NVM_H
/*----------------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------------*/
#include "fota_pub.h"
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------*
* MACROS *
*----------------------------------------------------------------------------*/
/* will file system is enabled? */
//#define FOTA_NVM_FS_ENABLE
#define fotaNvmClearDelta(offset, len) fotaNvmClear(FOTA_NVM_ZONE_DELTA, offset, len)
#define fotaNvmWriteDelta(offset, buf, len) fotaNvmWrite(FOTA_NVM_ZONE_DELTA, offset, buf, len)
#define fotaNvmReadDelta(offset, buf, len) fotaNvmRead(FOTA_NVM_ZONE_DELTA, offset, buf, len)
#define fotaNvmGetDeltaSize(exclOvhd) fotaNvmGetSize(FOTA_NVM_ZONE_DELTA, exclOvhd)
/*----------------------------------------------------------------------------*
* DATA TYPE DEFINITION *
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*
* GLOBAL FUNCTIONS DECLEARATION *
*----------------------------------------------------------------------------*/
/**
* @brief fotaNvmInit(void)
* @details init fota nvm region
*
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmInit(void);
/**
* @brief fotaNvmDeinit(void)
* @details deinit fota nvm region
*
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmDeinit(void);
/**
* @brief fotaNvmClear(uint32_t zid, uint32_t offset, uint32_t len)
* @details clear fota nvm
*
* @param zid zone Id of fota nvm
* @param offset offset to starting address
* @param len size of the nvm to be cleared
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmClear(uint32_t zid, uint32_t offset, uint32_t len);
/**
* @brief fotaNvmWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen)
* @details write the content to fota nvm
*
* @param zid zone Id of fota nvm
* @param offset offset to starting address
* @param buf buffer to be written from
* @param bufLen size of the buffer to be written from
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmWrite(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen);
/**
* @brief fotaNvmRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen)
* @details read the content from fota nvm
*
* @param zid zone Id of fota nvm
* @param offset offset to starting address
* @param buf buffer to be read into
* @param bufLen size of the buffer to be read into
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmRead(uint32_t zid, uint32_t offset, uint8_t *buf, uint32_t bufLen);
/**
* @brief fotaNvmGetSize(uint32_t zid, uint8_t isOvhdExcl)
* @details get the nvm size of specific fota zone
*
* @param zid zone Id of fota nvm
* @param isOvhdExcl overhead size of the zone is excluded or not
* @return !0 succ; 0 failure.
*/
uint32_t fotaNvmGetSize(uint32_t zid, uint8_t isOvhdExcl);
/**
* @brief fotaNvmGetHandle(uint32_t zid)
* @details get the nvm handle(addr or fd) of specific fota zone
*
* @param zid zone Id of fota nvm
* @return !0 succ; 0 failure.
*/
int32_t fotaNvmGetHandle(uint32_t zid);
/**
* @brief fotaNvmGetExtras(uint32_t zid)
* @details get the nvm extras(xip addr or etc) of specific fota zone
*
* @param zid zone Id of fota nvm
* @return !0 succ; 0 failure.
*/
int32_t fotaNvmGetExtras(uint32_t zid);
/**
* @brief fotaNvmDoExtension(uint32_t flags, void *args)
* @details externsion api
*
* @param flags FotaNvmDoExtFlags_e
* @param args arguements of flags
* @return 0 succ; < 0 failure with errno.
*/
int32_t fotaNvmDoExtension(uint32_t flags, void *args);
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,51 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_utils.h
*
* Description:
*
* History:
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_UTILS_H
#define FOTA_UTILS_H
#include <stdio.h>
#include <stdint.h>
#include "fota_pub.h"
#define FOTA_BUF_SIZE_512 (512)
#define FOTA_BUF_SIZE_1K (1024)
#define FOTA_BUF_SIZE_2K (FOTA_BUF_SIZE_1K << 1)
#define FOTA_BUF_SIZE_4K (FOTA_BUF_SIZE_1K << 2)
#define FOTA_BUF_SIZE_8K (FOTA_BUF_SIZE_1K << 3)
#define FOTA_BUF_SIZE_16K (FOTA_BUF_SIZE_1K << 4)
#define FOTA_BUF_SIZE_32K (FOTA_BUF_SIZE_1K << 5)
#define FOTA_SHA256_HWALIGN_SIZE 64
#define FOTA_ABS(v) (((v) < 0) ? -(v) : (v))
#define FOTA_BITMASK(nbits,lsh) (((1 << (nbits)) - 1) << lsh)
#define FOTA_OFFSETOF(type, field) ((uint32_t)&(((type *)0)->field))
typedef int32_t (*buf_handle_callback)(uint8_t *buf, int32_t buflen);
uint32_t FOTA_convToZoneId(uint32_t fwAttr);
uint32_t FOTA_convToFwAttr(uint32_t zoneId);
int32_t FOTA_chksumFlashData(uint32_t zid, uint32_t offset, uint32_t size, uint8_t *hash, uint32_t isLast, buf_handle_callback buf_handle_cb);
void FOTA_dumpOctets(uint8_t *octs, int32_t len);
#endif

View File

@@ -0,0 +1,268 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_pub.h
*
* Description:
*
* History: 2021/10/24 created by xuwang
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_PUB_H
#define FOTA_PUB_H
/*----------------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------------*/
#include <stdio.h>
#include <stdint.h>
#include <string.h>
/*----------------------------------------------------------------------------*
* MACROS *
*----------------------------------------------------------------------------*/
#define FOTA_EOK 0
#define FOTA_EUNDEF -1 /* undefined error */
#define FOTA_EARGS -2 /* arguments invalid */
#define FOTA_EBATT -3 /* battery low */
#define FOTA_EPAR -4 /* parchive invalid */
#define FOTA_EPARSZ -5 /* parchive size err */
#define FOTA_EFLQUERY -6 /* flash query fail */
#define FOTA_EFLERASE -7 /* flash erase fail */
#define FOTA_EFLWRITE -8 /* flash write fail */
#define FOTA_EFLREAD -9 /* flash read fail */
#define FOTA_EMINIT -10 /* memory init fail */
#define FOTA_EMALLOC -11 /* memory alloc fail */
#define FOTA_EMFREE -12 /* memory free fail */
#define FOTA_EPVER -13 /* parver uncompatible */
#define FOTA_EPMETH -14 /* pmethod unsupported */
#define FOTA_EFWNIDENT -15 /* fw non-identical */
#define FOTA_EPATCH -16 /* fw patch fail */
#define FOTA_EUNFOUND -17 /* item not found */
#define FOTA_EOVERFLOW -18 /* resource ran out */
#define FOTA_EPERM -19 /* scenario not permitted */
#define FOTA_ECHKSUM -20 /* checksum calc fail*/
#define FOTA_EDCONV -21 /* data convertion fail*/
#define FOTA_SHA256_HASH_LEN 32
#define FOTA_ALIGN_UP(x,sz) (((x) + ((sz) - 1)) & (~((sz) - 1)))
#define FOTA_ALIGN_DOWN(x,sz) ((x) & (~((sz) - 1)))
#define FOTA_TRACE(tag,fmt,args...) printf(fmt, ##args)
/*----------------------------------------------------------------------------*
* DATA TYPE DEFINITION *
*----------------------------------------------------------------------------*/
/*-definition of 'fwAttr' */
typedef enum
{
FOTA_FA_UNDEF = 0,
FOTA_FA_BL,
FOTA_FA_AP,
FOTA_FA_CP,
FOTA_FA_APP,
FOTA_FA_APP2,
FOTA_FA_APP3,
FOTA_FA_MAXNUM
}FotaFwAttr_e;
typedef enum
{
FOTA_NVM_ZONE_REMAP = 0, /* remap zone <rsvd for customers> */
FOTA_NVM_ZONE_DELTA, /* delta zone for downloading & patching */
FOTA_NVM_ZONE_BKUP,
FOTA_NVM_ZONE_BLU, /* bl updater <rsvd> */
FOTA_NVM_ZONE_AP,
FOTA_NVM_ZONE_CP,
FOTA_NVM_ZONE_APP,
FOTA_NVM_ZONE_APP2,
FOTA_NVM_ZONE_APP3,
FOTA_NVM_ZONE_MAXNUM,
FOTA_NVM_ZONE_UNDEF = 0xff
}FotaNvmZoneId_e;
typedef uint32_t FotaNvmZoneId_bm;
#define FOTA_NVM_BM_ZONE_DELTA (1 << FOTA_NVM_ZONE_DELTA)
#define FOTA_NVM_BM_ZONE_BKUP (1 << FOTA_NVM_ZONE_BKUP)
#define FOTA_NVM_BM_ZONE_BLU (1 << FOTA_NVM_ZONE_BLU)
#define FOTA_NVM_BM_ZONE_AP (1 << FOTA_NVM_ZONE_AP)
#define FOTA_NVM_BM_ZONE_CP (1 << FOTA_NVM_ZONE_CP)
#define FOTA_NVM_BM_ZONE_APP (1 << FOTA_NVM_ZONE_APP)
#define FOTA_NVM_BM_ZONE_APP2 (1 << FOTA_NVM_ZONE_APP2)
#define FOTA_NVM_BM_ZONE_APP3 (1 << FOTA_NVM_ZONE_APP3)
typedef enum
{
FOTA_CA_SHA256SUM = 0,
FOTA_CA_ALGO_MAXNUM
}FotaChksumAlgo_e;
/* FOTA_CA_SHA256SUM */
typedef struct
{
uint8_t *input;
uint8_t *output;
size_t inLen;
uint32_t isLast;
}FotaCaSha256Sum_t;
/* for fotaNvmDoExtension() */
typedef enum
{
FOTA_DEF_US_DELAY = 0,
FOTA_DEF_WDT_KICK,
FOTA_DEF_WDT_START,
FOTA_DEF_WDT_STOP,
FOTA_DEF_CHK_BATTERY,
FOTA_DEF_CHK_REMAP_ZONE,
FOTA_DEF_CHK_DELTA_STATE,
FOTA_DEF_CHK_BASE_IMAGE,
FOTA_DEF_CHK_TOTAL_PROGRESS,
FOTA_DEF_SET_DOWNLOAD_READY,
FOTA_DEF_SET_DOWNLOAD_OVER,
FOTA_DEF_RPT_DFU_PROGRESS,
FOTA_DEF_GET_DFU_PROGRESS,
FOTA_DEF_RPT_DFU_RESULT,
FOTA_DEF_SET_DFU_RESULT,
FOTA_DEF_GET_DFU_RESULT
}FotaDoExtensionFlags_e;
/* FOTA_DEF_US_DELAY */
typedef struct
{
uint32_t usec;
}FotaDefUsDelay_t;
/* FOTA_DEF_CHK_BATTERY */
typedef struct
{
uint8_t isBattLow; /* 0/1 */
uint8_t rsvd[3];
}FotaDefChkBattery_t;
/* FOTA_DEF_CHK_REMAP_ZONE */
typedef struct
{
uint8_t isEnable; /* 0/1 */
uint8_t rsvd[3];
}FotaDefChkRemapZone_t;
/* FOTA_DEF_CHK_DELTA_STATE */
typedef struct
{
uint8_t isValid; /* 0/1 */
uint8_t state; /* FotaDeltaChkState_e */
uint8_t rsvd[2];
}FotaDefChkDeltaState_t;
/* FOTA_DEF_CHK_BASE_IMAGE */
typedef struct
{
uint8_t isMatched; /* 0/1 */
uint8_t rsvd[3];
}FotaDefChkBaseImage_t;
typedef enum
{
FOTA_DPR_FREQ_HIGH = 1,
FOTA_DPR_FREQ_MEDIUM,
FOTA_DPR_FREQ_LOW
}FotaDfuProgRptFreq_e;
/* FOTA_DEF_CHK_TOTAL_PROGRESS
* FOTA_DEF_RPT_DFU_PROGRESS
* FOTA_DEF_GET_DFU_PROGRESS
*/
typedef struct
{
uint8_t pkgNum;
uint8_t pkgId;
uint16_t isTotal :1;
uint16_t rptFreq :2; /* FotaDfuProgRptFreq_e */
uint16_t percent :13;
}FotaDefDfuProgress_t;
typedef enum
{
FOTA_DCS_DELTA_CHECKOK = 0, /* no error */
FOTA_DCS_DELTA_UNFOUND,
FOTA_DCS_DELTA_PARTIAL,
FOTA_DCS_DELTA_INVALID,
FOTA_DCS_DELTA_UNMATCHB, /* unmatched base image */
FOTA_DCS_DELTA_UNMATCHN, /* unmatched new image */
FOTA_DCS_DELTA_PATCHFAIL, /* patching failure */
FOTA_DCS_DELTA_UNDEF
}FotaDeltaChkState_e;
typedef enum
{
FOTA_DRC_DFU_UNDEF = 0,
FOTA_DRC_DFU_SUCC = 1,
FOTA_DRC_DFU_FAIL = 99
}FotaDfuResultCode_e;
/* FOTA_DEF_SET_DFU_RESULT
* FOTA_DEF_GET_DFU_RESULT
*/
typedef struct
{
uint8_t dfuResult; /* FotaDfuResultCode_e */
uint8_t deltaState; /* FotaDeltaChkState_e */
uint8_t rsvd[2];
}FotaDefDfuResult_t;
/*
* definition of 'pmagic': ec-delta/diff-fw
*/
#define FOTA_PARCHIVE_MAGIC_0 0xEC
#define FOTA_PARCHIVE_MAGIC_1 0xDF
#define FOTA_CHECK_PAR_MAGIC(magic) \
(((FOTA_PARCHIVE_MAGIC_0 == ((uint8_t*)(magic))[0]) && \
(FOTA_PARCHIVE_MAGIC_1 == ((uint8_t*)(magic))[1])) ? 1 : 0)
typedef struct
{
uint8_t pmagic[2]; /* 0xEC,0xDF */
uint8_t rsvd[6];
uint32_t parLen; /* including hdr len */
uint8_t parHash[FOTA_SHA256_HASH_LEN];
uint8_t rsvd2[40];
}CustFotaParHdr_t;
typedef struct
{
uint32_t rsvd0 :5;
uint32_t fwAttr :3; /* FotaFwAttr_e */
uint32_t rsvd1 :24;
uint32_t pkgLen; /* including hdr len */
uint32_t rsvd2[3];
uint32_t baseFwSize;
uint8_t baseFwHash[FOTA_SHA256_HASH_LEN];
}CustFotaPkgHdr_t;
/*----------------------------------------------------------------------------*
* GLOBAL FUNCTIONS DECLEARATION *
*----------------------------------------------------------------------------*/
#ifdef __cplusplus
}
#endif
#endif

View File

@@ -0,0 +1,131 @@
/******************************************************************************
*(C) Copyright 2018 AirM2M International Ltd.
* All Rights Reserved
******************************************************************************
* Filename: fota_sal.h
*
* Description:
*
* History: 2021/10/24 created by xuwang
*
* Notes:
*
******************************************************************************/
#ifndef FOTA_SAL_H
#define FOTA_SAL_H
/*----------------------------------------------------------------------------*
* INCLUDES *
*----------------------------------------------------------------------------*/
#include <stdint.h>
#include "sctdef.h"
#ifdef FEATURE_FOTA_ENABLE
#include "common.h"
#else
#include "FreeRTOS.h"
#include DEBUG_LOG_HEADER_FILE
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*----------------------------------------------------------------------------*
* MACROS *
*----------------------------------------------------------------------------*/
#define FOTA_NVM_FLASH_ERASE_MIN_SIZE FOTA_BUF_SIZE_4K
#ifdef FEATURE_FOTA_ENABLE
#define FOTA_PLAT_SCT_ZI PLAT_BL_SCT_ZI
#define portTICK_RATE_MS (1)
#define FOTA_NVM_FLASH_ERASE_SIZE FOTA_BUF_SIZE_4K
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) BSP_QSPI_Erase_Sector_Safe(addr)//BSP_QSPI_Erase_Sector(addr)
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) BSP_QSPI_Erase_32KBlk_Safe(addr)
#elif defined CHIP_EC718
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) BSP_QSPI_Erase_Block(addr)
#endif
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) BSP_QSPI_Write(buf, addr, size)
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) BSP_QSPI_XIP_Read(buf, addr, size)//ImageGeneralRead(buf, addr, size)
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
#define BSP_QSPI_ENABLE_CP_FLASH() CPXIP_Enable()
#define BSP_QSPI_DISABLE_CP_FLASH() CPXIP_DeInit()
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) CPXIP_QSPI_Erase_Sector(addr)
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) CPXIP_QSPI_Erase_32Kblk(addr)
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) CPXIP_QSPI_Write(buf, addr, size)
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) CPXIP_QSPI_Read(buf, addr, size)
#elif defined CHIP_EC718
#define BSP_QSPI_ENABLE_CP_FLASH()
#define BSP_QSPI_DISABLE_CP_FLASH()
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) BSP_QSPI_Erase_Sector_Safe(addr)
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) BSP_QSPI_Erase_Block(addr)
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) BSP_QSPI_Write(buf, addr, size)
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) BSP_QSPI_XIP_Read(buf, addr, size)
#endif
#else
#define FOTA_PLAT_SCT_ZI
#define FOTA_NVM_FLASH_ERASE_SIZE FOTA_BUF_SIZE_32K
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) BSP_QSPI_Erase_Safe(addr, size)
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) BSP_QSPI_Erase_Safe(addr, size)
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) BSP_QSPI_Write_Safe(buf, addr, size)
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) BSP_QSPI_Read_Safe(buf, addr, size)
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
#define BSP_QSPI_ENABLE_CP_FLASH()
#define BSP_QSPI_DISABLE_CP_FLASH()
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) -1
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) -1
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) -1
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) CPXIP_QSPI_Read(buf, addr, size)
#elif defined CHIP_EC718
#define BSP_QSPI_ENABLE_CP_FLASH()
#define BSP_QSPI_DISABLE_CP_FLASH()
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) BSP_QSPI_Erase_Safe(addr, size)
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) BSP_QSPI_Erase_Safe(addr, size)
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) BSP_QSPI_Write_Safe(buf, addr, size)
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) BSP_QSPI_Read_Safe(buf, addr, size)
#endif
#endif
/*----------------------------------------------------------------------------*
* DATA TYPE DEFINITION *
*----------------------------------------------------------------------------*/
/*----------------------------------------------------------------------------*
* GLOBAL FUNCTIONS DECLEARATION *
*----------------------------------------------------------------------------*/
extern uint8_t BSP_QSPI_Erase_Sector_Safe(uint32_t SectorAddress);
extern uint8_t BSP_QSPI_Erase_32KBlk_Safe(uint32_t BlockAddress);
extern uint8_t BSP_QSPI_Erase_Sector(uint32_t SectorAddress);
extern uint8_t BSP_QSPI_Erase_Block(uint32_t BlockAddress);
extern uint8_t BSP_QSPI_Write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size);
extern uint8_t BSP_QSPI_XIP_Read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
//extern uint32_t ImageGeneralRead(uint8_t *pData,uint32_t ReadAddr, uint32_t Size);
extern void CPXIP_Enable(void);
extern void CPXIP_DeInit(void);
extern uint8_t CPXIP_QSPI_Erase_32Kblk(uint32_t SectorAddress);
extern uint8_t CPXIP_QSPI_Erase_Sector(uint32_t SectorAddress);
extern uint8_t CPXIP_QSPI_Write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size);
extern uint32_t CPXIP_QSPI_Read(uint8_t *pData,uint32_t ReadAddr, uint32_t Size);
#ifdef __cplusplus
}
#endif
#endif