もう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 がチカチカします。
お疲れさまでした。
まとめ
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