![]() |
CI130X SDK API手册
2.2.0
本手册用于描述CI130X SDK各个组件和驱动API
|
#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "ci_log.h"
#include "ci_nvdata_manage.h"
#include "ci_nvdata_port.h"
#include "ci130x_uart.h"
#include "FreeRTOS.h"
#include "task.h"
#include "semphr.h"
#include "sdk_default_config.h"
#include "romlib_runtime.h"
结构体 | |
struct | cinv_hotid_node_st |
struct | cinv_hotid_mang_t |
struct | cinv_mang_rec_t |
struct | cinv_feb_head_t |
struct | cinv_data_item_header_t |
类型定义 | |
typedef struct cinv_hotid_node_st | cinv_hotid_node_t |
枚举 | |
enum | cinv_feb_status_t { CINV_FEB_STATUS_ERASED = 0xFFFFFFFF, CINV_FEB_STATUS_EMPTY = 0xFFFFFEFE, CINV_FEB_STATUS_ACTIVED = 0xFFFFF8F8, CINV_FEB_STATUS_TRANSFERING = 0xFFFFF0F0 } |
enum | cinv_data_item_status_t { CINV_DATA_ITEM_STATUS_EMPTY = 0xFFFFFFFF, CINV_DATA_ITEM_STATUS_WRITING = 0xFEFEFEFE, CINV_DATA_ITEM_STATUS_VALID = 0xFCFCFCFC, CINV_DATA_ITEM_STATUS_TRANS = 0xF8F8F8F8, CINV_DATA_ITEM_STATUS_DELETE = 0xF0F0F0F0, CINV_DATA_ITEM_STATUS_ERROR = 0x00000000 } |
enum | item_deal_status_t { ITEM_DEAL_SUCESS, ITEM_DEAL_ERROR, ITEM_DEAL_FIND_ID_DONE } |
enum | item_buf_deal_status_t { ITEM_BUF_DEAL_SUCESS, ITEM_BUF_DEAL_ERROR, ITEM_BUF_DEAL_END } |
函数 | |
static void | poweroff_random_test (uint32_t pos) |
static bool | check_erased (const void *buf, int32_t len) |
check current buffer data is erased 更多... | |
static void | erase_feb (uint16_t blk_num) |
erased flash block, no check, 更多... | |
static void | check_and_erase_feb (uint16_t blk_num) |
first read,if already is erased, do nothing, else erase it 更多... | |
static cinv_hotid_node_t * | find_hotid_node (uint32_t id) |
static void | hotid_init (void) |
cinv_item_ret_t | cinv_register_hotid (uint32_t hot_id) |
register hotid. 更多... | |
static void | hotid_update (uint16_t blk_num, uint16_t off, uint32_t id) |
if nvdata item id in hot id array, update item address 更多... | |
static uint32_t | find_hotid (uint32_t id, uint16_t *blk_num) |
find hot id address 更多... | |
static uint32_t | calc_chk_sum (uint8_t *buf, uint16_t len) |
calculate the data checksum 更多... | |
static bool | write_item_status (uint16_t blk_num, uint16_t offset, cinv_data_item_status_t status) |
write nvdata item header status to flash, and verify 更多... | |
static bool | write_feb_status (uint16_t blk_num, cinv_feb_status_t status) |
write feb header status to flash, and verify 更多... | |
static bool | write_item (uint16_t blk_num, uint32_t id, uint16_t len, void *buf) |
writes an item to nvdata region 更多... | |
item_deal_status_t | reclaim_block_deal_flow (cinv_data_item_header_t *di_hdr, uint16_t *write_off, uint32_t old_id) |
item_deal_status_t | init_page_deal_flow (cinv_data_item_header_t *di_hdr, uint32_t blk_num, uint16_t off, uint16_t *lost) |
item_deal_status_t | init_page_id_deal_flow (cinv_data_item_header_t *di_hdr, uint32_t id, bool transid_valid, uint16_t *lost) |
static int32_t | traverse_feb (uint32_t func, uint32_t blk_num, uint32_t id, bool transid_valid) |
static int32_t | init_page_id (uint32_t blk_num, uint32_t id, bool transid_valid) |
static int32_t | init_page (uint32_t blk_num) |
static bool | reclaim_block (uint32_t blk_num, uint32_t old_id) |
reclaim a feb, valid item of this feb copy to reserved feb, then erased it and set this to reserved 更多... | |
static int32_t | init_item (uint32_t id, uint16_t len, void *buf) |
static uint16_t | find_item (uint32_t id, uint16_t *ret_blk, bool transid_valid) |
find a nvdata item, and return address 更多... | |
static uint16_t | find_id (uint32_t id, uint16_t *blk) |
void | cinv_init (uint32_t flash_addr, uint32_t size) |
初始化nvdata管理信息和nvdata区域 更多... | |
cinv_item_ret_t | cinv_item_init (uint32_t id, uint16_t len, void *buf) |
如果nvdata 项不存在,会创建和初始化传入的id参数项,在调用cinv_item_read()或cinv_item_write()函数前,必须先调用该函数。 更多... | |
cinv_item_ret_t | cinv_item_write (uint32_t id, uint16_t len, void *buf) |
将数据项写到nvdata中 更多... | |
cinv_item_ret_t | cinv_item_read (uint32_t id, uint16_t len, void *buf, uint16_t *real_len) |
从nvdata里读数据。该函数可以读nvdata项的全部内容或一部分。数据会拷贝到*buf数据指针,如果传入的长度大于实际长度,只会将实际长度的数据拷贝到*buf数据指针。 更多... | |
cinv_item_ret_t | cinv_item_delete (uint32_t id) |
删除nvdata里的数据项. 更多... | |
变量 | |
static uint8_t | cinv_rd_io_buf [(256)] |
static uint8_t | cinv_wr_io_buf [(256)] |
static cinv_hotid_mang_t | cinv_hotid_m = {NULL} |
static cinv_mang_rec_t | cinv_mang_r |
static uint32_t | g_flash_base_addr |
static uint16_t | g_feb_total_count |
static uint16_t | trans_blk = (0xffffu) |
static uint16_t | trans_off = (0xffffu) |
static uint32_t | trans_id |
struct cinv_hotid_node_st |
成员变量 | ||
---|---|---|
uint32_t | hot_id | |
uint16_t | id_blk | |
uint16_t | id_off | |
struct cinv_hotid_node_st * | next |
struct cinv_hotid_mang_t |
成员变量 | ||
---|---|---|
cinv_hotid_node_t * | head |
struct cinv_feb_head_t |
成员变量 | ||
---|---|---|
uint32_t | is_rev | |
uint32_t | magic | |
cinv_feb_status_t | status |
struct cinv_data_item_header_t |
成员变量 | ||
---|---|---|
uint8_t | buf[0] | |
uint32_t | chk_sum | |
uint32_t | id | |
uint32_t | len | |
cinv_data_item_status_t | status |
#define CINV_DATA_ITEM_MAX_LEN (CINV_IO_BUFFER_SIZE - sizeof(cinv_data_item_header_t)) |
#define CINV_DATA_ITEM_START_OFF (CINV_FEB_HEADER_OFFSET+CINV_FEB_HEADER_SIZE) |
#define CINV_DATA_ITEM_STATUS_OFF (0) |
#define CINV_FEB_HEADER_MAGIC_ERASED (0xFFFFFFFF) |
#define CINV_FEB_HEADER_OFFSET (0) |
#define CINV_FEB_HEADER_SIZE (sizeof(cinv_feb_head_t)) |
#define CINV_FEB_NO_USED (0xffffu) |
#define CINV_FEB_NUM_TO_ADDR | ( | blk_num, | |
offset | |||
) | (g_flash_base_addr + CINV_FLASH_ERASE_BLOCK_SIZE*(blk_num) + (offset)) |
#define CINV_IO_BUFFER_SIZE (256) |
#define CINV_ITEM_LEN_ACTUAL_USED | ( | len | ) | (((len)+3)/4*4) |
#define CINV_ITEM_NO_USED (0xffffu) |
#define MEMORY_COPY_USED (1) |
#define PFT_POS_AFTER_MARK_TARNS 4 |
#define PFT_POS_BEFORE_WRITING_DONE 3 |
#define PFT_POS_BEFORE_WRITING_NEW 1 |
#define PFT_POS_BEFORE_WRITING_START 2 |
#define PFT_POS_DELETE_ITEM 6 |
#define PFT_POS_RECLAIM_BEFORE_ERASE1 0 |
#define PFT_POS_RECLAIM_BEFORE_ERASE2 5 |
#define PFT_POS_SET_TRANSFERING 7 |
#define POWEROFF_TEST | ( | pos | ) | do{}while(0) /*no test and save code size*/ |
typedef struct cinv_hotid_node_st cinv_hotid_node_t |
|
static |
calculate the data checksum
buf | : data buffer pointer |
len | : buffer lens |
|
static |
first read,if already is erased, do nothing, else erase it
blk_num | : feb number |
|
static |
check current buffer data is erased
buf | : data buffer pointer |
len | : data buffer length |
cinv_item_ret_t cinv_register_hotid | ( | uint32_t | hot_id | ) |
register hotid.
id | Nvdata item id |
CINV_OPER_SUCCESS | Id already existed, no action taken. |
CINV_OPER_FAILED | Failure to find or create id. |
|
static |
erased flash block, no check,
blk_num | : feb number |
|
static |
find hot id address
id | :nvdata item id |
blk_num | :return value feb number |
|
static |
|
static |
|
static |
find a nvdata item, and return address
id | : nvdata item id |
ret_blk | : return value feb number of address |
transid_valid | : if CINV_DATA_ITEM_STATUS_TRANS item used as valid item |
|
static |
|
static |
if nvdata item id in hot id array, update item address
blk_num | : feb number of item address |
off | : offset in feb of item address |
id | : nvdata item id |
|
static |
id | |
len | |
buf |
|
static |
item_deal_status_t init_page_deal_flow | ( | cinv_data_item_header_t * | di_hdr, |
uint32_t | blk_num, | ||
uint16_t | off, | ||
uint16_t * | lost | ||
) |
|
static |
item_deal_status_t init_page_id_deal_flow | ( | cinv_data_item_header_t * | di_hdr, |
uint32_t | id, | ||
bool | transid_valid, | ||
uint16_t * | lost | ||
) |
|
static |
|
static |
reclaim a feb, valid item of this feb copy to reserved feb, then erased it and set this to reserved
blk_num | : feb number |
old_id | : item id don't copy, this id will write a new , so old don't copy |
item_deal_status_t reclaim_block_deal_flow | ( | cinv_data_item_header_t * | di_hdr, |
uint16_t * | write_off, | ||
uint32_t | old_id | ||
) |
|
static |
|
static |
write feb header status to flash, and verify
blk_num | : feb number |
status | : feb status |
|
static |
writes an item to nvdata region
blk_num | : feb number |
id | : nvdata item id |
len | : byte count of data to write |
buf | : data buffer |
|
static |
write nvdata item header status to flash, and verify
blk_num | : feb number of item address |
offset | : offset in feb of item address |
status | : data item status |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |
|
static |