M5StickV や UnitV 向けの配布用パッケージ(.kfpkg)の作り方を説明します。作成したアプリケーションのファームウェアのバージョンを固定できたり、microSD カード不要で動作させることができるようになります。なお、この手順により既存のファームウェアが上書きされてしまうので古いファームウェアが必要な方は実行しないでください。
事前準備
microSD カードを前提としたアプリケーションを作成している場合は micropython のソースコードの /sd
を /flash
にするなど変更してください。また、配布用ディスクイメージは 3MB で固定なのであまり大きなファイルは利用できません。特に、機械学習モデルを利用している場合には、ファイルから読み取るのではなく、内蔵 Flash の特定領域(例えば 0x300000
)から読み込むように変更します。
SPIFFS ディスクイメージの作成
それではまず配布したいアプリケーションのディスクイメージを作成していきます。 ここで作成したディスクイメージが /flash
以下に格納されます。
- WSL 上に Ubuntu 18.04 LTS をインストールします。Microsoft Storeを利用するのが簡単です。インストールが終わるとユーザー名とパスワードを聞かれるので適宜設定します。
- Ubuntu 上で下記を実行します。
$ sudo apt-get update
$ sudo apt install make
$ sudo apt install g++
- Windows のデスクトップ上に spiffs というフォルダを作成します。
- Ubuntu 上で下記を実行します。
$ cd /mnt/c/Users/(ユーザー名)/Desktop/spiffs
$ sudo git clone https://github.com/sipeed/MaixPy.git
- Windows のエクスプローラで
spiffs\MaixPy\tools\spiffs
に移動し、fs フォルダを作成、その中に boot.py など配布用パッケージに含めたいファイル一式をコピーします。 - Windows のエクスプローラで
MaixPy\projects\maixpy_m5stickv\builtin_py
の中身を上記の fs フォルダに上書きコピーします。 - Ubuntu 上で下記を実行します。
$ cd MaixPy/tools/spiffs
$ sudo python3 gen_spiffs_image.py ../../projects/maixpy_m5stickv/config_defaults.mk
成功すると下記のように表示されます。ディスクイメージは 3MB で固定なので、エラーになる場合はファイルを減らしてください。特に、ファイルサイズの大きい .kmodel はディスクイメージに追加するのではなく、.kfpkg 作成時に別途追加するようにします(後述)。
[SUCCESS] image file in fs_image
[USAGE] Please flash fs_image/maixpy_spiffs.img to address 0xD00000 of flash with flash tool kflash_gui
以上で、spiffs\MaixPy\tools\spiffs\fs_image
に maixpy_spiffs.img
というファイルができます。
.kfpkg の作成
.kfpkg の作成には、ファームウェア (.bin)、SPIFFSイメージ (.img)、(機械学習モデルがあれば .kmodel) が必要です。
- https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start の click to download firmware をクリックして M5StickV_Firmware_v5.1.2.kfpkg をダウンロード。下のほうにある Kflash_GUI もあわせてダウンロードし展開しておきます。
- .kfpkg の拡張子を .gz に変更して展開し、
maixpy.bin
があることを確認します。 - kflash_gui.exe を起動し、Open File をクリックして、
maixpy.bin
を選択します。 - 続いて Add File をクリックし、Open File をクリックして、上記で作成した
maixpy_spiffs.img
を選択、0x00000
と表示されている部分を0xD00000
に変更します。 - 機械学習モデル(.kmodel) がある場合は、Add File をクリックして、ファイルを追加し、
0x300000
に変更します。 - Pack to kfpkg をクリックして、 .kfpkg を作成します。
以上です。
元に戻す
https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start から M5StickV_Firmware_v5.1.2.kfpkg をダウンロードして kflash_gui.exe で書き込めば Quick Start の初期状態になります。
参考リンク
- M5StickV Quick Start (UnitVも同じ手順です。ファームウェアも共通です。)
- spiffs tools (Sipeed)