M5Stack:エミュレータのビルド方法

Common Source Code Project for M5Stack FIRE のファイル構成と、ビルド方法を説明します。

ファイル構成

CommonSourceCodeProjectM5Stack/bin/

ビルド済みのファイルが入っています。

CommonSourceCodeProjectM5Stack/src/

この下がソースです。(以下、CommonSourceCodeProjectM5Stack は長いので省略します。)

/src/common/
/src/common/vm/

エミュレータ共通処理のソースが入っています。各エミュレータでは、ハードウェア構成によって、この中のいくつかのファイルを選択して使用します。

/src/common/M5Stack/
/src/common/M5StackLGFX/(LGFX版)

M5Stackに特化された処理が入っています。画面描画、ファイルI/O、キー入力、メニュー画面の処理です。LGFX版は、描画に LovyanGFX を使っているバージョンです。
基本的には LGFX版を使ってください。FM-7エミュレータだけ、LGFX だとうまく動作できませんでしたので、通常版を使ってください。

/src/MSX1/
/src/m5/
/src/pyuta/
/src/sc3000/

各エミュレータのディレクトリです。ビルドは、このディレクトリで行います。


以下、MSX1ディレクトリで説明します。

/src/MSX1/

PlatformIOの設定ファイル platformio.ini があります。MSX1用のビルド設定がされています。

/src/MSX1/src/

/src/common/ に入っているのと同じファイルが入っています。

/src/MSX1/src/vm/

/src/common/vm/ の中で、MSX1のビルドに必要な物だけが選択されて入っています。

/src/MSX1/src/vm/msx/

MSXエミュレートのためのファイルが入っています。

/msx/ ディレクトリと定義ファイル以外は、共通ファイルに入っているものと同じファイルが、選択されてコピーされている形です。


可能であれば、これら共通ファイルは1か所で管理すべきとは思うのですが、Arduinoではプロジェクト内のソースを全部ビルド対象にしてしまうので、各機種ごとで必要なファイルだけを入れたディレクトリを作ることにしました。

M5Stack 関連のファイルについては、更新頻度が多そうなので、ビルド時に共通ファイルからコピーする形にしています。
ちなみに、ローカルでの開発時には、M5Stack ディレクトリはシンボリックリンク使って全機種で共通ディレクトリ参照するようにしています。


ビルド方法

ソースはディレクトリ構造を持った状態になっていますので、ビルドにはArduinoIDEではなく、PlatformIO を使う必要があります。
Arduino IDEはディレクトリ構造に対応していません。僕はVisual Studio Code の PlatformIO プラグインを使っています。
(追記:Ardruino IDEでも、 ある程度はディレクトリ構造対応しているのかも?本プロジェクトのソース構造ではディレクトリ認識できませんでした。)

ここでもMSX1を例に説明します。

/src/MSX1/src/vm/M5StackLGFX/ ディレクトリを作成して、そこに /src/common/M5StackLGFX/ 以下の全ファイルをコピーします。
コピーせずにフォルダへのシンボリックリンクを使ってもOKです。
(FM-7エミュレータのみ、M5StackLGFX ではなく M5Stack を使ってください。)

コピーが完了したら、PlatformIOの「Open Project」で /src/MSX1/src/ ディレクトリを開きます。platformio.ini のあるディレクトリです。

ファイル一覧はこういう感じ。


(下にもっと続きます)

ビルド対象を選択してください。

あとは、ビルドすれば完了です!Visual Studio Code + PlatformIO の場合は、画面下部のアイコンから操作できます。

チェックマークがビルド、矢印マークがビルド&書き込み、プラグマークがシリアルモニタ表示です。

1回目は、*.ino → *.cpp 処理の都合でビルド失敗するかもしれません。その場合もう一度ビルドしてください。


M5Stack独自実装部分の common/M5Stack/ ファイルは結構頻繁に更新するため、各エミュレータに反映したいのですが、そのたびにPlatformIO IDEで全機種を順番に開いてビルドするのはかなりしんどいですよね。そういうときはCLI(Command Line Interface)でのビルドが便利です。

PlatformIOをインストールしてあれば、CLIのスクリプトもインストールされています。Pathが通ってないので、Pathに追加しておいてください。Windowsの場合は C:\Users\ {UserID} \.platformio\penv\Scripts です。

platformio.ini のあるディレクトリに移動して、

platformio run

これでビルド。

platformio run -t upload

これで書き込みです。

binファイルは「/src/MSX1/.pioenvs\m5stack-fire/firmware.bin」にできるので、リネームコピーまで行うバッチファイルを作っておくと便利そうです。…とはいえ、これでビルドしたものがホントに実機で動作するか確認せずに公開するのも不安なところはあります。

まあ、もしも動かなかったら、前のバージョンを使うってことで!ぐらいの気持ちで行きましょう。



このエミュレータが実行可能なのは、2019/03/20 時点では M5Stack FIRE のみです!


Amazonリンク貼りつつ、なんですけど、海外からの通販に抵抗が無い場合は、本家M5Stack の AliExpress で購入してみるのもいいかと思います。販売されている商品の種類も多くて、価格も少し安めです。ただし、到着まで半月~1ヶ月ぐらいかかります。