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 */
 | ||
|  | 
 |