如何更新 mfg_nvs 分区

[English]

mfg_nvs 分区介绍

mfg_nvs (manufacturing nvs) 分区定义在 esp-at/module_config/{module_name}/at_customize.csv 文件中。该分区存储了出厂固件的下列配置:

当您需要修改出厂参数配置、PKI 配置或者 GATTS 配置时,您可以重新编译 ESP-AT 工程,生成新的 mfg_nvs.bin 文件;或者通过 at.py 工具 修改固件,为您的模组生成新的固件。本文介绍前者。

生成 mfg_nvs.bin

配置修改完成后,重新编译 ESP-AT 工程。在编译阶段会自动通过 mfg_nvs.py 先生成 build/customized_partitions/mfg_nvs.csv 文件(包含了所有配置的命名空间、键、类型、和键值信息),再由 esp-idf 中的 nvs_partition_gen.py 脚本生成 build/customized_partitions/mfg_nvs.bin 文件(NVS 库的结构)。

下载 mfg_nvs.bin

可采用以下任意一种方式下载 mfg_nvs.bin 文件。

  • 下载重新编译过的 ESP-AT 固件,详情请见 第七步:烧录到设备

  • 仅下载 mfg_nvs.bin,这种方法只更新 ESP32 中的 mfg_nvs 分区。

    • Windows

      请下载 Windows Flash 下载工具。参考 zip 文件夹中 readme.pdf 或者 doc 目录下说明,下载 build/customized_partitions/mfg_nvs.bin 文件到 ESP32。您可以通过 AT+SYSFLASH? 命令查询 mfg_nvs.bin 的下载地址。

    • Linux or macOS

      请使用 esptool.py

      您可以在 ESP-AT 根目录执行以下命令下载 mfg_nvs.bin 文件。

      esptool.py --chip auto --port PORTNAME --baud 921600 --before default_reset --after hard_reset write_flash -z --flash_mode dio --flash_freq 40m --flash_size 4MB ADDRESS mfg_nvs.bin
      

      PORTNAME 替换为您的串口名称。ADDRESS 替换为下载 mfg_nvs.bin 文件的地址,您可以通过 AT+SYSFLASH? 命令查询下载地址。

  • MCU 发送 AT+SYSFLASH 命令更新 ESP32 中的 mfg_nvs 分区。

    # 擦除 mfg_nvs 分区
    AT+SYSFLASH=0,"mfg_nvs",0,MFG_NVS_SIZE
    
    # 写入 mfg_nvs.bin 文件
    AT+SYSFLASH=1,"mfg_nvs",0,MFG_NVS_SIZE
    

    MFG_NVS_SIZE 替换为下载 mfg_nvs.bin 文件的大小,不同的模组有不同的分区大小,您可以通过 AT+SYSFLASH? 命令查询分区大小。