314 lines
13 KiB
C
314 lines
13 KiB
C
/******************************************************************************
|
|
|
|
*(C) Copyright 2018 EIGENCOMM 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>
|
|
#if defined CHIP_EC616 || defined CHIP_EC616_Z0 || defined CHIP_EC616S || defined CHIP_EC626
|
|
#define FOTA_PLAT_SCT_ZI /*PLAT_BL_SCT_ZI*/
|
|
|
|
#if defined CHIP_EC616 || defined CHIP_EC616_Z0
|
|
#include "system_ec616.h"
|
|
#include "flash_ec616_rt.h"
|
|
#elif defined CHIP_EC616S
|
|
#include "system_ec616s.h"
|
|
#include "flash_ec616s_rt.h"
|
|
#elif defined CHIP_EC626
|
|
#include "system_ec626.h"
|
|
#include "flash_ec626_rt.h"
|
|
#endif
|
|
|
|
#ifdef FEATURE_FOTA_ENABLE
|
|
#include "common.h"
|
|
#else
|
|
#include "debug_trace.h"
|
|
#include "debug_log.h"
|
|
#endif
|
|
|
|
#else /* ec618/ec7xx/... */
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
#include "system_ec618.h"
|
|
#elif defined CHIP_EC718 || defined CHIP_EC716
|
|
#include "system_ec7xx.h"
|
|
#endif
|
|
|
|
#include "sctdef.h"
|
|
#include "flash_rt.h"
|
|
|
|
#ifdef FEATURE_FOTA_ENABLE
|
|
#include "common.h"
|
|
#else
|
|
#include DEBUG_LOG_HEADER_FILE
|
|
#endif
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
|
|
/*----------------------------------------------------------------------------*
|
|
* MACROS *
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
#ifdef FEATURE_BOOTLOADER_PROJECT_ENABLE
|
|
//#ifdef FEATURE_FOTA_ENABLE
|
|
#define FOTA_NVM_SECTOR_ERASE_MODE 1
|
|
|
|
//ap flash operation
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) BSP_QSPI_Erase_Sector_Safe(addr)
|
|
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) BSP_QSPI_Erase_32KBlk_Safe(addr)
|
|
#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)
|
|
#elif defined CHIP_EC718 || defined CHIP_EC716
|
|
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) FLASH_eraseSectorSafe(addr)
|
|
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) FLASH_erase32KBlkSafe(addr)
|
|
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) FLASH_writeBl(buf, addr, size)
|
|
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) FLASH_XIPRead(buf, addr, size)
|
|
#elif defined CHIP_EC626
|
|
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) FLASH_eraseSector(addr)
|
|
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) FLASH_eraseBlock(addr)
|
|
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) FLASH_write(buf, addr, size)
|
|
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) FLASH_XIPRead(buf, addr, size)
|
|
//#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) ImageGeneralRead(buf, addr, size)
|
|
#else
|
|
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) BSP_QSPI_Erase_Sector(addr)
|
|
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) BSP_QSPI_Erase_Block(addr)
|
|
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) BSP_QSPI_Write(buf, addr, size)
|
|
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) ImageGeneralRead(buf, addr, size)
|
|
#endif
|
|
|
|
|
|
//cp flash operation(share or dedicate cp flash)
|
|
#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 || defined CHIP_EC716
|
|
#ifdef TYPE_EC718H//dedicate cp flash
|
|
#define BSP_QSPI_ENABLE_CP_FLASH() CPFLASH_xipInit()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) CPFLASH_eraseSector(addr)
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) CPFLASH_eraseBlock(addr)
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) CPFLASH_write(buf, addr, size)
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) CPFLASH_read(buf, addr, size)
|
|
#else//share ap flash
|
|
#define BSP_QSPI_ENABLE_CP_FLASH()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) FLASH_eraseSectorSafe(addr)
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) FLASH_erase32KBlkSafe(addr)
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) FLASH_writeBl(buf, addr, size)
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) FLASH_XIPRead(buf, addr, size)
|
|
#endif
|
|
#else
|
|
#define BSP_QSPI_ENABLE_CP_FLASH()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) 1
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) 1
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) 1
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) 1
|
|
#endif
|
|
|
|
//nvram operation
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
#if 1
|
|
#define NVRAM_CHECK_VALID() 1
|
|
#define NVRAM_CHECK_FAC_VALID() 1
|
|
#define NVRAM_SAVE_TO_FAC() 0
|
|
#else
|
|
#define NVRAM_CHECK_VALID() nvramChkValid()
|
|
#define NVRAM_CHECK_FAC_VALID() nvramChkFacValid()
|
|
#define NVRAM_SAVE_TO_FAC() nvramSave2Fac()
|
|
#endif
|
|
#define NVRAM_RESTORE_FROM_FAC() nvramAfterInit()
|
|
#elif defined CHIP_EC718 || defined CHIP_EC716
|
|
#define NVRAM_CHECK_VALID() nvramCheckNvValid()
|
|
#define NVRAM_CHECK_FAC_VALID() nvramCheckFacNvValid()
|
|
#define NVRAM_SAVE_TO_FAC() nvramSave2Fac()
|
|
#define NVRAM_RESTORE_FROM_FAC() nvramAfterInit()
|
|
#elif defined CHIP_EC626
|
|
#define NVRAM_CHECK_VALID() nvram_chk_valid()
|
|
#define NVRAM_CHECK_FAC_VALID() nvram_chk_fac_valid()
|
|
#define NVRAM_SAVE_TO_FAC() nvram_sav2fac()
|
|
#define NVRAM_RESTORE_FROM_FAC() nvram_after_init()
|
|
#else
|
|
#define NVRAM_CHECK_VALID() nvram_chk_valid()
|
|
#define NVRAM_CHECK_FAC_VALID() nvram_chk_fac_valid()
|
|
#define NVRAM_SAVE_TO_FAC() nvram_sav2fac()
|
|
#define NVRAM_RESTORE_FROM_FAC() nvram_after_init()
|
|
#endif
|
|
|
|
#else
|
|
#define FOTA_NVM_SECTOR_ERASE_MODE 0
|
|
|
|
//ap flash operation
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
#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)
|
|
#elif defined CHIP_EC718 || defined CHIP_EC716
|
|
#define BSP_QSPI_ERASE_AP_FLASH(addr, size) FLASH_eraseSafe(addr, size)
|
|
#define BSP_QSPI_ERASE_AP_FLASH_32K(addr, size) FLASH_eraseSafe(addr, size)
|
|
#define BSP_QSPI_WRITE_AP_FLASH(buf, addr, size) FLASH_writeSafe(buf, addr, size)
|
|
#define BSP_QSPI_READ_AP_FLASH(buf, addr, size) FLASH_XIPRead(buf, addr, size)
|
|
#elif defined CHIP_EC626
|
|
#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)
|
|
#else
|
|
#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)
|
|
#endif
|
|
|
|
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
#define BSP_QSPI_ENABLE_CP_FLASH() CPXIP_Enable()
|
|
#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 || defined CHIP_EC716
|
|
#ifdef TYPE_EC718H
|
|
#define BSP_QSPI_ENABLE_CP_FLASH() CPFLASH_xipInit()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) CPFLASH_eraseSector(addr)
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) CPFLASH_eraseBlock(addr)
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) CPFLASH_write(buf, addr, size)
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) CPFLASH_read(buf, addr, size)
|
|
#else//share ap flash
|
|
#define BSP_QSPI_ENABLE_CP_FLASH()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) FLASH_eraseSafe(addr, size)
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) FLASH_eraseSafe(addr, size)
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) FLASH_writeSafe(buf, addr, size)
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) FLASH_XIPRead(buf, addr, size)
|
|
#endif
|
|
#else
|
|
#define BSP_QSPI_ENABLE_CP_FLASH()
|
|
#define BSP_QSPI_DISABLE_CP_FLASH()
|
|
#define BSP_QSPI_ERASE_CP_FLASH(addr, size) 1
|
|
#define BSP_QSPI_ERASE_CP_FLASH_32K(addr, size) 1
|
|
#define BSP_QSPI_WRITE_CP_FLASH(buf, addr, size) 1
|
|
#define BSP_QSPI_READ_CP_FLASH(buf, addr, size) 1
|
|
#endif
|
|
|
|
//nvram operation
|
|
#define NVRAM_CHECK_VALID() 1
|
|
#define NVRAM_CHECK_FAC_VALID() 1
|
|
#define NVRAM_SAVE_TO_FAC() 0
|
|
#define NVRAM_RESTORE_FROM_FAC() //nvramAfterInit()
|
|
|
|
#endif
|
|
|
|
|
|
/*----------------------------------------------------------------------------*
|
|
* DATA TYPE DEFINITION *
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
|
|
/*----------------------------------------------------------------------------*
|
|
* GLOBAL FUNCTIONS DECLEARATION *
|
|
*----------------------------------------------------------------------------*/
|
|
|
|
|
|
#if defined CHIP_EC618 || defined CHIP_EC618_Z0
|
|
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 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);
|
|
|
|
extern uint8_t nvramChkValid(void);
|
|
extern uint8_t nvramChkFacValid(void);
|
|
extern uint32_t nvramSave2Fac(void);
|
|
extern void nvramAfterInit(void);
|
|
|
|
#elif defined CHIP_EC718 || defined CHIP_EC716
|
|
|
|
extern uint8_t FLASH_XIPRead(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
|
|
extern uint8_t FLASH_writeBl(uint8_t* pData, uint32_t WriteAddr, uint32_t Size);
|
|
extern uint8_t FLASH_eraseSectorSafe(uint32_t SectorAddress);
|
|
extern uint8_t FLASH_erase32KBlkSafe(uint32_t SectorAddress);
|
|
|
|
extern uint8_t CPFLASH_read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
|
|
extern uint8_t CPFLASH_write(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
|
|
extern uint8_t CPFLASH_eraseSector(uint32_t SectorAddress);
|
|
extern uint8_t CPFLASH_eraseBlock(uint32_t BlockAddress);
|
|
extern uint8_t CPFLASH_xipInit( void );
|
|
|
|
extern uint32_t nvramCheckNvValid(void);
|
|
extern uint32_t nvramCheckFacNvValid(void);
|
|
extern uint32_t nvramSave2Fac(void);
|
|
extern void nvramAfterInit(void);
|
|
|
|
#elif defined CHIP_EC626
|
|
|
|
//extern uint32_t ImageGeneralRead(uint8_t * pData, uint32_t ReadAddr, uint32_t Size);
|
|
extern uint8_t FLASH_XIPRead(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
|
|
extern uint8_t FLASH_write(uint8_t* pData, uint32_t WriteAddr, uint32_t Size);
|
|
extern uint8_t FLASH_eraseSector(uint32_t BlockAddress);
|
|
extern uint8_t FLASH_eraseBlock(uint32_t BlockAddress);
|
|
|
|
extern uint8_t nvram_chk_valid(void);
|
|
extern uint8_t nvram_chk_fac_valid(void);
|
|
extern uint32_t nvram_sav2fac(void);
|
|
extern void nvram_after_init(void);
|
|
|
|
#else
|
|
|
|
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 uint32_t ImageGeneralRead(uint8_t * pData, uint32_t ReadAddr, uint32_t Size);
|
|
//extern uint8_t BSP_QSPI_Read(uint8_t* pData, uint32_t ReadAddr, uint32_t Size);
|
|
|
|
extern uint8_t nvram_chk_valid(void);
|
|
extern uint8_t nvram_chk_fac_valid(void);
|
|
extern uint32_t nvram_sav2fac(void);
|
|
extern void nvram_after_init(void);
|
|
|
|
#endif
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
#endif
|
|
|