mirror of
https://gitee.com/beecue/fastbee.git
synced 2025-12-21 10:25:54 +08:00
更新硬件SDK
This commit is contained in:
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user