EspruinoのオンボードストレージをLinux上で作成する
「まずはLチカやろ?」というツッコミを覚悟の上で、いきなりオンラインストレージです。
ESP32のEspruinoはオンボードのSPI-Flash上にオンボードストレージを持っています。
オンボードストレージはSPI-Flashのアドレス0x300000 から1Mバイトに配置されています。
通常は以下のような手順で使用します。
フォーマットする
E.flashFatFS({format:true});
ファイルを書き込む
var fs = require("fs"); var dat = "hogehoge"; fs.writeFileSync("/hoge.txt", dat);
ファイルを読み出す
var read_data=fs.readFileSync("/hoge.txt");
これだと、大きなファイルを書き込むのにはちょっと不便です。
以下は、このディスクイメージをLinux上で作成し、SPI-Flashに書き込む方法です。
モジュールファイルなどをあらかじめ書き込んでおくのに有効です。
(Linux上での操作です)
まず、空のバイナリファイルを作成し、FATでフォーマットします。
dd if=/dev/zero bs=1K count=1024 | tr "\000" "\377" > esp_diskimage.bin mkfs.fat -f 1 -F 12 -s 1 -S 4096 -M 0xF0 esp_diskimage.bin
ディスクイメージファイルをマウントします。
mkdir mnt sudo mount -o loop esp_diskimage.bin mnt
書き込みたいファイルをコピーします。パーミッションの関係で、sudoで実行する必要があります。
sudo cp 《コピーするファイル》 mnt/
書き込みが終わったらマウント解除します。
sudo umount mnt
出来上がったディスクイメージファイルをESP32に書き込みます。
/work2/esp/Espruino/esp-idf/components/esptool_py/esptool/esptool.py \ --chip esp32 --port /dev/ttyUSB0 --baud 921600 \ write_flash --flash_mode "dio" --flash_freq "40m" \ 0x300000 esp_diskimage.bin
ちなみに、現在のオンボードストレージをバッグアップしたい場合は以下のように実行します。
/work2/esp/Espruino/esp-idf/components/esptool_py/esptool/esptool.py \ --chip esp32 --port /dev/ttyUSB0 --baud 921600 \ read_flash 0x300000 0x100000