首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >工业化:如何在闪存过程中写出特定的NVS值

工业化:如何在闪存过程中写出特定的NVS值
EN

Stack Overflow用户
提问于 2022-10-03 14:56:41
回答 1查看 177关注 0票数 0

我写了一个固件来运行我们基于ESP32 32的定制PCB。固件持有一个独特的S/N (序列号)通过Preferences API,这是设置通过蓝牙应用程序,我写。

但现在我必须生产数十个PCB,它需要时间来连接和设置S/N通过应用程序。

目前的程序是一个两步的过程,我想精简:

  1. 闪存通用固件
  2. 设置唯一的S/N

我想知道我是否可以编写一个可以同时执行两个步骤的脚本,提供S/N作为脚本参数。

例如,我可以利用Espressif工具write_flash。

我怎么能这么做?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-10-14 08:46:28

您可以预先生成NVS数据分区,并将其与固件一起闪存.ESP以色列国防军专门为此目的提供了NVS分区生成器实用程序。以下是这个过程的概述。

  1. 首先,使用预先生成的数据创建CSV文件(让我们将其命名为mfgdata.csv),例如序列号、产品ID、键盘等等。假设NVS名称空间为"mfgdata_ns“。
代码语言:javascript
复制
key,type,encoding,value 
mfgdata_ns,namespace,,
serial,data,string,"ABC1234"
private_key,file,string,/path/key.pri
  1. 然后从这个CSV文件生成带有NVS数据的二进制分区(名为mfgdata.bin)。假设NVS分区从地址0x3000开始。
代码语言:javascript
复制
$IDF_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py generate mfgdata.csv mfgdata.bin 0x3000
  1. 最后,您与您的固件一起闪现NVS分区。这里有一个仅针对NVS分区的示例闪烁命令(假设分区在分区表中被命名为"mfgdata_part“)。
代码语言:javascript
复制
$ $IDF_PATH/components/partition_table/parttool.py -p /dev/ttyUSB0 -b 921600 write_partition --partition-name=mfgdata_part --input=mfgdata.bin
  1. 固件启动,加载NVS命名空间并找到您在mfgdata.csv中指定的所有值。

在创建CSV文件时必须小心。大约在两年前,他们使用python模块来解析这个文件,并且像预期的那样完美地工作了。然后,一些不太聪明的人决定放弃python模块,用逗号字符上的每一行拆分来替换它,而忽略了所有解析问题。我不知道他们有没有解开它。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73937267

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档