乐鑫技术交流
直播中

李华

7年用户 1328经验值
私信 关注
[问答]

使用NVS Partition Generator Utility nvs读取不到key值,是怎么回事?

https://docs.espressif.com/projects/esp ... n_gen.html
我这边是按照上面的流程进行操作
要生成的test.csv

  • key,type,encoding,value
  • namespace_name,namespace,,
  • key1,data,u8,1


转.bin指令

  • python ~/esp/esp-idf/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input test.csv --output test.bin --size 0x6000



分区表也进行了修改

  • # Espressif ESP32 Partition Table
  • #
  • # Note: if you change the phy_init or app partition offset
  • #       make sure to change the offset in Kconfig.projbuild
  • #
  • # Name,   Type, SubType, Offset,  Size, Flags
  • nvs,      data, nvs,     0x9000,  0x6000,
  • phy_init, data, phy,     0xf000,  0x1000,
  • factory,  app,  factory, 0x10000, 1200000,



读取的函数

  • #define TEST_STORAGE_NAMESPACE "namespace_name"    //nvs测试名字空间
  • uint8_t test_data = 0;
  • /******************************
  • * 函数名称:get_nvs_csv_data
  • * 作    者:Kyle
  • * 日    期:20190419
  • * 描    述:测试nvs
  • * 输入参数:无
  • * 返 回 值:无
  • ******************************/
  • esp_err_t get_nvs_csv_data(void)
  • {
  •     esp_err_t ret = ESP_FAIL;
  •     esp_err_t err = ESP_FAIL;
  •     nvs_handle read_nvs_handle;
  •     size_t required_size = 1;
  •     ESP_LOGI(SPP_TAG, "required_size:%dn",required_size);

  •     // Open
  •     ESP_ERROR_CHECK(nvs_open(TEST_STORAGE_NAMESPACE, NVS_READWRITE, &read_nvs_handle));

  •     // Read
  •     err = nvs_get_blob(read_nvs_handle, "key1", &test_data, &required_size);
  •     ESP_LOGI(SPP_TAG, "[ test data ]:%dn",test_data);
  •     if(err == ESP_OK)
  •     {
  •         ESP_LOGI(SPP_TAG, "[ test data ]:%dn",test_data);
  •         ret = ESP_OK;
  •     }
  •     else if(err == ESP_ERR_NVS_NOT_FOUND)
  •     {
  •         ESP_LOGI(SPP_TAG,"ESP_ERR_NVS_NOT_FOUNDn");
  •     }

  •     // Commit
  •     ESP_ERROR_CHECK(nvs_commit(read_nvs_handle));

  •     // Close
  •     nvs_close(read_nvs_handle);

  •     return ret;
  • }


但是得到的日志出来是

  • I (264) SPP_ACCEPTOR_DEMO: required_size:1

  • I (274) SPP_ACCEPTOR_DEMO: [ test data :0

  • I (274) SPP_ACCEPTOR_DEMO: ESP_ERR_NVS_NOT_FOUND



if the requested key doesn't exist,key值不存在,请问下我是哪一步出现问题呢?
                                                                                                                                                                                                                                                                   

回帖(1)

李红

2024-6-26 17:32:17
以下是一些可能的原因和解决方案:

1. **CSV文件格式错误**:请确保您的CSV文件格式正确。每个字段应该用逗号分隔,并且没有多余的空格或换行符。检查您的CSV文件,确保格式如下:

   ```
   key,type,encoding,value,namespace_name,namespace
   key1,data,u8,1
   ```

2. **Python脚本路径错误**:确保您使用的是正确的Python脚本路径。根据您的描述,您应该使用以下命令:

   ```
   python ~/esp/esp-idf/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input test.csv --output test.bin --size 0x6000
   ```

   请检查路径是否正确,以及Python脚本是否存在。

3. **Python环境问题**:确保您的Python环境已正确安装,并且具有执行脚本所需的权限。如果需要,尝试使用`sudo`命令来运行脚本。

4. **esp-idf版本问题**:请确保您使用的esp-idf版本与您的项目兼容。如果您不确定,可以尝试更新esp-idf到最新版本。

5. **分区表配置问题**:您提到已经修改了分区表,但未提供具体的修改内容。请确保您的分区表配置正确,特别是与NVS分区相关的部分。您可以查看[ESP32分区表文档](https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/partition-tables.html)以获取更多信息。

6. **检查错误信息**:如果脚本在执行时产生了错误,请仔细阅读错误信息,以便找到问题所在。错误信息通常会提供关于问题原因的线索。

7. **查看日志和调试信息**:如果可能,请查看脚本的日志和调试信息,以便更好地了解问题所在。


举报

更多回帖

×
20
完善资料,
赚取积分