2025年7月20日日曜日

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

前回からの続きです。

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


「nRF Connect for VS Code」のインストール

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

最後の「Visual Studio Code」もインストールし、日本語化のための拡張機能の導入まで終わりました。

しかし「Zephyr」の開発を行うには、更に「Visual Studio Code」に拡張機能をインストールする必要があります。

…というか、ここからが開発環境構築の本丸だったりします。

インストールした「Visual Studio Code」を立ち上げましょう。

そして、日本語化の拡張機能をインストールした時と同じように、画面左端のアイコンが並んでいるところ、その中の「拡張機能」アイコンをクリックします。

「Visual Studio Code」 - 1


左端に拡張機能のリストが表示されます。

一番上のテキストボックスに「nRF」と入力してください。

フィルターされた候補が色々出てきますが、その中で「nRF Connect for VS Code Extension Pack」という拡張機能を探してクリックします。

画面右に詳細な情報が出てきましたね?

ここから「インストール」ボタンをクリックしましょう。

「Visual Studio Code」 - 2


インストール自体は待たされることもなく意外とアッサリ終わります。

「インストール」ボタンから「無効にする」とか「アンインストール」という文言のボタンに変化したらインストール完了の目安です。

「Visual Studio Code」 - 3


ここでもう一度、画面左端の「拡張機能」アイコンをクリックします。

現在インストールされている拡張機能のリストが表示されます。

すると、前回インストールした日本語化拡張機能「Japanese Language Pack for Visual Studio Code」、それと今インストールした「nRF Connect for VS Code Extension Pack」以外にも何やら沢山の拡張機能がインストールされていることが分かります。

「Visual Studio Code」 - 4


これら意図しない拡張機能は、依存関係で自動的にインストールされたものです。

nRF Connect for VS Code Extension Pack」をインストールしましたが、これ単体では意味を成しません。

これを動かすために必要な拡張機能が他にもあり、それらと一緒に使用しないと機能しない…これを「依存」などと呼びます。

他の拡張機能に依存する拡張機能は、そのインストール時に「Visual Studio Code」が自動的にインストールしてくれます。

今回の場合は「nRF Connect for VS Code Extension Pack」が依存している拡張機能が芋づる式に自動インストールされたため、身に覚えがない拡張機能がリストされているという訳です。

ご安心を。


さて、気が付くと画面左端のアイコン表示欄に見覚えのないアイコンが2つも追加されています。

これらも拡張機能のインストールの結果です。

今回は、上の四角い方のヤツをクリックします。

(サクマドロップスにこんな模様なかったっけ…?)

「Visual Studio Code」 - 5


画面左に「WELCOM」というタブが表示され、その中に「Install Toolchain」というボタンがあります。

これをクリックしてツールチェーンをインストールしましょう。

「Visual Studio Code」 - 6


すると、画面上方のリストビューにインストールできるツールチェーンのバージョン一覧が表示されます。

特に事情がない限りは最新のものを選んで良いでしょう。

お目当てのバージョンをクリック…なのですが、覚悟が必要です。

ツールチェーンのインストールには、かなりの時間がかかります。

お時間があるときにクリックしましょう。

…というわけで、クリック!

「Visual Studio Code」 - 7


インストールが開始され、経過表示が画面右下に表示されるのですが…。

進むのが遅いです。

じっと待ちましょう!

(シャワー浴びられちゃうくらいの時間。)

「Visual Studio Code」 - 8


インストールが完了すると画面右下に「Successfully installed toolchain vx.x.x.」などと表示されます。

これを確認したら、次は「SDK」のインストールです。

ツールチェーンの中にSDKは含まれてないんかいっ!!

…含まれてないらしいです。

というわけで、今度は「WELCOM」というタブの中から「Manage SDKs」という表示をクリックしましょう。

「Visual Studio Code」 - 9


画面上方のリストビュー に「Install SDK」という項目が出てきますので、これをクリック!

「Visual Studio Code」 - 10


すると、ツールチェーンの時と同様、画面上方のリストビューにインストールできるSDKのバージョン一覧が表示されます。

