MWXライブラリで記述したアプリケーションプログラムをアクト(Act)と呼びます。まずは、これをビルドして書き込みます。
ビルドディレクトリ構成について
ビルドスクリプトについて
VS Code でのビルドについて
本ページでは、いくつかのビルド方法を記載していますが、いずれの方法も最終的にはmakeコマンドを実行しています。詳細はMakefileの解説を参照ください。
MWSDKをインストールしたディレクトリMWSDK_ROOT (例 C:\MWSDK)
を開きます。以下のような構成になっています。
アクトファイルはAct_samples
以下に格納しています。(以下は一部割愛しています)
これらのアクトは、MWXライブラリの記述の参考となるシンプルな例ですが、多くのアクトは以下の機能を有しています。
センサー値を取得する
センサー値取得後、無線パケットを親機宛に送信する
送信完了後、一定時間スリープする(または割り込みを待つ)
Parent-MONOSTICK
のアクトによりパケットの受信と表示を行っています。この親機用のアクトは、アスキー形式で出力しています。 (:00112233AABBCC...FF[CR][LF]
のような : で始まり、途中は16進数のバイトをアスキー文字2字で表現する形式です。末尾の??は同様に2字のバイトとなりますがLRCというチェックサムバイトになります。参考:アスキー形式)
実際に動作させてみるときは、以下の組み合わせを試してみてください。
では、アクトの中から PingPong のディレクトリの中を見てみましょう。
Act_samples
にある他のアクトもビルドできます。その場合、ディレクトリ名・ファイル名は読み替えるようにしてください。
必ずディレクトリ直下にディレクトリと同名の .cpp
ファイルが必要です。
小規模なアクトならこの.cpp
ファイル内に記述します。規模が大きくなってきたときはMakefileの解説を参考にして複数のファイルに分割してビルドすることが出来ます。
PingPong
ディレクトリ直下にアクトファイル PingPong.cpp
があります。ディレクトリ名を変更した場合は、必ず .cpp
ファイルの名前もディレクトリ名と同名にします。
次にビルドディレクトリを開きます。
ビルドに必要なスクリプトとMakefile
が格納されています。
ビルドスクリプトは、エラーがあまり出ることのない、完成済みのアクト、サンプル提供のアクトなどに向いています。
以下は Windows10用のスクリプト(バッチファイル)です。
実行後にbinファイルが生成されPingPong_BLUE_???.bin
またはPingPong_RED_???.bin
のファイル名になります。???はバージョン番号やライブラリのバージョン文字に置き換わります。
BINファイルが出来上がればビルド成功です。
objs_BLUE
ディレクトリはビルド中に生成された中間ファイルです。削除してもかまいません。
ビルドを迅速にするためパラレルビルドのオプションを設定しています。このためエラーが出た場合はエラーメッセージを視認しづらくなっています。
エラーメッセージを効率的に参照したい場合は VS Code などの開発ツールの利用を推奨します。
build-clean.cmd
を実行すれば、objs_
で始まるディレクトリを消去します。BINファイルは消去しません。
ビルドがうまくいかない場合は、まずエラーメッセージを確認して下さい。errorという文字列が含まれる行中のメッセージから、エラー原因が容易に特定できる場合も少なくありません。
objs_???
ディレクトリにある中間ファイルを削除してから再実行してみてください。(他の環境でビルドした中間ファイルが残っているとmake clean
を含めすべての操作が失敗します)
コマンドライン環境でのビルドについて補足します。
コマンドライン(bash)についての利用の知識が必要です。
OS環境によっては各実行プログラムの動作時にセキュリティ警告が出る場合があります。警告を抑制する設定が必要になります。(警告を抑制してプログラムを動作する運用を行うかは、お客自身またはシステム管理者に相談の上、ご判断ください)
コマンドラインでのビルドは、bash(Bourne-again shell)が動作するウインドウでmake
を実行します。事前に環境変数MWSDK_ROOT
が正しく設定されていることを確認してください。例えばC:/MWSDK
にインストールした場合は ~/.profile
に以下のような設定を行います。
コマンドライン(bash)よりmakeを実行します。make
がない場合はパッケージをインストールする必要があります。
Linux/WSL環境ではmake
またはbuild-essential
パッケージをインストールします。
macOS環境ではXcodeでCommand Line Toolsをインストールします。
ビルドは以下のようになります。
ビルドが行われると objs_??? ディレクトリが作成され、その中に中間ファイルが生成されます。このファイルはコンパイルした環境に依存しているため、他の環境のファイルが残っているとmakeがエラーとなりビルドが失敗します。
makeがエラーとなった場合は直接objs_???
ディレクトリを削除してください。
詳細はMakefileの解説をご覧ください。
ビルドには TWELITE STAGE を推奨します。
MWSDK付属のサンプルプロジェクトの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ディレクトリ下に出来上がっているはずです。確認してみてください。
ビルド定義には Windows10 のファイルシステムに適合しないディレクトリ名 (例:/c/User/...
)を変換する(例:C:/User/...
) 定義を追加しています。
変換は完全ではありませんが、コンパイルメッセージからエラーが発生しているファイル名と行番号を抽出できます。
.vscode/tasks.json
中の実行コマンドは sh -c "make ... | sed -E -e s#..."
のようにコマンド呼び出しすることで、出力メッセージ中のドライブ名相当部の文字列を書き換えています。
ビルドがうまくいかない場合は、まずエラーメッセージを確認して下さい。errorという文字列が含まれる行中のメッセージから、エラー原因が容易に特定できる場合も少なくありません。
念のため、クリーン(objs_???
ディレクトリにある中間ファイルの削除)を行い、ビルドを再実行してみてください。(他の環境でビルドした中間ファイルが残っているとmake clean
を含めすべての操作が失敗します)
WSL (Windows Subsystem for Linux) は Windows10 のサブシステムとして動作する Linux 環境です。
Windows10 では特別な理由がない限りWSL (Windows Subsystem for Linux)は、MWSDKでアクトをビルドするのに必須ではありません。WSLについて、既に知見があり特に利用したい方のみ本節をご覧ください。ここではWSLのインストール方法や使用方法については紹介しません。
MWSDK/Tools/ba-elf-ba2-r36379.w10
以下に Windows10用とLinux用の実行形式が両方含まれます。WSLを動作させ環境変数MWSDK_ROOTを適切に設定します。
例えば C:\Work\MWSTAGE\MWSDK
の場合は以下のように設定します。
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
の抜粋でWSLENV
の環境変数の有無で判定しています。
親
子
解説
親機はM1ピンをLOW(GNDレベル)にして起動する。通常モード(常時稼働)にて、App_TweLiteのような動作を確認できます。
子機同士2台使って動作します。片方から Ping パケットを送ると、相手方から Pong パケットが戻ってきます。
その他
子機用のアクトのパケット送信を確認できます。
バッチファイル名
内容
build-BLUE.cmd
TWELITE BLUE用
build-RED.cmd
TWELITE RED用
コマンド例
解説
make TWELITE=BLUE
TWELITE BLUE用にビルド
make TWELITE=RED
TWELITE RED用にビルド
make cleanall
中間ファイルの削除