2025年8月10日日曜日

μiTRONプログラマーがZephyrに挑戦! その5

前回からの続きです。

このテーマを最初からご覧になる場合はこちらからどうぞ。


「nRF Util」のコピー

前回までにNordic社の無線マイコンで「Zephyr」の開発を行うのに必要な「Visual Studio Code」を含む3つのアプリケーションをインストールしました。

更に「Visual Studio Code」に対しツールチェーンSDKなどの拡張機能のインストールも完了しました。

さて、これで「Zephyr」を動かせる!…と思いきや、必要な手順がもう一つあります。

それはNordic社が提供する「nRF Util」なるもののダウンロードとコピーです。

以下のページにアクセスしてください。


https://www.nordicsemi.jp/tools/nrf-util/

「nRF Util」ダウンロードページ - 1


このページを下の方までスクロールすると…あった!

ダウンロードのリンクがありますので、これをクリックします。

「nRF Util」ダウンロードページ - 2


この「nRF Util」は、インストーラーではなく「nrfutil.exe」という実行形式でダウンロードされます。

ダウンロードページの説明によると、この「nrfutil.exe」をパスの通ったディレクトリにコピーしろ!…ということのようです。

これに従って、私は以下のディレクトリにコピーしました。

ここは、以前「μiTRONプログラマーがZephyrに挑戦! その2」の記事でインストールした「nRF Command Line Tools」のディレクトリです。


C:\Program Files\Nordic Semiconductor\nrf-command-line-tools\bin

「nRF Command Line Tools」のディレクトリ


ここなら「コマンドラインツール」って名乗っているのでパスは通っているはずだし、新しいディレクトリを作って「PATH」環境変数に追加するのイヤだったので。

では「nrfutil.exe」って何するものなの?ってことですが、ダウンロードページの説明を読む限りでは、すでにインストールした「nRF Command Line Tools」や「nRF Connect for Desktop」、さらには「Visual Studio Code」の拡張機能であるツールチェーンやSDKの範疇から漏れた細々とした機能をまとめたもの…のようですが。

なんというか、後付け感スゴい。

それこそ「nRF Command Line Tools」辺りに含めてくれれば手間が省けると思うのですが。

ともあれ、これが無いとこの先に進めないので仕方がありません。

そのうちNordic社も改善してくれるでしょう。


「nRF7002 Development Kit」の接続

いよいよ今回のターゲットである「nRF7002 Development Kit」とパソコンをUSBケーブルで接続します。

このボード、USB micro-Bポートが2つ実装されていますが、開発で使用するのは左側の中央に配置されている方のポートです。

「nRF7002 Development Kit」 - 1


パソコンと接続した時、ボードに実装されているLEDを確認してください。

何か所か光るはずなのですが、一個も光っていない場合はボード左下のスライドスイッチをON(外側にスライド)にしてください。

これで光ったでしょう?

「nRF7002 Development Kit」 - 2


パソコンが「nRF7002 Development Kit」を正しく認識すると、画面上に以下のエクスプローラが表示されます。

パソコンはボードを「JLINK」という名前のストレージデバイスとして認識しました。

「J-Link」ストレージデバイス


この時デバイスマネージャーを見てみると「ポート(COMとLPT)」として「JLink CDC UART Port」が2つ(2つも!?)が認識されていることが確認できます。

どうやら接続は上手くいっているみたいですね。

デバイスマネージャー


初めてのZephyrプロジェクト

Zephyrの簡単なプロジェクトを作成して、動かしてみましょう。

まずは「Visual Studio Code」を立ち上げましょう。

次に画面左端のアイコンが並んでいるところ、その中の四角いアイコン(「nRF Connect」)をクリックします。

「Visual Studio Code」 - 1


画面左端の各項目が以下のように変化したはずです。

その中で、一番下にある「CONNECTED DEVICES」という表示をクリックして展開します。

「Visual Studio Code」 - 2


すると何やら数列が出てきました。

これは、接続した「nRF7002 Development Kit」のシリアルナンバーのようなものと考えてください。

そしてコイツを更にクリックします。

「Visual Studio Code」 - 3


以下のように展開されましたか?

この中で「VCOMx」というのは、シリアルポートの事で、デバイスマネージャーで確認したポート番号と一致していることを確認してください。

ここでも2つありますよね?

「Visual Studio Code」 - 4


プロジェクトを作成しましょう。

画面左端の項目の中で「WELCOME」という表示があります。

その下に展開されている項目の中から「Create a new application」をクリックします。

すると画面上方のリストビューに「Create a blank application」という表示が現れますので、これをクリックです。

「Visual Studio Code」 - 5


次に、画面上方のリストビューにこれから作成するプロジェクトの保存場所を入力できるようになります。

デフォルトでは「C:\Users\<ユーザー名>\untitled」と入力されていますので、今回はこのままで良いでしょう。

Enterキーを押下します。

「Visual Studio Code」 - 6


確認のポップアップが表示されます。

Open」ボタンをクリックしましょう。

「Visual Studio Code」 - 7


以下の警告も「はい、作成者を信頼します」ボタンをクリックでOKです。

