もう2月になりましたが、あけましておめでとうございます。
今年もよろしくおねがいします。
新年一発目ということで積みマイコンの消化をしようと思い、nRF52840 Dongle に手を出してみました。
本記事では巷で流行っている Zephyr RTOS を 闇深い windows 環境で作り nRF52840 Dongle を使って L チカしたことをメモがてらつらつらと書いていきます。
環境
- Windows 10 64bit
- nRF52840 Dongle
いつの間にか家にありました。 - scoop
パッケージマネージャーです。
mac でいう Homebrew のようなやつです。Zephyr 公式では chocoratory を使用して各種ソフトウェアをインストールしていますが、管理者権限が必要なのとアインストールにコケることがあるということで私は scoop を使いました。
本記事では scoop についてあまり触れません。
zephyr 環境作ってゆく
2020/02/11現在の zephyr の公式ガイドを参考に作っていきます。
Install dependencies
scoop で必要なものをインストールしていきました。
$ scoop install cmake git python36 ninja msys2 ※ 登録している bucket: extras main versions
python は 3.* であれば良いということなので宗教上の理由により 3.6 をインストールしました。
公式をみると上記の他に dtc-msys2 と gperf をインストールしています。
dtc-msys2 は、 別途インストールしなくても msys2 でインストールされているので別途インストールしなくても問題ありません。
chocoratory に記載されている dtc-myys2 の説明みると msys2 を通して dtc ( Device Tree Compiler ) 使うみたいなので、 msys2 をインストールするだけでおkです。
一応確認した結果を下記につけておきます。
$ pacman -Qqe dtc dtc
gperf では、今回の nRF52840 Dongle で Lチカ をする道のりではなくても問題ありませんでした。
もしかしたら、ほかのサンプルを動かすときには必要になるかもしれません。
2020/02/11現在 において、gperf のパッケージは存在しないようです。
そのため、インストールできるように 独自のパッケージを作る必要があります。
(独自のパッケージ作る方法は、そのうち他の記事にまとめると思います)
あとは pip で west をインストールしました。
$pip install west
Get the source code
公式のようにつらつらと実行してゆけばよいです。
Install needed Python packages
zephyrproject\zephyr\scripts\requirements.txt にあるやつを pip でインストールしました。
Install Software Development Toolchain
GNU Arm Embedded Toolchain をインストールしました。
下記の URL を見ながらインストール。
ここはちょこっと躓いたので書いておきます。
2020/02/11時点において、インストールする GNU Arm Embedded Toolchain のバージョンはサイトに記載されている通り 7-2018-q2-updateです。
9-2019-q4-major をインストールしたらビルドできませんでした👏。
環境変数に追加する path は2つです。
変数名 path
ZEPHYR_TOOLCHAIN_VARIANT gnuarmemb
GNUARMEMB_TOOLCHAIN_PATH Toolchain をインストールしたディレクトリ
Build the Blinky Application
公式に書いてあるとおりです。
zephyrproject/zephyr のディレクトリに入っている zephyr-env.cmd を実行
つぎにビルドです。
nRF52840 Dongle の Lチカは下記の URL に書いてあります。
予め pip で nrfutil をインストールをします。
これがないとプログラムを nRF52840 Dongle へ書き込むことができません。
pip install nrfutil
あとは、Lチカのサンプルプログラムをビルド
$ west build -b nrf52840_pca10059 zephyr/samples/basic/blinky
path を間違えると下記のエラーがでます。
ERROR: source directory .zephyr\samples\basic\blinky does not exist FATAL ERROR: refusing to proceed without --force due to above error
その場合は、ビルドを行うカレントディレクトリを確認するか、ビルドを対象の path を確認して再度実行してみてください。
nrfutil をつかって ブートローダのアプリケーションをパッケージ化します。
nrfutil pkg generate --hw-version 52 --sd-req=0x00 --application build/zephyr/zephyr.hex --application-version 1 blinky.zip
あとは、nRF52840 Dongle へ書き込み。
nRF52840 Dongle にあるリセットボタンを押しながらパソコンに差し込み、下記のコマンドを実行します。
$ nrfutil dfu usb-serial -pkg blinky.zip -p COM3 [####################################] 100% Device programmed.
※ COM ポートはデバイスマネージャーで確認してください。
書き込みが完了すると nRF52840 Dongle がチカチカします。
チカチカチカ pic.twitter.com/iCe41u9l4g
— みやかわ (@momijinn_aka) February 3, 2020
お疲れさまでした。
まとめ
windows 環境で nRF52840 Dongle を開発する環境をつくりました。
とりあえず Lチカできることを確認しました。
次回は zephyr に触れてみたいなぁと思ったり思っていなかったりしています。
本記事とはあまり関係ありませんが、 scoop を使った環境構築ホント楽です。
ででん大先生(@deden_twi) の本は大変わかりやすいのでぜひお買い求めください。
https://dedendendeden.booth.pm/items/1816949
参考
- Getting Started Guide, zephyr, https://docs.zephyrproject.org/latest/getting_started/index.html
- Zephyr環境構築(Windows), matsujirushi’s blog, http://matsujirushi.hatenablog.jp/entry/2019/12/26/220621
コメント