ラベル TOPPERS/ASP(Arduino UNO R4版) の投稿を表示しています。 すべての投稿を表示
ラベル TOPPERS/ASP(Arduino UNO R4版) の投稿を表示しています。 すべての投稿を表示

2023年12月1日金曜日

TOPPERS/ASP - Arduino UNO R4版 その3

前回からの続きです。

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


Flexible Software Package (FSP)とは?

FSPとは、ドライバ、プロトコル・スタックなどを開発者に提供するソースコードのライブラリです。

いわゆるRenesas社純正のライブラリパッケージであり、これを使用するとマイコンに内蔵されているペリフェラル(周辺機器)を簡単に利用することができるというものです。

今回の「TOPPERS/ASP Arduino UNO R4版」のカーネル内でも、I/O関連のドライバなどは、このFSPのものを使用しています。

ところが、このFSPのソースコードのライセンスの条項が不明瞭なために再配布できません。

そのため「TOPPERS/ASP Arduino UNO R4版」のソースコードが不完全なものとなり、そのままではビルドが通らず、通すためには手動で不足分のソースコードをコピーしていただくという手間を強いることになってしまいました。

面倒くさい思いをさせてしまって申し訳ありません。

ですが、このFSPを上手く利用すれば「Arduino UNO R4」に搭載されているRAマイコンのすべての周辺機器を最小限のコーディングで簡単に利用できるようになります。

後々、このFSPの便利な使い方の例も書いていきたいと思いますので、どうぞよろしく。

さて、ビルドを通すために足りていないFSPのソースコードを何処から入手すれば良いのか?

そのためには、インストールした「e2 studio」上で雛形となるプロジェクトを作って、そこで生成されたFSPのソースコードを「TOPPERS/AS Arduino UNO R4版」のソースツリーにコピーするという方法を採ります。


雛形プロジェクトの作成

まずは「e2 studio」を起動して下さい。

「e2 studio」 - 1


次に、アプリケーションメニューの「ファイル」から「新規」をクリックし「Renesas C/C++ Project」をクリック、更に展開されたメニューから「Renesas RA」をクリックします。

「e2 studio」 - 2


以下のようなダイアログが表示されたら「Renesas RA C/C++ Project」の表示をクリックして選択状態にしてから、ダイアログ下部の「次へ」ボタンをクリックしましょう。

「New C/C++ Project 」ダイアログ


以下のように「Renesas RA C/C++ Project」ダイアログが表示されたら「Project name」の下のテキストボックスにプロジェクト名を入力します。

雛形プロジェクトなので「Hinagata」とでもしましょうかね。

入力したらダイアログ下部の「次へ」ボタンをクリックです。

「Renesas RA C/C++ Project」ダイアログ - 1


以下のように表示か切り替わります。

ここでは、どんなターゲット向けのソフトウェアを作るのかを問われています。

まずは、ターゲットのマイコン(Device)が違いますね。

「Arduino UNO R4」に搭載されているマイコンは、デフォルトで表記されている型番ではありません。

ですので、これを変更する必要があります。

R7FA2A1AB3CFM」と表記されているテキストボックスの左に「...」というボタンがありますので、これをクリック!

「Renesas RA C/C++ Project」ダイアログ - 2


以下のようなダイアログが表示されますので「Arduino UNO R4」に搭載されているマイコンである「R7FA4M1AB3CFM」を正しく選択して「OK」ボタンをクリックします。

「Device Selection」ダイアログ


「Renesas RA C/C++ Project」ダイアログに戻ります。

Device Selection」の欄に正しいマイコンの型番が表示されていることを確認し、次は「Debugger」の欄に注目します。

今回は、デバッガに「E2 Lite(ARM)」を使用しますので、コンボボックスをこれに設定します。

正しく設定できたら、ダイアログ下部の「次へ」ボタンをクリックしましょう!

「Renesas RA C/C++ Project」ダイアログ - 3


次の表示は、何もせずに「次へ」ボタンをクリックしていいです。

「Renesas RA C/C++ Project」ダイアログ - 4


次の表示も、何もせずに「終了」ボタンをクリック!

「Renesas RA C/C++ Project」ダイアログ - 5


次のポップアップが表示されますので「パースペクティブを開く」ボタンをクリックしてください。

ポップアップ


これで雛形プロジェクトが作成されたはずなのですが「e2 studio」を起動したときと同じ表示のままです。

開いたはずのパースペクティブとやらは一体どこに?

実は、ちゃんと開かれているのです。