「Visual Studio Code」 - 8


これでプロジェクトはちゃんと作成されたのか?

画面上方のリストビューには「untitled」という表示はされていますね?

画面左端の「フォルダー」アイコンをクリックして「untitled」ディレクトリの中を確認してみましょう。

「Visual Studio Code」 - 9


すると「untitled」ディレクトリの中にいくつかのファイルの他、更に「src」というディレクトリがあるようです。

この中もクリックして展開してみましょう。

「Visual Studio Code」 - 10


その中には自動生成された「main.c」がありました。

これをクリックすると「Visual Studio Code」のメインビューにソースコードが表示されます。

「Visual Studio Code」 - 11


この「main.c」の「main()」関数が、Zephyrアプリケーションのエントリーになります。

自動生成されたままだと、すぐに「return 0;」となっていますね。

これでは面白くないので「main.c」を以下のように書き換えてみましょう。

まあ、大体何をやっているのかはお分かりになるかと…。

書き換えた後は、ファイルの保存も忘れずに!

  1. #include <zephyr/kernel.h>
  2. int main(void)
  3. {
  4.         while (1) {
  5.                 /* VCOM1 にメッセージを出力 */
  6.                 printk("main_thread is running...\r\n");
  7.                 /* 一秒 (1000ms) 待つ */
  8.                 k_sleep(K_MSEC(1000));
  9.         }
  10.         return 0;
  11. }


続いて、このプロジェクトをコンパイルしてターゲットに書き込んで動かしてみましょう。

画面左端の「nRF Connect」アイコンをクリックしましょう。

「Visual Studio Code」 - 12


画面左端の各項目が以下のように変化しますので、「APPLICATION」、「untitled」直下の「Add build configuration」という項目の左端の「」部分をクリックしてください。。

「Visual Studio Code」 - 13


すると「Visual Studio Code」のメインビューに「Add Build Configuration(untitled)」という画面が表示されます。

ここで、作成したプロジェクトをどのようにビルドするかの設定を行う訳ですね。

今回変更しなければならないのは「Board Target」です。

今回のターゲットは「nRF7002 Development Kit」ですので、それらしいのをコンボボックスから見つけます。

結果「nrf7002dk/nfr5340/cpuapp/ns」というのが良さそうです。

これをクリックして選択しましょう。

「Visual Studio Code」 - 14


設定を反映するには「Add Build Configuration(untitled)」を一番下までスクロールして現れた「Genarate and Build」ボタンをクリックします。

「Visual Studio Code」 - 15


これでビルドのコンフィギュレーションとアプリケーションのビルドが行われるのですが…これがエラい待たされます。

毎回これだとイヤになっちゃいますが、コンフィギュレーションにやたらと時間が掛かるのは最初だけですのでご安心を。

(とはいえ、通常のビルドも決して速くはないです…。)

とにかく、画面右下の経過表示が消えるまでは我慢です。

「Visual Studio Code」 - 16


作業が終わるまでに「TeraTerm」などのターミナルソフトウェアを立ち上げておきましょう。

(「TeraTerm」のインストールの方法や使い方はこちらを参考にしてください。)

ポートは「CONNECTED DEVICES」項目の直下にあった「VCOM1」の番号を選択します。

(私の環境では「COM26」でしたね。)

ボーレートは「115200」に設定しておきます。

「TeraTerm」 - 1


そうこうしている内にコンフィギュレーションとアプリケーションのビルドが無事完了したでしょうか?

これらが終わると「Visual Studio Code」のメインビューに表示されていた「Add Build Configuration(untitled)」と画面右下の経過表示も消えているはずです。

また、コンフィギュレーションの結果として、画面左端の項目の中に「ACTION」という表示が追加されています。

この直下の「Debug」という項目をクリックすると、ビルドしたアプリケーションがターゲットに転送され、それが実行されます。

「Visual Studio Code」 - 17


しばらくしてデバッガが起動した後、以下の「cpu_idle.c」というファイルの「SLEEP_IF_ALLOWED()」マクロの行でブレークが掛かると思います。

ここはデバッグのツールバーから「▶」(続行)をクリックして、プログラムを先に進めましょう。

「Visual Studio Code」 - 18


一方、立ち上げておいた「TeraTerm」を見てみましょう。

以下のように「main_thread is running...」という表示が一秒毎に表示されているでしょうか?

もし正しく表示されているなら目論見通り、大成功ですね!

「TeraTerm」 - 2


Zephyrのプロジェクトの作成方法と、そのビルド/転送の一連の流れを紹介させていただきました。

次回は、本題の「zephyr_sample」を動かしてみましょう!

なんか…ZephyrってμiTRONと比べて、何をするんでもいちいち時間が掛かるという印象です。


<続く>

0 件のコメント:

コメントを投稿

μiTRONプログラマーがZephyrに挑戦! その5

前回からの続き です。 このテーマを最初からご覧になる場合は こちら からどうぞ。 「nRF Util」のコピー 前回までに Nordic社 の無線マイコンで「 Zephyr 」の開発を行うのに必要な「 Visual Studio Code 」を含む3つのアプリケーションをインス...