アクトのビルド
MWXライブラリで記述したアプリケーションプログラムをアクト(Act)と呼びます。まずは、これをビルドして書き込みます。
ビルドディレクトリ構成について
ビルドスクリプトについて
VS Code でのビルドについて
ビルドディレクトリ構成について
MWSDKをインストールしたディレクトリMWSDK_ROOT (例 C:\MWSDK)
を開きます。以下のような構成になっています。
MWSDK_ROOT
|
+-ChipLib : 半導体ライブラリ
+-License : ソフトウェア使用許諾契約書
+-MkFiles : makefile
+-Tools : コンパイラ等のツール一式
+-TWENET : TWENET/MWXライブラリ
+-Act_samples : アクトサンプル
...
アクトファイルはAct_samples
以下に格納しています。(以下は一部割愛しています)
Act_samples
|
+-CoreAppTwelite : App_TweLiteと同じ構成のボード用のアクト
+-PAL_AMB : 環境センス PAL 用のアクト
+-PAL_MAG : 開閉センス PAL 用のアクト
+-PAL_MOT : 動作センス PAL 用のアクト
..
+-Parent-MONOSTICK : 親機アクト、MONOSTICK用
+-PingPong : PingPong アクト
+-PulseCounter : パルスカウンタを利用したアクト
+-act0 : スクラッチ(とりあえず書いてみる)用アクト
これらのアクトは、MWXライブラリの記述の参考となるシンプルな例ですが、多くのアクトは以下の機能を有しています。
センサー値を取得する
センサー値取得後、無線パケットを親機宛に送信する
送信完了後、一定時間スリープする(または割り込みを待つ)
Parent-MONOSTICK
のアクトによりパケットの受信と表示を行っています。この親機用のアクトは、アスキー形式で出力しています。 (:00112233AABBCC...FF[CR][LF]
のような : で始まり、途中は16進数のバイトをアスキー文字2字で表現する形式です。末尾の??は同様に2字のバイトとなりますがLRCというチェックサムバイトになります。参考:アスキー形式)
実際に動作させてみるときは、以下の組み合わせを試してみてください。
親
子
解説
では、アクトの中から PingPong のディレクトリの中を見てみましょう。
Act_samples
+-PingPong
+-PingPong.cpp : アクトファイル
+-build : ビルドディレクトリ
+-.vscode : VS Code 用の設定ファイル
必ずディレクトリ直下にディレクトリと同名の .cpp
ファイルが必要です。
PingPong
ディレクトリ直下にアクトファイル PingPong.cpp
があります。ディレクトリ名を変更した場合は、必ず .cpp
ファイルの名前もディレクトリ名と同名にします。
次にビルドディレクトリを開きます。
Act_samples
+-PingPong
+-build
+-Makefile : makefile
+-build-BLUE.cmd : TWELITE BLUE 用ビルドスクリプト
+-build-RED.cmd : TWELITE RED 用ビルドスクリプト
+-build-clean.cmd : obj_* ファイル削除
ビルドに必要なスクリプトとMakefile
が格納されています。
ビルドスクリプト(Windows10)
ビルドスクリプトは、エラーがあまり出ることのない、完成済みのアクト、サンプル提供のアクトなどに向いています。
以下は Windows10用のスクリプト(バッチファイル)です。
バッチファイル名
内容
build-BLUE.cmd
TWELITE BLUE用
build-RED.cmd
TWELITE RED用
実行後にbinファイルが生成されPingPong_BLUE_???.bin
またはPingPong_RED_???.bin
のファイル名になります。???はバージョン番号やライブラリのバージョン文字に置き換わります。