ここはツールチェーンのバージョンと同じものを選んだ方がトラブルは少ないでしょう。

お目当てのバージョンをクリックしてください。

「Visual Studio Code」 - 11


画面上方のリストビューSDKをインストールするパスが表示されます。

特に事情がなければ表示されているパスで問題ないと思いますので、ここでは「Enter」キーをヒット!

「Visual Studio Code」 - 12


インストールが開始され、再び経過表示が画面右下に表示されます。

これまた進むのが遅いです。

ここもじっと待機です!

(アニメ1話くらいは観れちゃう程度の時間。)

「Visual Studio Code」 - 13


インストールが完了すると画面右下に「Successfully installed nRF Connect SDK vx.x.x.」などと表示されます。

これでSDKのインストールも完了です!

「Visual Studio Code」 - 14


これで少なくともZephyrのプロジェクトを作成してビルドする環境は整いました。

次回は、この「Visual Studio Code」で空のZephyrプロジェクトを作成し、それをコンパイルしてターゲットに書き込んで動作させてみましょう。

開発環境の動作確認です。


<続く>

2025年7月13日日曜日

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

前回からの続きです。

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


「Visual Studio Code」のインストール

超有名なエディタ「Visual Studio Code」。

Nordic社の無線マイコンを「Zephyr」を使って開発する上で、半ば標準の開発環境となっています。

このあたり、他のマイコンメーカーが「Eclipse」ベースの開発環境に留まっていることを考えると、先進的ですよね。

(あ、私は「Eclipse」大好きです。)

まずは、インストーラーのダウンロードです。

以下のページにアクセスします。

最近ではクラウド版もあるみたいですが、今回はパソコンにアプリとしてインストールしましょう。

VS Codeをダウンロードする」というバナーをクリックします。


https://azure.microsoft.com/ja-jp/products/visual-studio-code

「Visual Studio Code」ダウンロードページ - 1


以下のようなページに切り替わります。

ここで「Winodws」のバナーをクリックします。

「Visual Studio Code」ダウンロードページ - 2


VSCodeUserSetup-x64-x.xxx.x.exe」というファイルがダウンロードされます。

これをダブルクリックしてインストーラーを起動しましょう。

インストーラーが起動すると、まずはライセンスの確認と承諾です。

ラジオボタンを「同意する」に選択してから「次へ」ボタンをクリックしてください。

「Visual Studio Code」インストーラー - 1


ここから先は、特に事情がない限りは赤い○で示した所をクリックしていくだけで作業は進みます。

「Visual Studio Code」インストーラー - 2


「Visual Studio Code」インストーラー - 3


「Visual Studio Code」インストーラー - 4


「Visual Studio Code」インストーラー - 5


「Visual Studio Code」のインストールが始まります。

「Visual Studio Code」インストーラー - 6


以下の表示が現れるとインストールも完了です。

完了」ボタンをクリックしてインストーラーを終了させましょう。

「Visual Studio Code」インストーラー - 7


インストーラーを閉じる自動的に「Visual Studio Code」が起動します。

ただし、UIが全部英語ですね!

ここでは、これを日本語化する作業もやっちゃいましょう!

他の言語も概ね同じ操作で出来るはずです。

画面左端のアイコンが並んでいるところ、その中の「拡張機能」アイコンをクリックします。

(なんか、積み荷の一個が崩れそうなマークのやつ。)

「Visual Studio Code」 - 1


Japanese Language Pack for Visual Studio Code」という拡張機能をインストールします。

拡張機能は星の数ほどあります。

その中からお目当ての拡張機能を探すには、左上のテキストボックスに拡張機能の名前の文字を入力しフィルター検索します。

今回の場合は「Japan...」などと入力しましょう。

すると「Japanese Language Pack for Visual Studio Code」が候補としてリストされるはずです。

この項目の「Install」ボタンをクリックします。

「Visual Studio Code」 - 2


画面の右下に以下のようなポップアップが出れば「Japanese Language Pack for Visual Studio Code」のインストールは終了です。

