LoginSignup
3
1

More than 5 years have passed since last update.

Nefryのデータをクリアする

Posted at

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

手順

次の手順で行います。

  1. 空のプログラムを書き込んでみる 復活しないのであれば次
  2. フラッシュメモリのクリアを実行する
  3. メモリを初期化する

フラッシュメモリのクリアを実行する

Pythonをインストールが済んでいる前提で$ pip install esptoolを実行します。
インストールが完了した状態でバージョンを確認するとこのような表示がでれば大丈夫です。

$esptool.py version
esptool.py v2.6
2.6

クリアしたいNefryのポートを確認します。Macなら /dev/ttyUSBWindowsなら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に書き込みたいプログラムをつくってぜひあそんでみてください! 

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1