日本熟妇hd丰满老熟妇,中文字幕一区二区三区在线不卡 ,亚洲成片在线观看,免费女同在线一区二区

kv

更正文檔

概述

對于嵌入式系統應用中,頻繁使用的參數存儲,過程變量存儲等操作,AliOS-Things為用戶提供了一種更加直觀易于理解的基于鍵值對的存儲方式,如報警溫度=50度,可以通過定義一個鍵值對:{"AlarmTemp":50}來進行存儲。獲取時,也只需通過AlarmTemp這個關鍵字(鍵/KEY)即可快速獲取和重新寫入。KV將用戶的指定片內flash扇區或eeprom虛擬為有一個存儲空間,并且幫助用戶管理鍵值對之間的映射關系,用戶無需關心具體的值被寫到哪里了,僅需要通過對鍵的操作即可完成數據的存取。該組件目前針對Nor flash設備。組件支持以下功能:

  • key-value pair set

  • key-value pair get

  • key-value pair delete

  • key-value pair delete for group (same prefix)

版權信息

Apache license v2.0

目錄結構

├── src
│   ├── kv_adapt.c   # kv和flash的適配層
│   ├── kv_aos.c     # kv的aos api接口
│   ├── kv.c         # kv的核心實現代碼
│   ├── kv_cli.c     # kv cli注冊命令
│   └── kv_secure.c  # kv的安全存儲適配層
├── include
│   ├── aos
│   │   └── kv.h     # kv的對外AOS API
│   └── kv_api.h     # kv_開頭的API
├── internal         # 內部頭文件
├── package.yaml     # 編譯配置文件
└── example
    └── kv_example.c # kv示例代碼

依賴組件

  • rhino

  • cli

常用配置

系統中相關配置已有默認值,如需修改配置,統一在YAML中def_config節點修改,具體如下:

kv分區大小:默認8K bytes, 如需修改,在YAML中修改KV_CONFIG_TOTAL_SIZE配置

def_config:
  KV_CONFIG_TOTAL_SIZE: 4096

kv分區號,默認HAL_PARTITION_PARAMETER_2,可按照實際需要修改YAML配置如:

def_config:
  KV_CONFIG_PARTITION: 2

kv block bit大小,默認12,可修改YAML配置如:

def_config:
  KV_CONFIG_BLOCK_SIZE_BITS: 2

kv 資源回收任務優先級,默認32,可修改YAML配置如:

def_config:
  KV_CONFIG_TASK_PRIORITY: 31

kv 資源回收任務棧大小,默認1024,可修改YAML配置如:

def_config:
  KV_CONFIG_TASK_STACK_SIZE: 2048

kv 存儲key最大長度,默認為128,可修改YAML配置如:

def_config:
  KV_CONFIG_MAX_KEY_LEN: 256

kv 存儲value最大長度,默認為512,可修改YAML配置如:

def_config:
  KV_CONFIG_MAX_VAL_LEN: 256

API說明

使用

示例組件使用示例相關的代碼下載、編譯和固件燒錄均依賴AliOS Things配套的開發工具,所以首先需要參考《AliOS Things集成開發環境使用說明之搭建開發環境》,下載安裝。待開發環境搭建完成后,可以按照以下步驟進行示例的測試。

步驟1 創建或打開工程

打開已有工程

如果用于測試的案例工程已存在,可參考《AliOS Things集成開發環境使用說明之打開工程》打開已有工程。

創建新的工程

組件的示例代碼可以通過編譯鏈接到AliOS Things的任意案例(solution)來運行,這里選擇helloworld_demo案例。helloworld_demo案例相關的源代碼下載可參考《AliOS Things集成開發環境使用說明之創建工程》

步驟2 添加組件

案例下載完成后,需要在helloworld_demo組件的package.yaml中添加對組件的依賴:

depends:
  - kv: dev_aos # helloworld_demo中引入kv組件

步驟3 下載組件

在已安裝了的開發環境工具欄中,選擇Terminal -> New Terminal啟動終端,并且默認工作路徑為當前工程的workspace,此時在終端命令行中輸入:

aos install kv

上述命令執行成功后,組件源碼則被下載到了./components/kv路徑中。

步驟4 添加示例

在kv組件的package.yaml中添加example示例代碼

source_file:
  - "src/*.c"
  - "example/kv_example.c" # add kv_example.c

步驟5 編譯固件

在示例代碼已經添加至組件的配置文件,并且helloworld_demo已添加了對該組件的依賴后,就可以編譯helloworld_demo案例來生成固件了,具體編譯方法可參考《AliOS Things集成開發環境使用說明之編譯固件》

步驟6 燒錄固件

helloworld_demo案例的固件生成后,可參考《AliOS Things集成開發環境使用說明之燒錄固件》來燒錄固件。

步驟7 打開串口

固件燒錄完成后,可以通過串口查看示例的運行結果,打開串口的具體方法可參考《AliOS Things集成開發環境使用說明之查看日志》

當串口終端打開成功后,可在串口中輸入help來查看已添加的測試命令。

步驟8 測試示例

CLI命令行輸入:

kv_example

關鍵日志

CLI日志:

kv comp test success

注意事項

如果需要使用kv的安全加解密(mbedtls version),就需要對接兩個接口:kv_secure_get_key and kv_secure_get_iv。(declare in kv_adapt.h)Example:

uint8_t aes_key[32] = {
        0x86, 0xf6, 0xd2, 0xbe, 0x45, 0xb5, 0xab, 0x9c,
        0xc7, 0xd5, 0x96, 0xf7, 0xaf, 0x45, 0xfa, 0xf7,
        0xbe, 0x6a, 0x5d, 0xb0, 0x04, 0xc4, 0xde, 0xb5,
        0xf5, 0x0c, 0x4f, 0xc3, 0x71, 0x19, 0x3e, 0xe8
    };

uint8_t aes_iv[16]  = {
        0xef, 0x80, 0x18, 0xdc, 0xa3, 0x72, 0x72, 0x31,
        0x99, 0x2e, 0x3a, 0xba, 0x60, 0xf5, 0x0b, 0xd4
    };

uint8_t* kv_secure_get_key(uint32_t len)
{
    if ((len <= 0) || (len > sizeof(aes_key))) {
        return NULL;
    }

    return aes_key;
}

uint8_t* kv_secure_get_iv(uint32_t len)
{
    if ((len <= 0) || (len > sizeof(aes_iv))) {
        return NULL;
    }

    return aes_iv;
}

FAQ

Q1: 在不知道key值的情況下,可以遍歷kv分區嗎?

答:可以通過串口輸入cli命令kv list遍歷輸出所有的kv值。