この記事は Tuton Advent Calander 2025 の2日目の記事です。ほかの記事はこちらからどうぞ。
はじめに
こんにちは、mitu です。
この記事では UnitV というエッジビジョンデバイスのファームウェアをカスタマイズする方法を紹介します。
カスタムファームウェアが作れると、メモリを節約できたり、この記事では解説しませんが関数を自作できたりなどして何かと便利です。
UnitV って?
M5Stack が開発・製造・販売を行っているエッジビジョンデバイスです。特に乗っているチップが強力で、一部の畳み込みと任意の活性化関数をハードウェアアクセラレーションすることができます。AI を使って雑に画像認識したい!という需要にぴったり。
日本だと Switch Science が代理店として販売を行っています。
環境
- Linux (Ubuntu 22.04 等) または WSL2 を推奨
理論上は Windows 上でも動作するはずですが cmake のバージョンの関係で正しく動作しない可能性があります。筆者の環境では動作しませんでした。
作成しよう!
リポジトリのクローン
ありがたいことに公式がツールを用意してくれているので、巨人の肩に立つ気持ちで使わさせていただきましょう。
まず上のリポジトリをクローンします。
git clone https://github.com/sipeed/MaixPy-v1.git
そうしたら、このリポジトリはサブモジュールに依存しているので、サブモジュールを取得するために
cd MaixPy-v1
git submodule update --recursive --init
を実行します。次に、python の依存関係をインストールします。
sudo apt update
sudo apt install python3 python3-pip build-essential cmake
sudo pip3 install -r requirements.txt
最後に、Toolchain をインストールします。
wget http://dl.cdn.sipeed.com/kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz
sudo tar -Jxvf kendryte-toolchain-ubuntu-amd64-8.2.0-20190409.tar.xz -C /opt
toolchain とは?
簡単に言うと、C++ などで書かれたソースコードを UnitV 上で動作させられるようにするための「道具箱」のようなものです。
これで準備が整いました!次のステップに進みましょう。
ファームウェアのビルドとカスタム
いくつか公式から用意されているプリセットがありますが、ここでは最小構成のものをビルドしてみましょう。
cd projects/maixpy_k210
python3 project.py build
とすると /build/maixpy.bin に最小構成のファームウェアが生成されているはずです!
また、GUI を用いて簡易的にカスタマイズを行うこともできます。
python3 project.py menuconfig
を実行すると以下のような矢印キーとエンターキーで操作できる GUI(?) が出てきます。
カスタマイズできる機能がかなり多様なので説明は省略しますが、LED や SD カードをサポートするかどうか、高度な画像処理用の関数を含めるかどうかなどが設定できます。
余談:作成したファームウェアを焼くには?
操作の理解しやすさを考えると kflash_gui(https://github.com/sipeed/kflash_gui) を用いるのがおすすめです。Mac,Win,Linux どこでも動作します。
起動すると以上のような画面が出てくるので、Open File から先ほど作成したファームウェアを選択し、Board を M5StickV に、Port を適切なものにして Download を押すとファームウェアを焼くことができます。
おわり
UnitV を取り巻く歴史はなかなか紆余曲折合って面白いです。皆さんも暇があれば調べてみてはいかがでしょうか!
明日の記事は @shuji4649 の「困った時のI2Cバスリカバリ」です!

