Back to tech

windows で zephyr 環境作って nRF52840 Dongle でLチカした道のり

3 min read
Table of Contents

もう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 の公式ガイドを参考に作っていきます。

docs.zephyrproject.org
docs.zephyrproject.org

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 を見ながらインストール。

docs.zephyrproject.org
docs.zephyrproject.org

ここはちょこっと躓いたので書いておきます。

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 に書いてあります。

docs.zephyrproject.org
docs.zephyrproject.org

予め 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 がチカチカします。

twitter.com
twitter.com

お疲れさまでした。

まとめ

windows 環境で nRF52840 Dongle を開発する環境をつくりました。

とりあえず Lチカできることを確認しました。

次回は zephyr に触れてみたいなぁと思ったり思っていなかったりしています。

本記事とはあまり関係ありませんが、 scoop を使った環境構築ホント楽です。

ででん大先生(@deden_twi) の本は大変わかりやすいのでぜひお買い求めください。 https://dedendendeden.booth.pm/items/1816949

参考