207 lines
		
	
	
		
			7.7 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			207 lines
		
	
	
		
			7.7 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_BRM_FLASH_H
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_FLASH_H
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* os shim includes */
							 | 
						||
| 
								 | 
							
								#include "os_types_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* iot common header files */
							 | 
						||
| 
								 | 
							
								#include "iot_config_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								extern "C" {
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/*----------------------------------------
							 | 
						||
| 
								 | 
							
								 *  brm flash layout shows like below
							 | 
						||
| 
								 | 
							
								 *----------------------------------------
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |     reserve for sg app      |  256k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |  non-volatile data region   |  32k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |   frozen recording region   |  54k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |          reserve1           |  10k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |   curve recording region    |  370k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |   misc recording region     |  40k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |   event recording region    |
							 | 
						||
| 
								 | 
							
								 *    | 1.qiedian - 4096 bytes      |
							 | 
						||
| 
								 | 
							
								 *    | 2.meter change - 4096 bytes |
							 | 
						||
| 
								 | 
							
								 *    | 3.power down - 4096 bytes   |  128k bytes
							 | 
						||
| 
								 | 
							
								 *    | 4.phase A uv - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 5.phase B uv - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 6.phase C uv - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 7.phase A ov - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 8.phase B ov - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 9.phase C ov - 4096 bytes   |
							 | 
						||
| 
								 | 
							
								 *    | 10.phase A pf - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 11.phase B pf - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 12.phase C pf - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 13.phase A oc - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 14.phase B oc - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 15.phase C oc - 4096 bytes  |
							 | 
						||
| 
								 | 
							
								 *    | 16.unbalance v - 4096 bytes |
							 | 
						||
| 
								 | 
							
								 *    |    total use 65536 bytes    |
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |          reserve2           |  32k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |        stat_region          |
							 | 
						||
| 
								 | 
							
								 *    | 1.day stat - 7680 bytes     |  16k bytes
							 | 
						||
| 
								 | 
							
								 *    |    total use 7680 bytes     |
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |     debug info region       |  18k bytes
							 | 
						||
| 
								 | 
							
								 *    | 1.tsfm debug info - 4096    |
							 | 
						||
| 
								 | 
							
								 *    | 2. todo                     |
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |branch info recording region |  64k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |          reserve3           |  4k bytes
							 | 
						||
| 
								 | 
							
								 *    |                             |
							 | 
						||
| 
								 | 
							
								 *    |-----------------------------|
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of sg app region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_SG_REGION_START      0x00
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_SG_REGION_SIZE       (256 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_SG_REGION_END        \
							 | 
						||
| 
								 | 
							
								        IOT_BRM_SG_REGION_START + IOT_BRM_SG_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of non-volatile data region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_NV_REGION_START      IOT_BRM_SG_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_NV_REGION_SIZE       (32 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_NV_REGION_END        \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_NV_REGION_START + IOT_BRM_NV_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of frozen recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_FROZEN_REGION_START  IOT_BRM_NV_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_FROZEN_REGION_SIZE   (54 *1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_FROZEN_REGION_END        \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_FROZEN_REGION_START + IOT_BRM_FROZEN_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_RESERVE_SIZE1        (10 * 1024)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of curve recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_CURVE_REGION_START      \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_FROZEN_REGION_END + IOT_BRM_RESERVE_SIZE1
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_CURVE_REGION_SIZE    (370 *1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_CURVE_REGION_END        \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_CURVE_REGION_START + IOT_BRM_CURVE_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of miscellaneous recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_MISC_REC_REGION_START   IOT_BRM_CURVE_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_MISC_REC_REGION_SIZE (40 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_MISC_REC_REGION_END     \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_MISC_REC_REGION_START + IOT_BRM_MISC_REC_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of evt recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_EVT_REGION_START        IOT_BRM_MISC_REC_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_EVT_REGION_SIZE    (128  *1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_EVT_REGION_END          \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_EVT_REGION_START + IOT_BRM_EVT_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_RESERVE_SIZE2        (32 * 1024)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of stat recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_STAT_REC_REGION_START      \
							 | 
						||
| 
								 | 
							
								    IOT_BRM_EVT_REGION_END + IOT_BRM_RESERVE_SIZE2
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_STAT_REC_REGION_SIZE  (16 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_STAT_REC_REGION_END        \
							 | 
						||
| 
								 | 
							
								    (IOT_BRM_STAT_REC_REGION_START + IOT_BRM_STAT_REC_REGION_SIZE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of debug recording region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_DBG_REC_REGION_START  IOT_BRM_STAT_REC_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_DBG_REC_REGION_SIZE   (18 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_DBG_REC_REGION_END    \
							 | 
						||
| 
								 | 
							
								    (IOT_BRM_DBG_REC_REGION_START + IOT_BRM_DBG_REC_REGION_SIZE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* define the start, size, and end of information recode region */
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_BR_RECV_REGION_START  IOT_BRM_DBG_REC_REGION_END
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_BR_RECV_REGION_SIZE   (64 * 1024)
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_BR_RECV_REGION_END        \
							 | 
						||
| 
								 | 
							
								        IOT_BRM_BR_RECV_REGION_START + IOT_BRM_BR_RECV_REGION_SIZE
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#define IOT_BRM_RESERVE_SIZE3        (4 * 1024)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#if (IOT_BRM_ENABLE && PLC_SUPPORT_STA_ROLE)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief: iot_brm_flash_init() - initialization flash.
							 | 
						||
| 
								 | 
							
								 * @retval: ERR_OK - success, otherwise - see eeeor code.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								uint8_t iot_brm_flash_init(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief: iot_brm_flash_deinit() - deinitialization flash.
							 | 
						||
| 
								 | 
							
								 */
							 | 
						||
| 
								 | 
							
								void iot_brm_flash_deinit(void);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief: iot_brm_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_brm_flash_read(uint32_t pos, uint8_t *buf,
							 | 
						||
| 
								 | 
							
								    uint32_t cnt);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/**
							 | 
						||
| 
								 | 
							
								 * @brief: iot_brm_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_brm_flash_write(uint32_t pos, uint8_t *buf,
							 | 
						||
| 
								 | 
							
								    uint32_t cnt);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#ifdef __cplusplus
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								#endif
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif /* IOT_BRM_ENABLE && PLC_SUPPORT_STA_ROLE */
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#endif  /* IOT_BRM_FLASH_H */
							 |