M5StickVのファームウェアビルド手順

 M5StickVが発売されましたが、まだまだmicroSDと相性があるなど問題が多いため、自分でファームウェアを調整してみたいと思いビルドの手順を調べて入れ替えを行うことができました。忘れそうなので手順化しておきます。

 もくじ(Index)

参考ページ

 GitHubのドキュメントを参考にしました。

https://github.com/sipeed/MaixPy/blob/master/build.md

注意事項

 GitHub上にあるファームウェアは恐らく開発版のためそれ自体正常に動くかどうか不明です。その点を理解したうえで利用しましょう。

/flashの内容が読めなくなる。

 ファームウェアを更新すると、元からFlashメモリに入っているデモが動かなくなる場合があります。元に戻したい場合はM5Stack.comからm5stickV_Firmware_0630Fixed.kfpkgをKflash_guiで焼き直すと元に戻ります。(ファームウェアも元に戻ります。)

https://docs.m5stack.com/#/en/quick_start/m5stickv/m5stickv_quick_start

ビルドするOSはLinux

 build.mdにはmacOSとWindowsではテストしていないとのことで下記の環境を使用しました。

  • Ubuntu 18.04 (amd64)

 ビルドは時間かからないので恐らくVMでも可能です。(私はAtomZ8700のPCで行いました。)WSL(Ubuntu18.04)でも動くそうです。

ビルド環境を整える

 ホームディレクトリ上で作業すると仮定して記述します。(GitHubのフォルダは~/MaixPy)

依存パッケージのインストール

 下記のコマンドを実行してビルドに必要なパッケージをインストールします。

sudo apt update
sudo apt install git python3 python3-pip build-essential cmake

gitからcloneする

 ソースコードをgitからcloneしサブモジュールも取得します。

cd ~
git clone https://github.com/sipeed/MaixPy.git
cd ./MaixPy
git submodule update --init

Pythonライブラリのインストール

 pip3を実行して依存ライブラリをインストールします。requirements.txtは./MaixPyにあります。

pip3 install -r requirements.txt

toolchainのインストール

https://github.com/kendryte/kendryte-gnu-toolchain/releasesからダウンロードして/optフォルダに解凍します。

sudo mkdir /opt
wget http://dl.cdn.sipeed.com/kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz
cp ./kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz /opt
cd /opt
sudo tar -xvf kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz

プロジェクトの設定

 M5StickV用のファームウェアを作成するには~/MaixPy/projects/maixpy_m5stickv で作業して下記のようにコマンドを実行してビルドの設定をします。

cd ~/MaixPy/projects/maixpy_m5stickv
python3 project.py --toolchain /opt/kendryte-toolchain/bin --toolchain-prefix riscv64-unknown-elf- config
python3 project.py clean_conf

細かいビルドオプション

 まだ、詳細を確認してはいないのですが、下記のコマンドを実行することにより、ボードの設定等を変更できるようです。

python3 project.py menuconfig

 実行すると下記のような画面が出るのでビルド時のパラメータを変更したりできます。セーブして終わるときは「Q」を押します。

ビルド

 設定が終わったらビルドします。

python3 project.py build

バイナリが生成されるフォルダ

 ビルドが完了すると./buildにmaixpy.binというファイルが作成されます。後はこれをM5StickVに書き込むだけです。

 書き込む手順は恐らくこの記事を読む方は知っていると思うので省略します。(kflash_guiでも可能)

入れ替わっているか確認したい時

~/MaixPy/projects/maixpy_m5stickv/builtin_py/_boot.pyを書き換えるとMaixPy IDEのターミナルで表示されるメッセージを変えることができるので確認できます。

https://github.com/sipeed/MaixPy/blob/master/projects/maixpy_m5stickv/builtin_py/_boot.py#L30

 以下のバナーで「build by Takao Akaki:2019/7/26」を追加してあります。

【追記】2019/8/3 ビルドエラーの対処

https://github.com/sipeed/MaixPy/pull/147 が取り込まれたのでビルドしようとしたところエラーが出たので手順を追加しておきます。MaixPyは常に更新されているのでビルドエラーが出た場合は、エラーメッセージをよく読んで対処しましょう。

ModuleNotFoundError: No module named ‘kconfiglib’

 依存するPythonのモジュールが増えたようです。

pip3 install kconfiglib

kendryte-standalone-sdk/lib/bsp/include not found!

https://github.com/sipeed/MaixPy/tree/master/components/kendryte_sdk に新しいサブモジュール( kendryte-standalone-sdk )が増えていました。

 多分、対処方法は違いますが、以下の手順でなんとかビルドまで行けました。(git詳しい方正しい対処方法教えてください。。。m(_ _)m)

cd ~/MaixPy/components/kendryte_sdk/
git clone https://github.com/sipeed/kendryte-standalone-sdk/tree/523057183bdf12bd1740eb64ce4b962bb9ad1473

# もしディレクトリが空でない場合、サブフォルダを空にしてからgit cloneする。

終わりに

 ここまでで、M5StickVのファームウェアのビルドは完了です。ファームウェアを解析して色んなことをしてしまいましょう。(`・ω・´)

 ※急いで書いたのでわからない事や、間違い・誤字・リンクミス等ありましたらコメントかTwitterまでご連絡くださいm(_ _)m

個人メモ

 忘れてしまうのでメモ。linuxpc1でビルドした後に母艦のWindowsPCからWSL上のsshを使ってコピーするコマンド。

scp linuxpc1:/home/username/MaixPy/projects/maixpy_m5stackv/build/maixpy.bin /mnt/d/M5StickV_firmware/

コメントを残す

メールアドレスが公開されることはありません。