このポップアップは「言語拡張機能を有効にするためにVisual Studio Codeを再起動しますか?」と聞いています。

全然オッケーなので「Change Language and Restart」ボタンをクリックしましょう。

「Visual Studio Code」が再起動します。

「Visual Studio Code」 - 3


再起動後にUIを見ると、ちゃんと日本語になっているのが確認できます。

以上で「Visual Studio Code」のインストールは完了です!

「Visual Studio Code」 - 4


これで「Zephyr」を使って開発を始めるために必要な3つのアプリケーションのインストールが終わりました。

これで「Zephyr」をイジれる!…とは行かず…。

この後、インストールしたばかりの「Visual Studio Code」に更なる拡張機能を追加する必要があるのです!


<続く>

2025年7月5日土曜日

TOPPERS/ASP - Arduino UNO R4版 目次

みんな大好き「Arduino」。

豊富なライブラリが用意されていて簡単に安価に入手でき、気軽に電子工作に使えることが魅力です。

そんな「Arduino UNO R4」を「E2 emulator Lite」デバッガでデバッグができて、ちょっと本格的なRenesas RAマイコンの評価ボードとして利用しちゃおう!という目的でTOPPERS/ASPをポーティングしてみました。

後片付け


もし、Arduinoの豊富なライブラリを使用したい!

または、使い慣れた「Arduino IDE」で開発をしたい!

ということであれば、TOPPERS/ASPをマルっとArduinoのライブラリに閉じ込めた「TOPPERS/ASP Arduino UNO R4 ライブラリ(TA2LIB)」という実装が公式から発表されています。

以下のGitHubを参照してください。


https://github.com/toppers/Arduino_TOPPERS_ASP-renesas_uno


以下、本ブログのTOPPERS/ASP Arduino UNO R4版に関する記事の目次です。


■TOPPERS/ASP - Arduino UNO R4版 その1

     TOPPERS/ASP - Arduino UNO R4版 概要

     TOPPERS/ASP - Arduino UNO R4版の注意事項

        必要なもの

        ダウンロード/GitHub


■TOPPERS/ASP - Arduino UNO R4版 その2

開発環境の構築


■TOPPERS/ASP - Arduino UNO R4版 その3

Flexible Software Package (FSP)とは?

雛形プロジェクトの作成

マイコンのピンの設定

クロックの設定

ソースコードの出力


■TOPPERS/ASP - Arduino UNO R4版 その4

Cygwinターミナルでのビルド


■TOPPERS/ASP - Arduino UNO R4版 その5

デバッガ⇔ターゲット・ケーブルの作成


■TOPPERS/ASP - Arduino UNO R4版 その6

プロジェクトの作成


■TOPPERS/ASP - Arduino UNO R4版 その7

プログラムの転送とデバッグ


■TOPPERS/ASP - Arduino UNO R4版 その8

「e2 Studio」で普通にFSPを使う


■TOPPERS/ASP - Arduino UNO R4版 その9

TOPPERS/ASPとFSPを組み合わせて使う~その1


■TOPPERS/ASP - Arduino UNO R4版 その10

TOPPERS/ASPとFSPを組み合わせて使う~その2


■TOPPERS/ASP - Arduino UNO R4版 その11

RTOSを使用した利点とは?

まとめ

ライセンスについて

2025年6月29日日曜日

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

前回からの続きです。


Zephyrの開発環境

Nordic社の無線マイコンをRTOS「Zephyr」を使って開発を始めるには、以下のソフトウェアのインストールが必要です。


〇nRF Command Line Tools

〇nRF Connect for Desktop

〇Visual Studio Code


これらは全て無償で使用できますので安心ですね!

ただし、3つもインストーラーを起動しなければならないので複雑でチョット面倒…。

自分自身への備忘録としての意味合いが強いですが、以降、各々のインストール方法を書いていきます。


「nRF Command Line Tools」のインストール

nRF Command Line Tools」は、プログラムの開発やデバッグに使用される、その名の通りコマンドラインで使用されるアプリケーションです。