「ようこそ」ビューが邪魔しているんですね。

なので、これを除けてしまいましょう。

「e2 studio」の画面右上に「ようこそ」ビューの最小化ボタン(アンダーバーみたいなやつ)がありますので、これをクリックしてください。

「e2 studio」 - 3


すると、以下のような表示になります。

画面左側の「プロジェクト・エクスプローラー」のリストには、ちゃんと「Hinagata」プロジェクトが生成されていることが確認できますね。

「e2 studio」 - 4


マイコンのピンの設定

中央の「Summary」と書いてある「FSP Configuration」タブに注目してください。

「e2 studio」 - 5


このタブの下部には、更に複数のタブが存在しますが、その中の「Pins」タブをクリックしてください。

「e2 studio」 - 6


以下の表示に切り替わります。

「e2 studio」 - 7


ここは何をする画面かっていうと、マイコンのピンの設定です。

例えば、このピンはGPIOに使う…とか、このピンはシリアル通信に使う…とか。

すなわち、今回のターゲットである「Arduino UNO R4」で使用されるマイコンのピンの機能を設定するための作業となります。

そのためには「Arduino UNO R4」の回路図が必要ですね。

ここから、ダウンロードをお願いします。

この回路図で注目したいのは、回路図左上の「HEADERS」の部分です。

「Arduino UNO R4」の回路図 - 1


黄色い四角の左側「JANALOG」は、以下の部分に相当します。

「Arduino UNO R4」 - 1


黄色い四角の右側「JDIGITAL」は、以下の部分ですね。

「Arduino UNO R4」 - 2


例えば、今「e2studio」で開いている「Pin Configuration」で、シリアル通信「SCI2」のためのピン「P302_SCI2_TXD」と「P301_SCI2_RXD」を設定したい場合を考えます。

「Arduino UNO R4」の回路図 - 2


その場合は「Pin Configuration」の中の左側「Pin Selection」リストの中から「SCI2」を選択します。

次に、新たに切り替わった左の「Pin Configuration」の「Operaring Mode」の行の「Disabled」という表記の左側の「」マークをクリックします。

これはコンボボックスになっていて、設定できる機能が展開されます。

この中から「Asynchronous UART」(つまり普通のシリアル通信)を選択します。

「e2 studio」 - 8


すると、以下の表示に切り替わります。

「TXD_MOSI」が「P302」に、「RXD_MOSI」が「P301」に自動的に割り付けられたようです。

回路図では「P302_SCI2_TXD」と「P301_SCI2_RXD」という表記だったので、どうやらこれで正しいようですね。

「e2 studio」 - 9


「FSP Configuration」タブの左側の「FSP Visualization」のマイコンの絵でも「TXD_MOSI」と「RXD_MOSI」が表示され、このピンが「SCI2」の通信用のピンとして割り当てられたことが確認できます。

「e2 studio」 - 10


今回は「TXD_MOSI」が「P302」に、「RXD_MOSI」が「P301」に自動的に割り付けられましたが、これは偶然かもしれません。

もし、それぞれを違うピンに割り付けたい場合は「Pin Configuration」上でピン名の左側にある「」マークをクリックすることで、他のピンの候補を探して、設定することができます。

「e2 studio」 - 11


さて、このような作業を使用するすべてのピンで行うことになります。

このピンはアナログ入力、このピンはI2C通信用、などなど。

でも…


超ぉ~メンドクセエぇ!!


…ごもっとも。

ですので、今回のTOPPERS/ASPを動作させるための最低限の設定済みファイルをアタクシめが用意しときましたぜっ、ダンナ!(誰だオマエ?)

…てなわけで、ここからダウンロードしてください。

arduino_uno_r4.pincfg」というファイルがダウンロードできます。

これをインポートすれば、面倒な作業は一瞬で終わります!

ダウンロードが終わったら「Pin Configuration」の「Manage configutrations...」という表示をクリックしてください。

「e2 studio」 - 12


以下の「Manage Pin Configrations」ダイアログが開いたら「Import」ボタンをクリックします。

「Manage Pin Configrations」ダイアログ - 1


続いて、以下の「Import Configration」ダイアログが開いたら「Browse...」ボタンをクリックします。

「Import Configration」ダイアログ - 1


ダウンロードした「arduino_uno_r4.pincfg」を選択すれば良いのですが…どこにも無いじゃん!って場合は、検索する拡張子を変更しましょう。

Altium Pin Configuration File(*.pincfg)」を選択します。

「Import from pin configuration file」ダイアログ - 1


