Procedure

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

Procedure
この記事は約6分で読めます。
スポンサーリンク

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

https://docs.zephyrproject.org/latest/getting_started/index.html

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

https://docs.zephyrproject.org/latest/getting_started/toolchain_3rd_party_x_compilers.html#gnu-arm-embedded

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

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

Sorry, Page Not Found — Zephyr Project Documentation

予め 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

コメント

タイトルとURLをコピーしました