具体的には、ビルドの結果出力されたHEXファイルの編集などの機能を持っているようです。

まずは、インストーラーのダウンロードです。

以下のページにアクセスします。

このページを少し下にスクロールして行くと…


https://www.nordicsemi.com/Products/Development-tools/nRF-Command-Line-Tools/Download

「nRF Command Line Tools」ダウンロードページ - 1


インストーラーへのリンクの表示があります。

ここで「nRF-Command-Line-Tools-xx.xx.x-x64.exe」の表示をクリックします。

「nRF Command Line Tools」ダウンロードページ - 2


nrf-command-line-tools-xx.xx.x-x64.exe」というファイルがダウンロードされます。

これをダブルクリックしてインストーラーを起動しましょう。

インストーラーが起動すると、まずはライセンスの確認と承諾です。

I agree to the license terms and conditions」のチェックボックスをチェックしてから「Install」ボタンをクリックしてください。

「nRF Command Line Tools」インストーラー - 1


以下のダイアログが表示されますので右下「Next」ボタンをクリックしましょう。

「nRF Command Line Tools」インストーラー - 2


またまたライセンスの確認と承諾!?

I accept the license terms in the Liceense Agreement」のチェックボックスをチェックしてから「Next」ボタンをクリックです。

「nRF Command Line Tools」インストーラー - 3


ここからしばらくは、特に事情がない限りは赤い○をクリックしていくだけで作業は進みます。

「nRF Command Line Tools」インストーラー - 4


「nRF Command Line Tools」インストーラー - 5


「nRF Command Line Tools」インストーラー - 6


「nRF Command Line Tools」インストーラー - 7


これで「nRF Command Line Tools」のインストールいっちょ上がりです。


「nRF Connect for Desktop」のインストール

nRF Connect for Desktop」は、プログラムの開発やデバッグに使用される、様々なユーティリティやテストプログラムのフレームとかなんとか…?

でも、一番重要なのは評価ボードに内蔵されているデバッガである「J-Link」のドライバーもこれに含まれていることです!

まずは、インストーラーのダウンロードです。

以下のページにアクセスします。

このページを少し下にスクロールして行くと…


https://www.nordicsemi.com/Products/Development-tools/nRF-Connect-for-Desktop

「nRF Connect for Desktop」ダウンロードページ - 1


Downloads」というバナーがありますので、これをクリック。

「nRF Connect for Desktop」ダウンロードページ - 2


すると、インストーラーへのリンクの表示まで飛ばされます。

ここで「nrfconnect-setup-x.x.x-x64.exe」の表示をクリックします。

「nRF Connect for Desktop」ダウンロードページ - 3


nrfconnect-setup-x.x.x-x64.exe」というファイルがダウンロードされます。

これをダブルクリックしてインストーラーを起動しましょう。

なにやら始まった…。

「nRF Connect for Desktop」インストーラー - 1


まもなく「J-Link」のインストールが始まります。

ここからしばらくは、特に事情がない限りは赤い○をクリックしていくだけで作業は進みます。

「nRF Connect for Desktop」インストーラー - 2


「nRF Connect for Desktop」インストーラー - 3


「nRF Connect for Desktop」インストーラー - 4


「nRF Connect for Desktop」インストーラー - 5


「J-Link」のインストールが始まります。

「nRF Connect for Desktop」インストーラー - 6


以下の表示が現れると「J-Link」、それと同時に「nRF Connect for Desktop」のインストールも完了です。

Finish」ボタンをクリックしてインストーラーを終了させましょう。

「nRF Connect for Desktop」インストーラー - 7


このとき、パソコンの画面上に見知らぬ表示が現れていると思います。

こいつが「nRF Connect for Desktop」というヤツでして、必要に応じて開発で使用する様々なアプリケーションやツールを追加インストールするためのランチャーとなっています。

今は、必要がないので消してしまっても大丈夫です。

「nRF Connect for Desktop」


必要になった時は、デスクトップ上にアイコンが作られていますので、ここから起動できます。

