125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			125 lines
		
	
	
		
			4.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/****************************************************************************
 | 
						|
 | 
						|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
 | 
						|
 | 
						|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
 | 
						|
be copied by any method or incorporated into another program without
 | 
						|
the express written consent of Aerospace C.Power. This Information or any portion
 | 
						|
thereof remains the property of Aerospace C.Power. The Information contained herein
 | 
						|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
 | 
						|
liability for its use in any way and conveys no license or title under
 | 
						|
any patent or copyright and makes no representation or warranty that this
 | 
						|
Information is free from patent or copyright infringement.
 | 
						|
 | 
						|
****************************************************************************/
 | 
						|
#ifndef __IOT_BSRM_FLASH_H
 | 
						|
#define __IOT_BSRM_FLASH_H
 | 
						|
 | 
						|
/* os shim includes */
 | 
						|
#include "os_types_api.h"
 | 
						|
 | 
						|
/* iot common header files */
 | 
						|
#include "iot_config_api.h"
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
extern "C" {
 | 
						|
#endif
 | 
						|
 | 
						|
/*----------------------------------------
 | 
						|
 *  bsrm flash layout shows like below
 | 
						|
 *----------------------------------------
 | 
						|
 *    |------------------------------|
 | 
						|
 *    |                              |
 | 
						|
 *    |      non-volatile data       |  4k bytes
 | 
						|
 *    |                              |
 | 
						|
 *    |------------------------------|
 | 
						|
 *    |                              |
 | 
						|
 *    | branch info recording region |  256k bytes
 | 
						|
 *    |                              |
 | 
						|
 *    |------------------------------|
 | 
						|
 *    |                              |
 | 
						|
 *    |          reserved            |  32k bytes
 | 
						|
 *    |                              |
 | 
						|
 *    |------------------------------|
 | 
						|
 *    |                              |
 | 
						|
 *    |     branch event region      |  256k bytes
 | 
						|
 *    |                              |
 | 
						|
 *    |------------------------------|
 | 
						|
 */
 | 
						|
 | 
						|
#if (IOT_BSRM_MODE == IOT_BSRM_MODE_CUS_APP)
 | 
						|
/* define the start, size, and end of sg app region */
 | 
						|
#define IOT_BSRM_SG_REGION_START        0x00
 | 
						|
#define IOT_BSRM_SG_REGION_SIZE         (256 * 1024)
 | 
						|
#define IOT_BSRM_SG_REGION_END        \
 | 
						|
        IOT_BSRM_SG_REGION_START + IOT_BSRM_SG_REGION_SIZE
 | 
						|
#else
 | 
						|
#define IOT_BSRM_SG_REGION_END              0
 | 
						|
#endif
 | 
						|
 | 
						|
/* define the start, size, and end of non-volatile data region */
 | 
						|
#define IOT_BSRM_NV_REGION_START            IOT_BSRM_SG_REGION_END
 | 
						|
#define IOT_BSRM_NV_REGION_SIZE             (4 * 1024)
 | 
						|
#define IOT_BSRM_NV_REGION_END        \
 | 
						|
        IOT_BSRM_NV_REGION_START + IOT_BSRM_NV_REGION_SIZE
 | 
						|
 | 
						|
/* define the start, size, and end of information recode region */
 | 
						|
#define IOT_BSRM_INFO_REC_REGION_START      IOT_BSRM_NV_REGION_END
 | 
						|
#define IOT_BSRM_INFO_REC_REGION_SIZE       (256 * 1024)
 | 
						|
#define IOT_BSRM_INFO_REC_REGION_END        \
 | 
						|
        IOT_BSRM_INFO_REC_REGION_START + IOT_BSRM_INFO_REC_REGION_SIZE
 | 
						|
 | 
						|
/* reserved */
 | 
						|
#define IOT_BSRM_RESERVED_REGION_START      IOT_BSRM_INFO_REC_REGION_END
 | 
						|
#define IOT_BSRM_RESERVED_REGION_SIZE       (32 * 1024)
 | 
						|
#define IOT_BSRM_RESERVED_REGION_END        \
 | 
						|
            IOT_BSRM_RESERVED_REGION_START + IOT_BSRM_RESERVED_REGION_SIZE
 | 
						|
 | 
						|
/* define the start, size, and end of information recode region */
 | 
						|
#define IOT_BSRM_BRANCH_EVT_REGION_START    IOT_BSRM_RESERVED_REGION_END
 | 
						|
#define IOT_BSRM_BRANCH_EVT_REGION_SIZE     (256 * 1024)
 | 
						|
#define IOT_BSRM_BRANCH_EVT_REGION_END      \
 | 
						|
        IOT_BSRM_BRANCH_EVT_REGION_START + IOT_BSRM_BRANCH_EVT_REGION_SIZE
 | 
						|
 | 
						|
#if IOT_BSRM_MODE
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief: iot_bsrm_flash_init() - initialization flash.
 | 
						|
 * @retval: ERR_OK - success, otherwise - see eeeor code.
 | 
						|
 */
 | 
						|
uint8_t iot_bsrm_flash_init(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief: iot_bsrm_flash_deinit() - deinitialization flash.
 | 
						|
 */
 | 
						|
void iot_bsrm_flash_deinit(void);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief: iot_bsrm_flash_read() - read data from flash.
 | 
						|
 * @param pos: the starting position of reading.
 | 
						|
 * @param buf: data buffer used to return read data.
 | 
						|
 * @param cnt: number of data to be read, uint is byte.
 | 
						|
 * @retval: ERR_OK - success, otherwise - see eeeor code.
 | 
						|
 */
 | 
						|
uint8_t iot_bsrm_flash_read(uint32_t pos, uint8_t *buf,
 | 
						|
    uint32_t cnt);
 | 
						|
 | 
						|
/**
 | 
						|
 * @brief: iot_bsrm_flash_write() - write data to flash.
 | 
						|
 * @param pos: the starting position of write.
 | 
						|
 * @param buf: pointer to the data buffer to be written.
 | 
						|
 * @param cnt: number of data to be written, uint is byte.
 | 
						|
 * @retval: ERR_OK - success, otherwise - see eeeor code.
 | 
						|
 */
 | 
						|
uint8_t iot_bsrm_flash_write(uint32_t pos, uint8_t *buf,
 | 
						|
    uint32_t cnt);
 | 
						|
 | 
						|
#endif /* IOT_BSRM_MODE */
 | 
						|
 | 
						|
#ifdef __cplusplus
 | 
						|
}
 | 
						|
#endif
 | 
						|
 | 
						|
#endif  /* __IOT_BSRM_FLASH_H */
 | 
						|
 |