ESP32非易失性存储(NVS)分区生成
由于项目用到CAN总线,现在需要为多台设备分配地址,为了避免反复修改固件,反复编译项目,准备采用NVS存储预设的CAN地址。
我们需要写的NVS文件有两个:
- 模板文件config.csv
- 具体数值文件.csv
参考ESP官网量产程序参考,模板文件书写格式如下:
点击查看代码
name1,namespace, <-- 第一个条目应该为 "namespace" 类型
key1,type1,encoding1
key2,type2,encoding2,REPEAT
name2,namespace,
key3,type3,encoding3
key4,type4,encoding4
其中key就是你的变量名,type是变量类型,encoding就是编码格式,REPEAT标记的变量在所有生成文件中数值相同。
注意和单个NVS分区文件格式略有不同:
点击查看代码
key,type,encoding,value <-- 列标题,**量产程序没有这一行**
namespace_name,namespace,, <-- 第一个条目为 "namespace"
key1,data,u8,1 <-- 量产文件不需要输入value
key2,file,string,/path/to/file
书写模板文件时注意格式,不要有多余的回车,逗号,空格,否则识别不了。
数值文件的书写更为简单,第一列为设备id,你有多少台设备要配置NVS,id就从1排到多少,id那一行后面就是所有你设置的key变量,按设备id和对应的key填满表格即可,REPEAT的变量只填id1那行就行。
点击查看代码
id,firmware_key,serial_no,device_no
1,1a2b3c4d5e6faabb,A1,101
2,1a2b3c4d5e6fccdd,,102
3,1a2b3c4d5e6feeff,,103
同样注意逗号,空格,回车不要多打。
然后使用python脚本生成可下载至芯片的bin文件,脚本文件位于IDF_PATH/tools/mass_mfg文件夹,调用脚本可以使用绝对路径,或者直接把mfg_gen.py复制到项目文件夹中使用,只有22k。输入生成命令,注意这个命令要在ESP-IDF终端而非Powershell终端中运行,否则识别不了:
python mfg_gen.py generate <config_file> <value_file> <filename> <size>
如果你的模板文件和数值文件无误则会开始生成分配数值后的csv文件和bin文件:

文件名则是用户设置的<filename>加上文件序号。完成后会在项目根目录出现两个新的文件夹csv和bin,分别保存对应格式的文件。
至于这个配置要怎么下载到设备,目前尚未验证,通过官方文档大致了解到可以通过ESP-IDF终端下载或者修改Makefile,先等到元器件配货齐了再试吧。
浙公网安备 33010602011771号