智能家居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分區的地址。