そうすると「arduino_uno_r4.pincfg」が表示されるはずです。

これを選択し、ダイアログ下部の「開く」ボタンをクリックです!

「Import from pin configuration file」ダイアログ - 2


「Import Configration」ダイアログに戻ったら、追加された「arduino_uno_r4」のチェックボックスを有効にしてから、ダイアログ下部の「終了」ボタンをクリックです。

「Import Configration」ダイアログ - 2

「Manage Pin Configrations」ダイアログ に戻ったら、左側のリストに「arduino_uno_r4」が追加されていることを確認してください。

「Manage Pin Configrations」ダイアログ - 2


左側のリストに元々あった「R7FA4M1AB3CFM_pincfg」は、もういらないので削除しましょう。

ていうか、残ってると後々問題になります。

R7FA4M1AB3CFM_pincfg (Current)」を選択状態にしてから、右側の「Remove」ボタンをクリックします。

「Manage Pin Configrations」ダイアログ - 3

左側のリストで「R7FA4M1AB3CFM_pincfg (Current)」が削除されて「arduino_uno_r4 (Current)」だけが残っていることを確認して、ダイアログ下方の「OK」ボタンをクリックしてください。

ダイアログが消えて「Pin Configuration」に処理が戻ります。

「Manage Pin Configrations」ダイアログ - 4


するとどうでしょ?

ピンの設定が「arduino_uno_r4.pincfg」の内容に更新されていることが分かります。

「FSP Configuration」タブの左側の「FSP Visualization」のマイコンの絵も、設定を反映して、なにやら賑やかになってませんか?


クロックの設定

さて、お次は「Arduino UNO R4」のクロックの設定を行わなければなりません。

この雛形プロジェクトを作成した時点では、外部クロックのXTALを使用するように初期設定されているのですが、実際「Arduino UNO R4」には外部クロックのXTALが搭載されていません。

その代わりに、内部クロックを使用するように設定してあげなければいけません。

これを行うには「FSP Configuration」タブの下部の「Clock」タブをクリックして設定画面を開きます。

「e2 studio」 - 13


クロックの設定画面が開いたら、以下のように外部クロックのXTALを使用する設定から、内部クロック(HOCO 48MHz)を使用する設定に切り替えます。

変更は三箇所

「e2 studio」 - 14


<追記>

「Arduino UNO R4」には、サブクロックが実装されていません。

回路図を見るとRAマイコンの「XTAL」と「EXTAL」端子が未実装になっていることが分かると思います。

したがって、サブクロックを使用しない設定にしなければなりません。

これをやらないと、これから吐き出すコードの中のRTC設定処理でフリーズします。

(「FSP_HARDWARE_REGISTER_WAIT(R_RTC->RCR2_b.RESET, 0);」という行でデッドロック!)

サブクロックの設定は「FSP Configuration」タブの下部の「BSP」タブをクリック、更にその下部に配置されているビューの「プロパティ」タブをクリックして現れるリストボックスから行います。

もし「Subclock Populated」の項目が「Populated」になっていたら「Not Populated」へ変更しましょう。

(どうやら「e2 studio」のバージョンによってデフォルトの設定が変わるみたいです…。)

「e2 studio」 - 14.5


ソースコードの出力

時は来た!

設定内容をソースコードとして出力します。

「FSP Configuration」タブにおいて「Pin Configuration」の右側に「Generate Project Content」という表示があります。

これの「」マークをクリックです!

「e2 studio」 - 15


以下のポップアップが表示されますので「続行」ボタンをクリックします。

これで、設定内容に沿ったソースコードが雛形プロジェクトに出力されたはずです。

「Generate Project Content」ダイアログ


どんなふうに出力されたのかな?…って気になりませんか?

確認してみましょう。

「e2studio」を現在の「FSP Configuration」モードから「C/C++」モードに切り替えましょう。

この切り替えは、画面右上の「C/C++」ボタンで行います。

クリックしてみましょう。

「e2 studio」 - 16


画面左側の「プロジェクト・エクスプローラー」のリストから「Hinagata」、「ra_gen」の順に展開し「pin_data.c」をダブルクリックします。

すると、画面中央にソースコードが表示されます。

これが、今まで作業してきたピンの設定が出力されたものです。

ちょっと複雑ですが、定義名などの内容から「それっぽい」内容になっていることは分かりますね。

「e2 studio」 - 17


以上で、マイコンのピンの設定は完了です。


