ESP32——パーティションテーブル内のNVSパーティションデータが保存できない問題について

WiFi 機能を使用するプロジェクト、NVS パーティションはパーティション テーブル API を介して操作されます。データの書き込みと読み取りは正常です (最初に書き込みが追加されます)。WiFi を開始し、チップを再起動した後、データ読み取りエラー (書き込まれたものではありません)データ)。

WiFi起動後にこの部分のパーティションが操作されたものと思われます。したがって、パーティション オフセットを「0x3000」に設定します。コードは次のようになります。

esp_err_t err = nvs_flash_init();
char data[]={0x01,0x02,0x03,0x04,0x73,0x41,0x00,0x78,0x85,0x51,0x00,0x00};
ESP_ERROR_CHECK(esp_partition_erase_range(partition, 0x3000, SPI_FLASH_SEC_SIZE));
ESP_ERROR_CHECK(esp_partition_write(partition, 0x3000, data, 12));
data[0] = 0;
data[1] = 0; 
ESP_ERROR_CHECK(esp_partition_read(partition, 0x3000, data, 12));
printf("data =  : %x %x %x %x\n", data[0],data[1],data[2],data[3]);

変更後、2回は正常になりましたが、その後も以前の問題が発生しました。オフセットを変更するだけでは機能しない可能性があります。プロジェクト設定を確認して、WiFi 設定を保存する機能があるかどうかを確認します。保存されている場合は、以下に示すようにチェックを外します。

今回、Ethernetを使用しない場合にもこの問題が存在する可能性があるため、傍受される可能性のあるものは下図のとおりです。

おすすめ

転載: blog.csdn.net/tsliuch/article/details/128220861