智能家居matter协议网关模块蓝牙wifi集成芯片烧录测试内容,在前期开发工作完成后,就可以进行试产验证测试及量产了。试产验证测试的主要内容如下:
(1) EVT (Engineering Verification Test)。针对首版 PCBA (Printed Circuit Board Assembly)进行基本的硬件功能测试和射频指标测试。智能家居matter协议网关模块蓝牙wifi集成芯片具体的测试项目包括: 基本硬件功能、射频指标射频干扰、功耗等。EVT 可能涉及问题的修复及再验证,整个流程会重复多次。
(2)DVT (Design Verification Test)。包括高低温测试、静电冲击、跌落测试等,主要关注整机产品的各项指标是否正常。
(3)产品认证。在完成以上各项验证后,即可基本确认产品硬件,可准备样机用于国家或联盟的各项认证,如 SRRC、FCC、CE 等。
试产结束后,即可进入量产阶段。量产涉及的环节比较多,如备料、贴片、烧录、测试、包装等。本文主要介绍和乐鑫产品密切相关的固件烧录及产品测试环节。
量产固件烧录
量产固件主要包含两部分内容: 应用固件及数据区。本文重点介绍如何定义及烧录数据区和应用固件这两个环节。
定义数据区
为了识别市场上销售的智能产品,并与用户建立绑定关系,通常需要在每个智能产品中存储一些唯一性信息,这些信息在每个产品中都是不同的。例如,为了使智能产品能够有效地连接到厂商的云平台,需要为每个智能产品生成唯一的认证信息 (如设备证书、ID、密码等),这些认证信息会存储在每个智能产品中。在进行连接和认证时,服务器端会用到这些认证信息。在开发过程中,我们可以很方便地将这些认证信息存储在智能产品中,如定义常量并有储在固件中、将这些认证信息写入 Flash。但在量产时,这些方式就会变得非常笨拙、低效。因此,在实际产品中需要更方便地烧录数据区的方案。在硬件与驱动开发篇中,之前介绍了NVS 库,在量产时可以考虑使用 NVS 库来存储智能产品的唯一的量产数据,也可以存储任何与应用程序相关的用户数据。在使用智能产品的过程中,智能家居matter协议网关模块蓝牙wifi集成芯片通常需要修改和读取用户数据,并会在恢复出厂设置时擦除用户数据。而唯一的量产数据仅可进行读取操作。考虑到这一特性,需要将量产数据和用户数据分别存储在不同的命名空间中,如mass_prod(针对量产数据)和 user_data (针对用户数据)。这样在恢复出厂设置时,可以直接对用户数据进行擦除操作,以清空用户数据。除此之外,还可以将量产数据和用户数据分别存储在不同的分区例如,智能家居matter协议网关模块蓝牙wifi集成芯片在量产数据命名空间保存产品证书,在用户数据命名空间保存 Wi-Fi的 SSID。保存数据的示例代码如下:
1. nvs_handle_t mass_prod_handle = NULL;
2. nvs_handle_t user_data_handle = NULL;
3.//Initialize NVS Flash storage
4. nvs_flash_init_partition(partition label);
5.
6.//Open non-volatile storage with mass prod namespace
7.nvs_open("mass_prod",NVS READONLY, &mass_prod_handle);
8.
9.//0pen non-volatile storage with user_data namespace
10.nvs_open("user_data",NVS READWRITE, &user_data_handle);
11.
12.uint8_t *product_cert = malloc(2048);
13.//read operation in mass_prod namespace
14.nvs_get_blob(mass_prod handle, "product_cert", &product_cert);
15.
16.char ssid[36] = {0};
17.//read operation in user_data namespace
18.nvs_get_str(user_data_handle,"ssid",&ssid);
19.//write operation in user_data namespace
20.nvs_set_str(user_data_handle,"ssid",&ssid);
21.
22.//Erase user_date namespace when reset to factory
23.nvs_erase_all(user_data handle);
我们已经知道了如何存储量产数据,但在将这些量产数据烧录到设备之前,还需要将其转换成规定的格式。生成量产数据的基本步骤如图 14-1 所示。
编写csv文件-->(生成NVS分区二进制文件)-->NVS分区二进制文件-->(烧录NVS分区二进制文件)-->ESP32-C3智能灯
图14-1生成量产数据的基本步骤
开始一步,编写 CSV 文件来存储键-值对信息,将量产时需要将存储到设备中的数据写入 CSV文件。智能家居matter协议网关模块蓝牙wifi集成芯片在量产时生成此 CSV 文件对应的 NVS 分区二进制文件并写入设备。每生产一台设备,就将一个唯一的 NVS 分区二进制文件写入该设备。例如:
1.key,type,encoding,value
2.mass_prod,namespace,,
3.ProductID,data,string,12345
4.DeviceSecret,data,string,12345678901234567890123456789012
5.DeviceName,data,string,123456789012
第二步,使用esp-idf/components/nvs_flash/nvs_partition_generator/nvs_partition_gen·py 在开发主机上生成NVS 分区二进制文件,命令如下:
$ python $IDE_PATH/components/nvs_flash/nvs_partition_generator/nvs_partition_gen.py --input mass_prod.csv --output mass prod.bin --size NVS_PARTITION_SIZE
注意:需要替换上述命令中的 NVS PARTITION SIZE 参数,实际值为分区表中对应 NVS分区的大小。执行上述命令后,得到的 mass prod.bin 文件就是量产数据二进制文件,可以使用以下命令将此量产数据二进制文件写入设备的 Flash 中。
$ python $IDF_PATH/components/esptool_py/esptool/esptool.py --port $ESPPORT write_flash NVS_PARTITION_ADDRESS mass_prod.bin
注意:智能家居matter协议网关模块蓝牙wifi集成芯片需要替换上述命令中的NVS_PARTITION_ADDRESS 参数,实际值为分区表中对应NVS分区的地址。