Nefryで次のようなエラーが発生したときやFlash Memoryをクリアしたいときに対応する手順を簡単にまとめておきます。
configsip: 0, SPIWP:0xee
clk_drv:0x00,q_drv:0x00,d_drv:0x00,cs0_drv:0x00,hd_drv:0x00,wp_drv:0x00
mode:DIO, clock div:1
load:0x3fff0018,len:4
load:0x3fff001c,len:812
load:0x40078000,len:0
load:0x40078000,len:11572
entry 0x40078a5c
assertion "false && "item should have been present in cache"" failed: file "/Users/ficeto/Desktop/ESP32/ESP32/esp-idf-public/components/nvs_flash/src/nvs_item_hash_list.cpp", line 85, function: void nvs::HashList::erase(size_t)
abort() was called at PC 0x400d3427 on core 0
Backtrace: 0x4008e6f0:0x3ffcfd90 0x4008e8cb:0x3ffcfdb0 0x400d3427:0x3ffcfdd0 0x400fad3c:0x3ffcfe00 0x400fb3f6:0x3ffcfe20 0x400fb725:0x3ffcfe70 0x400fa784:0x3ffcfed0 0x400fa1a2:0x3ffcff20 0x400fa23b:0x3ffcff40 0x400fa286:0x3ffcff60 0x400ef500:0x3ffcff80 0x400e366b:0x3ffcffa0 0x400d3d12:0x3ffcffd0
手順
次の手順で行います。
- 空のプログラムを書き込んでみる 復活しないのであれば次
- フラッシュメモリのクリアを実行する
- メモリを初期化する
フラッシュメモリのクリアを実行する
Pythonをインストールが済んでいる前提で$ pip install esptool
を実行します。
インストールが完了した状態でバージョンを確認するとこのような表示がでれば大丈夫です。
$esptool.py version
esptool.py v2.6
2.6
クリアしたいNefryのポートを確認します。Macなら /dev/ttyUSB
WindowsならCOM3
とかだと思います。
それを次のコマンドのポートを変更して合わせましょう。
esptool.exe --chip esp32 --port COM3 --baud 921600 erase_flash
次のデータは実行結果です。
esptool.py v2.6
Serial port COM3
Connecting........_____..
Chip is ESP32D0WDQ6 (revision 1)
Features: WiFi, BT, Dual Core, 240MHz, VRef calibration in efuse, Coding Scheme None
MAC: b4:e6:2d:15
Uploading stub...
Running stub...
Stub running...
Changing baud rate to 921600
Changed.
Erasing flash (this may take a while)...
Chip erase completed successfully in 7.0s
Hard resetting via RTS pin...
このようになればフラッシュメモリのクリアは完了です。
メモリを初期化する
このままではクリアされただけでモジュール名なども初期化されてしまいます。
なので必要な部分は初期化を行わないといけません。
次のプログラムをArduinoで書き込んでください。
#include <Nefry.h>
void setup() {
Nefry.ndelay(1000);
Nefry.setModuleID(getDefaultModuleId());
for (int i = 0; i < 8; i++) {
Nefry.setStoreValue(0, i);
Nefry.setStoreStr("", i);
}
}
void loop() {
}
String getDefaultModuleId() {
String moduleName;
String _devstr, ms;
switch (boardId)
{
case 0:
case 1:
case 2:
case 3:
moduleName = "NefryBT";
break;
}
_devstr = WiFi.macAddress();
_devstr.replace(":", "");
return moduleName + (String)"-" + _devstr.substring(8);
}
これでクリアは完了です。
Nefryに書き込みたいプログラムをつくってぜひあそんでみてください!