さて、今回は「TOPPERS/ASP Arduino UNO R4版」を動かす上で足りないソースコードを出力するための雛形プロジェクトを作りました。

また、その雛形プロジェクトで「Arduino UNO R4」に搭載されているマイコンのピン設定を行い、それを反映したソースコードも出力しました。

次のステップは「TOPPERS/ASP Arduino UNO R4版」のソースコードをダウンロードし、雛形プロジェクトで得られたソースコードをそこにコピーします。

その上で「TOPPERS/ASP Arduino UNO R4版」をターミナル(コマンドライン)でビルドするところまでを行っていきましょう。


<続く>

2023年11月14日火曜日

TOPPERS/ASP - Arduino UNO R4版 その2

前回からの続きです。


開発環境の構築

「Arduino UNO R4」に搭載されている「Renesas RA」マイコン用のIDEのインストールを行います。

IDEは、ルネサスエレクトロニクス社純正の「e2 studio」というものを使用します。

以下のページでダウンロードします。


https://www.renesas.com/jp/ja/software-tool/e-studio


開いたページをちょっと下へスクロールして…

「e2 studio」ダウンロードページ - 1


ここですね。

統合開発環境 e2 studio 2023-10 Windows用インストーラ」という項目をクリックすると…

「e2 studio」ダウンロードページ - 2


以下のようなポップアップが表示されます。

ここでは難しく考えずに「Confirm」をクリックします。

「e2 studio」ダウンロードページ - 3


すると以下のページが開きます。

「e2 studio」をダウンロードするためには、ユーザー登録が必要とのこと。

面倒ですが、登録しないと先に進めませんので「登録」をクリックして、アカウントの作成とログインをお願いします。

登録したからと言って、セールスのメールがバンバン来たりとか、そういう害はありませんのでご安心を!

「e2 studio」ダウンロードページ - 4


登録が終わって、一度ログインしてしまえばダウンロードできます。

トップページに戻って、再度「統合開発環境 e2 studio 2023-10 Windows用インストーラ」という項目をクリックです。

「e2 studio」ダウンロードページ - 5


以下のようなページが表示されますので「同意します」をクリック。

ダウンロードが始まります。

「e2 studio」ダウンロードページ - 6


ダウンロードが完了すると「setup_e2_studio_20xx-xx.zip」というファイルが生成されますので、これを解凍します。

解凍されて生成された「setup_e2_studio_20xx-xx.exe」というファイル、これがインストーラー本体ですので、ダブルクリック!

すぐに以下のポップアップが表示されますので、「All Users」をクリックします。

「e2 studio」インストーラー - 1


なにやら、準備中の様ですよ~。

「e2 studio」インストーラー - 2


以下の画面が現れます。

ここではインストールの方法の種類を問われます。

ここでは「Lite Install」を選択して(「Recommended=オススメ」って書いてあるし…)、画面下方の「Next>」ボタンをクリックしましょう。

「e2 studio」インストーラー - 3


続いて表示された以下の画面では「Next>」ボタンをクリック!

Next>」ボタンが有効化されるまで、ちょっと時間がかかるかもです。

「e2 studio」インストーラー - 4


次の表示ではお目当ての「RA」のみにチェックを入れて「Next>」をクリックします。

「e2 studio」インストーラー - 5


以下の表示…ゴチャゴチャしてますが、とりあえず「Next>」ボタンをクリック。

「e2 studio」インストーラー - 6


お約束の画面。

ソフトウェア契約の条件に同意します。」のチェックボックスを有効にしてから「Next>」ボタンをクリックしましょう。

「e2 studio」インストーラー - 7


ここも特に変更する必要はないですね。

Next>」ボタンをクリックして先に進みましょう!

「e2 studio」インストーラー - 8


事情聴取はこれで最後かな?

インストール」ボタンをクリックしてください。

「e2 studio」インストーラー - 9


インストールが始まった様ですが…

「e2 studio」インストーラー - 10


…間髪入れずVisual C++のランタイムのインストールが開始されます。

(しかも「x86 - 32bit」用と「x64 - 64bit」用の2発連続!)

これは、放っておけば勝手に終わります。

「e2 studio」インストーラー - 11


「e2 studio」インストーラー - 12


この後はしばらく時間がかかりますので、しばらくお待ちを。

でも、席を外さないでください。

なぜなら…

「e2 studio」インストーラー - 13


途中で以下ようなポップアップ表示されて、インストール作業が中断されてしまいますので…。

これはデバッガーのデバイスドライバのインストール許可なので、共に「インストール」ボタンをクリックしてインストールしましょう。