「nRF Connect for Desktop」アイコン


今回は「nRF Command Line Tools」と「nRF Connect for Desktop」のインストールを行いました。

Zephyrのための開発環境も残るは「Visual Studio Code」のインストールのみ。

結構簡単じゃね?って思わせてか~ら~の!

これから先が面倒だったりします。


<続く>

2025年6月23日月曜日

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

Zephyrの習得が避けられなかった経緯

私は組み込みソフトウェア・エンジニアとして長年μiTRON準拠のRTOSを使用してきました。

どんなに時代が進もうが、余程大きな案件でなければμiTRON、コレさえマスターしておけば大概の案件に対処できる…と思っていたのですが。


…甘かった!!


そのきっかけがコイツです!

Nordicという会社の「nRF5340」というマイコンです。

「nRF7002 Development Kit」 - 1


Nordic社は、BluetoothやZigbeeなどの2.4GHz帯の無線技術にめっぽう強い半導体メーカーです。

この「nRF5340」も、Bluetoothをはじめ様々な無線ペリフェラルを備えたSoCです。

今後、コイツを仕事で使用する可能性が出てきました。

マイコンとしてのコアはただのARMですから、この上で走るソフトウェアも、いつも通りμiTRON準拠のTOPPERS/ASPでも載せてサクッと作れるっしょ?ってタカを括っていたのですが…コレが大間違い!

何が問題か?

それは、肝心のBluetoothなどの無線周辺機器を動作させるドライバやプロトコルスタックが「Zephyr」というRTOS上での動作を前提としてNordic社から提供されていることです!

昔は、シリアルやSPIなど、組み込みソフトウェアといえばマイコンのデータシートとにらめっこして一からドライバなどをフルスクラッチで作成していました。

今では、こういった開発は工数と信頼性の面で避けられ、マイコンのメーカーからミドルウェアのサンプルが提供され、これを自分のターゲットに移植する…という方法がメジャーです。

このようなサンプルは大概の場合はベアメタル、すなわち特定のRTOSの上で動くものではなく、プレーンな状態で提供される傾向がありました。

しかし最近ではペリフェラルが複雑化しており、ベアメタルでは実装が煩雑になる(つまり読みにくいし、使いにくい)場合が増えてきており、ベアメタルで動作するサンプルに加え、何らかのRTOSの上で動作するサンプルも同時に提供される例も見られるようになりました。

イーサネットやUSBが出てきた辺りで、RTOSを使わないとベアメタルでの実装はキツくなった印象ですね。

しかし、Nordicの例のようにベアメタル向けのものが無く、特定のRTOSでのみ動作するサンプルしか提供されていないという例は私の知る限り初めてでした。

(古いドライバやプロトコルスタックでは提供されていたようですが、今更それらは使いたくありませんよね?)

つまり「Zephyr」というRTOSを使用しないと「nRF5340」に搭載している無線周辺機器が全く使えないということです!


さあ困った…。


ことここに至り「nRF5340」を存分に使用するには「Zephyr」を学ばなければならない状況となってしまいました。

これが、リスキリングってやつかぁ?


Zephyr何するものぞ?

噂の「Zephyr」ですが、一体何者?

私の拙い説明を読んでいただくより、こちらをご覧いただいた方が確実でしょう。

つまり、Linux Foundationが中心に開発を行っているオープンソースのRTOSです。

Zephyrロゴ


Apache License 2.0ライセンスのもと、無料で使用できます。

「nRF5340」の採用するARM Cortex-M33コアだけではなく、RISC-Vや他のアーキテクチャのマイコンもサポートされています。

また、OSのカーネルだけではなく、通信関係のドライバやセキュリティ関連のミドルウェアまで提供されます。

Linux Foundationが主管であるだけに、Linuxと同様コミュニティーによるバザール式の開発スタイルが採られ、世界中のエンジニアが開発を活発に継続しているとのこと。

ZephyrはLinux Foundationが主管しているから誤解されがちですが、ZephyrとLinuxは全くの別物です。