BINファイルが出来上がればビルド成功です。
ビルドを迅速にするためパラレルビルドのオプションを設定しています。このためエラーが出た場合はエラーメッセージを視認しづらくなっています。
エラーメッセージを効率的に参照したい場合は VS Code などの開発ツールの利用を推奨します。
クリーン(中間ファイルの削除)
build-clean.cmd
を実行すれば、objs_
で始まるディレクトリを消去します。BINファイルは消去しません。
ビルドがうまくいかない場合は、まずエラーメッセージを確認して下さい。errorという文字列が含まれる行中のメッセージから、エラー原因が容易に特定できる場合も少なくありません。
objs_???
ディレクトリにある中間ファイルを削除してから再実行してみてください。(他の環境でビルドした中間ファイルが残っているとmake clean
を含めすべての操作が失敗します)
コマンドライン(Linux/macOS)でのビルド
コマンドライン環境でのビルドについて補足します。
コマンドライン(bash)についての利用の知識が必要です。
OS環境によっては各実行プログラムの動作時にセキュリティ警告が出る場合があります。警告を抑制する設定が必要になります。(警告を抑制してプログラムを動作する運用を行うかは、お客自身またはシステム管理者に相談の上、ご判断ください)
コマンドラインでのビルドは、bash(Bourne-again shell)が動作するウインドウでmake
を実行します。事前に環境変数MWSDK_ROOT
が正しく設定されていることを確認してください。例えばC:/MWSDK
にインストールした場合は ~/.profile
に以下のような設定を行います。
MWSDK_ROOT=/mnt/c/MWSDK
export MWSDK_ROOT
コマンドライン(bash)よりmakeを実行します。make
がない場合はパッケージをインストールする必要があります。
$ make
Command 'make' not found, but can be installed with:
sudo apt install make
sudo apt install make-guile
$ sudo apt install make
...
ビルドは以下のようになります。
$ cd $MWSDK_ROOT
$ cd Act_samples/PingPong/build
$ pwd
/mnt/c/MWSDK/Act_samples/PingPong/build
$ ls
... ファイル一覧の表示
$ rm -rfv objs_*
... 念のため中間ファイルを削除
$ make TWELITE=BLUE
... BLUE用に通常ビルド
$ make -j8 TWELITE=BLUE
... BLUE用にパラレルビルド(同時に8プロセス)
中間ファイルについて
ビルドが行われると objs_??? ディレクトリが作成され、その中に中間ファイルが生成されます。このファイルはコンパイルした環境に依存しているため、他の環境のファイルが残っているとmakeがエラーとなりビルドが失敗します。
makeがエラーとなった場合は直接objs_???
ディレクトリを削除してください。
コマンド例
詳細はMakefileの解説をご覧ください。
コマンド例
解説
make TWELITE=BLUE
TWELITE BLUE用にビルド
make TWELITE=RED
TWELITE RED用にビルド
make cleanall
中間ファイルの削除
VS Code でのビルドについて
ビルドには TWELITE STAGE を推奨します。
MWSDK2020_12 以降、VS Code でのビルド定義については保守更新しません。
OS環境によっては各実行プログラムの動作時にセキュリティ警告が出る場合があります。警告を抑制する設定が必要になります。(警告を抑制してプログラムを動作する運用を行うかは、お客自身またはシステム管理者に相談の上、ご判断ください)
VS Code では、Act_samplesディレクトリ直下にあるワークスペースファイルを開くか、Act_samples以下のアクトディレクトリを開きます。
以下の例では英語インタフェースの画面例で、ワークスペースを開いています。
ワークスペースを開き [Terminal>Run Task...]
を選択します。

ビルドするTWELITE無線モジュールの種別(BLUE/RED)とアクト名を選択します。以下の例ではBuild for TWELITE BLUE PingPong (TWELITE BLUE用/PingPongアクト) を選択しています。選択後すぐにビルドが始まります。

ビルド中の経過は画面下部の TERMINAL 部分に出力されます。

正しくビルドできた場合、上記画面例の反転表示部のように .elf ファイルが生成されるメッセージがサイズ情報(text data bss dec hex filename
と記載がある部分)とともに出力されます。
またBINファイル(上記では PingPong_BLUE_???.bin
)ファイルがbuildディレクトリ下に出来上がっているはずです。確認してみてください。
ビルドがうまくいかない場合は、まずエラーメッセージを確認して下さい。errorという文字列が含まれる行中のメッセージから、エラー原因が容易に特定できる場合も少なくありません。
念のため、クリーン(objs_???
ディレクトリにある中間ファイルの削除)を行い、ビルドを再実行してみてください。(他の環境でビルドした中間ファイルが残っているとmake clean
を含めすべての操作が失敗します)
WSLについて
WSL (Windows Subsystem for Linux) は Windows10 のサブシステムとして動作する Linux 環境です。
Windows10 では特別な理由がない限りWSL (Windows Subsystem for Linux)は、MWSDKでアクトをビルドするのに必須ではありません。WSLについて、既に知見があり特に利用したい方のみ本節をご覧ください。ここではWSLのインストール方法や使用方法については紹介しません。
MWSDK2020_05 .. 2020_10
MWSDK/Tools/ba-elf-ba2-r36379.w10
以下に Windows10用とLinux用の実行形式が両方含まれます。WSLを動作させ環境変数MWSDK_ROOTを適切に設定します。
例えば C:\Work\MWSTAGE\MWSDK
の場合は以下のように設定します。
$ export MWSDK_ROOT=/mnt/c/Work/MWSTAGE/MWSDK
MWSDK2020_12
TWELITE STAGE SDK パッケージには、WSL用の実行形式は含まれません。
MWSTAGE/Tools/ba-elf-ba2-r36379.wsl
というフォルダ名で、ツール一式を格納してください。ツールはMWSDK2020_10のMWSDK/Tools/ba-elf-ba2-r36379.w10
を用いるのが平易です。
ツールの選択
MWSDK/Tools/MkFiles/rules.mk
で環境の判定とツールディレクトリの選択をしています。以下はrules.mkの抜粋です。
# Configure for WSL (Windows Subsystem Linux)
ifneq ($(origin WSLENV),undefined)
$(info !!!WSL environment, use Linux toolchain instead.)
TOOLCHAIN_PATH = ba-elf-ba2-r36379.wsl
endif
最終更新