はじめに
MicrobitプロジェクトがリリースしているMicrobit v1ボードでZephyr OSを動かしてみた。
環境
- ホストOS: Windows 10
- Microbit v1ボード: Micobitのサイトで
オリジナルmicro:bit
と書かれているボード - Zephyr OS: version 2.7.99
- GNU Arm Embedded Toolchain: 9 2020-q2-update
Zephyr開発環境構築
Zephyr 2.7.0のドキュメントのGetting Started Guideを参考にして開発環境を準備する。
chocolateyをインストール
Chocolatey Softwareサイトの右上のInstall Nowボタンを押す。
Step1はOptionalなので何もしないで、Step 2のIndivisual
を押す。
WindowsのPowerShellを管理者で起動して、表示されている以下のコマンドをコピペして実行する。
Set-ExecutionPolicy Bypass -Scope Process -Force; [System.Net.ServicePointManager]::SecurityProtocol = [System.Net.ServicePointManager]::SecurityProtocol -bor 3072; iex ((New-Object System.Net.WebClient).DownloadString('https://community.chocolatey.org/install.ps1'))
これでChocolateyがインストールされるようだ。 Chocolateyのバージョンは、v0.11.3だった。
chocolateyを使ってビルド用のコマンドをインストール
コマンドプロンプトを管理者で起動して以下のコマンドを実行。
choco feature enable -n allowGlobalConfirmation choco install cmake --installargs 'ADD_CMAKE_TO_PATH=System' choco install ninja gperf python git dtc-msys2
- cmake v3.22.1
- ninjav1.10.2
- gperf v3.1
- python v3.10.1
- git v2.34.1
- dtc-msys2 v1.5.1
などがインストールされた。
pipが更新されているようなので最新版に更新
python -m pip install --upgrade pip
Zephyr OSのツールwest
をインストール
pip3 install -U west
westツールでZephyrソースコード入手とpython用スクリプトをインストール
cd c:\ west init zephyrproject cd zephyrproject west update west zephyr-export pip3 install -r c:\zephyrproject\zephyr\scripts\requirements.txt
GNU Arm Embedded Toolchainの設定
事前にインストールしていたGNU Arm Embedded Toolchainサイトの9-2020-q2-update
を使うように環境変数を設定したバッチファイルをC:\zephyrproject\seup.batとして用意した。
set ZEPHYR_TOOLCHAIN_VARIANT=gnuarmemb set GNUARMEMB_TOOLCHAIN_PATH=C:\zephyrproject\gnuarmemb-9-2020-q2-update
最初、GNUARMEMB_TOOLCHAIN_PATHには9-2020-q2-updateの標準のインストール先を指定していたが、スペース文字やダブルクォートが含まれているとwest build時にエラーになるので、9 2020-q2-update
フォルダをc:\zephyrproject\gunarmemb-9-2020-q2-update
にコピーして、環境変数もこちらを参照するようにした。
また、west buildすると、このパスの存在をc:/zephyrproject/zephyr/cmake/compiler/gcc/generic.cmake
の15行目でチェックしているようだが、ここで必ずNothing found at GNUARMEMB_TOOLCHAIN_PATH
エラーになってしまうため、このチェックも以下の様にコメントアウトした。
#if(NOT EXISTS ${GNUARMEMB_TOOLCHAIN_PATH}) # message(FATAL_ERROR "Nothing found at GNUARMEMB_TOOLCHAIN_PATH: '${GNUARMEMB_TOOLCHAIN_PATH}'") #endif()
pyelftools をインストール
west build時にimport elftools
が実行されるので、以下のコマンドを実行して事前にelftoolsをインストールしておく。
pip3 install pyelftools
この問題は以下のissuesにレポートされていた。
No module named 'elftools' · Issue #1392 · zephyrproject-rtos/zephyr · GitHub
Microbit用サンプルプログラム hello_worldをビルド
cd c:\zephyrproject setup west build -b bbc_microbit samples/hello_world
これでビルドはできるようになった。
pyOCDのインストール
プログラムをwest flashでMicrobitボードに書き込むには、pyOCDが必要らしい。
pyOCDサイトのDeveloper's guideを参考にしてインストールする。
cd c:\zephyrproject git clone https://github.com/pyocd/pyOCD cd pyOCD python -m venv venv venv\Scripts\activate pip install -e .[test]
venv環境にてpyocdがc:\zephyrproject\pyOCD\Scripts\pyocd.exeに作成された。 このあと、venv環境のままwest flashするので、コマンドプロンプトはこの状態にしておく。
Tera Termを起動
Tera Termを起動して115200 Baud rateでMicrobitに接続しておく。
hello_worldプログラムを書き込む
venv環境にて、以下のコマンドを実行してビルドしたhello_worldプログラムをMicrobitボードに書き込む。
cd c:\zephyrproject\zephyr west flash
書き込みが完了するとすぐに実行されて、Tera Termウインドウに以下のように表示された。
Microbit用サンプルプログラム
hello_world以外のサンプルもBoard specific samplesに記載されている。
displayサンプルもMicrobit v1で動作するようなので、以下のようにビルドと書き込みをして動かしてみた。9から0へのカウントダウン表示からHello Zephyr!
のスクロール表示まで、いくつかの表示がされた。
west build -b bbc_microbit samples/boards/bbc_microbit/display west flash
変更履歴
- 2022/01/10 新規作成