Zephyr環境構築(Windows)

遅ればせながら、Zephyrの開発環境を構築しました。

構築方法

構築方法は、Zephyr ProjectのGetting Started Guideに、とても丁寧に書かれていました。

docs.zephyrproject.org

ちなみに、わたしのPCはWindows 10。

  1. Select and Update OS
    特に何もせず。

  2. Install dependencies
    書いてあるとおり実施で問題なし。

  3. 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の再実行でエラー解消。

  4. Install needed Python packages
    %HOMEPATH%\を削除して実施。問題なし。

  5. Install Software Development Toolchain
    書いてあるとおり。
    GNU ARM Embedded 7-2018-q2-updateをダウンロード、適当なフォルダに解凍して、環境変数ZEPHYR_TOOLCHAIN_VARIANTGNUARMEMB_TOOLCHAIN_PATHを設定。

  6. 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

f:id:matsujirushix:20191226214926p:plain

動いた♪

他のサンプルコードを実行

他にも、2つコンパイル、実行してみました。

samples/synchronization

複数スレッドの同期を試すサンプルコードです。
2つのスレッドと2つのセマフォで、交互にシリアルポートへメッセージを表示します。

f:id:matsujirushix:20191226220011p:plain

コードを確認すると、片方は自動的にスレッド生成、もう片方は動的にスレッド生成していました。まぁ、動的スレッド生成もできるってことですね。

samples/boards/bbc_microbit/display

micro:bitのLEDをパラパラと点灯するサンプルコードです。

f:id:matsujirushix:20191226220547p:plain

LED点灯の低レベルなコードはライブラリに隠蔽されていて、mainのコードはシンプルでした。

今後やりたいこと

スケジューラの動作とか、ハードウェア制御あたりを調べて試してみたいなと思っています。