ベテランの方は「μCiinux」などを思い浮かべ、ZephyrをMMU抜きのLinuxミニマム版と解釈してしまいそうですが、設計がまるで異なる実装となっています。

しかしながら、CUIのコンフィギュレーションメニューやデバイスツリーでのハードウェア設定など、Linuxの文化は取り入れられています。

ですので、組み込みLinuxの開発経験者にとっては他のRTOSよりも取っつき易いでしょう。

一方で、私のようなμiTRONしか使ってこなかったプログラマーが、すぐにコイツを使いこなすことができるものでしょうか?


今回のミッション

初めてのRTOSを使うときは、普段使っているRTOSとの動作の差分を見ることが最も近道だと思っています。

どんなRTOSでもタスク(スレッド)、セマフォ、イベントフラグ…など大体同じような機能を持っていて、それらの作成・設定方法や「細かな動き」が異なります。

問題となるのは、その「細かな動き」の違いです。

新しいRTOSの上で走るアプリケーションを組む時には、ついつい今まで使い慣れたRTOSをベースに設計してしまいがちです。

そうすると予想外の問題にぶち当たることが良くあります。

同じ設計で使い慣れたRTOSでは動いたのだから、新しいRTOSでも同様だろう…と思い込んでしまうのは仕方のないことですが、これが落とし穴だったりします。

私たちは、大きな違いにはよく気付くし注意を払うけど、微妙で小さな違い…ましてやOSの中身の動作の違いなどにはなかなか気が付かないものです。

具体的な例として、タスクやスレッドの起動/休止タイミングや優先度とタスクスケジューリングの違いなどです。

大雑把に見れば両OSともに違いはないが細部での動作が異なることが引き金となり、深刻な不具合に繋がるかもしれません。

しかも、そういったものに限って原因の特定は難しい場合が多いのです。

したがって、予めそれぞれの違いを可能な限り把握しておくことが重要だと考えました。

ところで、μiTRON準拠の実装であるTOPPERS/ASPには、RTOSの動きを理解する上で非常に有用なサンプルプログラムが用意されています。

このサンプルプログラムはターゲットとパソコンをシリアル通信で接続し、パソコン上のターミナルからコマンドを送ることによって、μiTRONの主要なシステムコールを実際に動かしてみるといった内容となっています。

こんな感じです。

μiTRONのタスクの切り替えや、その反応のタイミングなどが視覚的に確認でき、非常に理解しやすい「名プログラム」だと思います。

こちらの過去記事に内容を書かせていただいていますので、興味のある方は是非。

今回は、このサンプルプログラムを可能な限り忠実にZephyrに移植し、動作を比較することでμiTRONとの「細かな動き」の違いを見つけていきたいと思います。


必要なもの

今回のターゲットとなるのはNordic社製の評価ボード「nRF7002 Development Kit」です。

「nRF7002 Development Kit」 - 2


搭載されているマイコンこそ「nRF5340」ですが、これは「nRF7002」というWi-Fiのコントローラを「nRF5340」マイコンと組み合わせて使うための評価ボードです。

デバッガはオンボードでかの有名な「J-Link」が載っていますので、別個に用意する必要はありません。

これ一枚で遊べますよ。

こちらでは9,000円行かない程度?

またコレじゃなくとも、同じNordicのボードなら大体同じ手順で動かすことができると思います。


ダウンロード/GitHub

TOPPERS/ASPのサンプルプログラムをZephyrに移植したソースコードの入手は、こちらからどうぞ。

(リンクは「Z」だから下の方です。)


今回は、説明ばかりの退屈な更新となってしまいました…。

次回から開発環境の構築を説明します。


<続く>

TOPPERS/ASP - PIC24F版 その2

前回からの続き です。 開発環境の構築(MPLAB X IDE/XC16編) 「 MPLAB X IDE 」とは、Microchip社の純正のIDEです。 以前「 TOPPERS/ASP - PIC32MX版 その2 」でも紹介していますが、大分時間が経ってしまって、バージョンア...