このポップアップはインストール中に計2~4回ほど表示されます。

「e2 studio」インストーラー - 14


さて、これでインストールが終わるまで離席を…と思いますが、まだまだです。

唐突に以下のダイアログが表示されます。

とにかく「OK」ボタンをクリックすると…

ARM GNUツールチェーンのインストーラ - 1


以下のようにツールチェーン(コンパイラなど)のインストーラが起動します。

次へ」ボタンをクリックしてください。

ARM GNUツールチェーンのインストーラ - 2


同意しましょう!

同意する」ボタンをクリック。

ARM GNUツールチェーンのインストーラ - 3


インストール先に特別な拘りがなければ、そのまま「インストール」ボタンをクリックしましょう。

ARM GNUツールチェーンのインストーラ - 4


インストール作業が開始されます。

ARM GNUツールチェーンのインストーラ - 5


インストール作業が終了すると、以下の表示となります。

インストール」ボタンをクリックして、ツールチェーンのインストーラを終了させましょう。

ARM GNUツールチェーンのインストーラ - 6


今回の「e2 studio」のインストールでは、デフォルトで以下の2つのバージョンのツールチェーンがインストールされるようです。


●ARM GNU Toolchain 12.2_m pacbti-rel1

●ARM GNU Toolchain 10.3-2021.10


今インストールが終わったのは「~12.2_m pacbti-rel1」の方です。

なので、引き続き「~10.3-2021.10」のインストーラが起動します。

作業としては、前回と一緒です。

ARM GNUツールチェーンのインストーラ - 7


さて、あれやこれやと付きっきりで手間をかけて、ようやく「e2 studio」のインストールが終了します。

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

「e2 studio」インストーラー - 15


次に、今回使う「Renesas RA」マイコン用のツールチェーンの環境変数の設定を行います。

ツールチェーンは2つのバージョンをインストールしましたよね?

さて、どちらを使いましょうか?

「~12.2_m pacbti-rel1」の方が新しいようですが、ツールチェーンに限らずソフトウェアは最新のものが最良とは限らない世界。

ましてや、信頼性が命の組み込み分野…。

ここは十分に枯れていると思われる「~10.3-2021.10」を選択したと仮定して説明します。

(多分、「~12.2_m pacbti-rel1」でも特段大きな問題はないと思いますので、新しいもの好きの方はどうぞ。)

ツールチェーンは、「e2 studio」のインストールにより既に以下のディレクトリにセットアップされているはずです。


C:\Program Files (x86)\GNU Arm Embedded Toolchain\10.2021.10\bin

GNUツールチェーンのディレクトリ


環境変数の設定方法は、このページ(TOPPERS/ASPのビルドからデバッグまで~GNUツールチェーンの導入)の「環境変数の設定」の項目を御覧ください。

ただし、パスは…


C:\Program Files (x86)\GNU Tools ARM Embedded\7 2017-q4-major\bin


…となっているところを…


C:\Program Files (x86)\GNU Arm Embedded Toolchain\10.2021.10\bin


に置き換えてください。

こんな感じ…。

「環境変数名の編集」ダイアログ


ツールチェーンのインストールと環境変数の設定が正しく行われているかを確認します。

コマンドプロンプトを起動し、以下のコマンドを入力します。


> arm-none-eabi-gcc --version


以下のような表示が出力されたら、GNUツールチェーンのインストールと環境変数の設定が正しく行われていることが確認できます。

コマンドプロンプト

これで準備ヨシ!

試しに、いよいよ「e2 studio」を起動させてみましょう!

Windowsメニューから「e2 studio」をクリックします。

以下のようなスプラッシュスクリーンが表示されます。

初回起動には、相当な時間がかかりますのでお覚悟を。

「e2 studio」のスプラッシュスクリーン


以下の表示が現れます。

特に理由がなければ、ここは、デフォルトのワークスペースの場所で「起動」をクリックしましょう。

e2 studioランチャー


やがて、以下の画面が表示されます。

これが「e2 studio」です!

「e2 studio」


以上で開発環境の構築は完了です。

次回は、実際にこの「e2 studio」を使っていきましょう!


<続く>

オープンソース・ソフトウェアのライセンス

仕事で自社の製品に組み込まれているオープンソース・ソフトウェアのライセンスについての調査を命じられました。 私も今までの経歴からオープンソースのソフトウェアを利用して製品開発を行ってきましたので、その手の書籍も熟読しており、人より少しだけライセンスについての知識は持ち合わせている...