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