遅ればせながら、Zephyrの開発環境を構築しました。
構築方法
構築方法は、Zephyr ProjectのGetting Started Guideに、とても丁寧に書かれていました。
ちなみに、わたしのPCはWindows 10。
Select and Update OS
特に何もせず。Install dependencies
書いてあるとおり実施で問題なし。Get the source code
cd %HOMEPATH%
をスキップして実施。
west update
を実行したときにERROR: update failed for project civetwebというエラーが発生。
git config --global core.protectNTFS false
を実行してzephyrproject\modules\lib\civetwebフォルダを削除してからwest update
の再実行でエラー解消。Install needed Python packages
%HOMEPATH%\
を削除して実施。問題なし。Install Software Development Toolchain
書いてあるとおり。
GNU ARM Embedded 7-2018-q2-updateをダウンロード、適当なフォルダに解凍して、環境変数ZEPHYR_TOOLCHAIN_VARIANT
とGNUARMEMB_TOOLCHAIN_PATH
を設定。Build the Blinky Application
%HOMEPATH%\
を削除して実施。
<your-board-name>
はbbc_microbit
と指定。
結果、error: 'DT_ALIAS_LED0_GPIOS_PIN' undeclaredというエラーが発生。
と、4.で少し引っかかったものの、コンパイルを実行するところまでは出来ました。
サンプルコードのコンパイル、実行
6.でsamples/basic/blinkyをコンパイルしたときにエラーになりましたが、どうやらこのサンプルがmicro:bitに対応していないようです。(というか、micro:bitがいろいろと制限ありそう)
そこで、micro:bitのところに書いてあるサンプルコードsamples/hello_worldをコンパイルしました。
west build -b bbc_microbit samples/hello_world west flash
動いた♪
他のサンプルコードを実行
他にも、2つコンパイル、実行してみました。
samples/synchronization
複数スレッドの同期を試すサンプルコードです。
2つのスレッドと2つのセマフォで、交互にシリアルポートへメッセージを表示します。
コードを確認すると、片方は自動的にスレッド生成、もう片方は動的にスレッド生成していました。まぁ、動的スレッド生成もできるってことですね。
samples/boards/bbc_microbit/display
micro:bitのLEDをパラパラと点灯するサンプルコードです。
LED点灯の低レベルなコードはライブラリに隠蔽されていて、mainのコードはシンプルでした。
今後やりたいこと
スケジューラの動作とか、ハードウェア制御あたりを調べて試してみたいなと思っています。