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月21日火曜日

「pcDuino3」でYocto Project その3

前回からの続きです。

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


Ubuntuのダウンロード

前回インストールした「VMware Workstation Player」で仮想のパソコンを作成し、そこにLinuxをインストールしようと思います。

一口にLinuxと言っても、それこそ星の数ほど多くのディストリビューションがあります。

しかし「Yocto Project」の公式リファレンスマニュアルのページ「1 System Requirements」によると、サポートされているディストリビューションは、以下の通りです。


●Fedora

●openSUSE

●CentOS

●Debian

●Ubuntu


そのうちのどれを選択するか?

今回は、現在最もシェアが高い「Ubuntu」というディストリビューションを選びます。

シェアが高いディストリビューションということは、インターネット上の情報が最も豊富ということです。

このことは、必然的に「Ubuntu」で「Yocto Project」を使用している人が多く、トラブルに遭った場合に解決するための情報も得やすいことを意味します。

これは大きなメリットです!

早速、この「Ubuntu」を手に入れましょう!

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


https://jp.ubuntu.com/


ページ上部の「ダウンロード」の表示をクリックしてください。

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


ページが切り替わったら、少し下の方にスクロールしてもらって…

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


以下の通り「ダウンロード」の表示をクリックします。

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


ダウンロードが開始されるはずです。

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


ダウンロードが完了したら、早速そのファイルを見てみましょう。

ubuntu-xx.xx.x-desktop-amd64.iso」みたいなファイル名だと思います。

拡張子が必ず「.iso」であることを確認してください。

これで「Ubuntu」のインストールディスク・イメージのダウンロードは完了です。


「VMware Workstation Player」の仮想マシンの作成

さて「VMware Workstation Player」を起動させましょう。

以下の画面から「新規仮想マシンの作成」の表示をクリックしてください。

「VMware Workstation Player」 - 1


以下のダイアログが現れたら「インストール元:」のラジオボタンを「インストーラ ディスク イメージ ファイル」に設定します。

更に右側の「参照」ボタンをクリックして、先程ダウンロードした「ubuntu-xx.xx.x-desktop-amd64.iso」という名前のインストールディスク・イメージを指定します。

インストールディスク・イメージが認識されると、パスを表示しているテキストボックスの下に「Ubuntu 64 ビット xx.xx.xが検出されました…」という表示が出てきます。

それを確認してから、ダイアログ下方の「次へ」ボタンをクリックです。

「VMware Workstation Player」 - 2


続いて、以下のような表示が出てきます。

ここは面倒なんで4箇所全部「yocto」にしました。

もっと丁寧に設定したい方は、任意でどうぞ。

「VMware Workstation Player」 - 3


次の表示も、丁寧な方は任意で設定してください。

デフォルトでも構わない方は、そのまま「次へ」ボタンをクリックです。

「VMware Workstation Player」 - 4


次はちょっと悩みどころ…。

今作ろうとしている可能マシンに振り分ける仮想ハードディスクのサイズの設定です。

ハードディスクの容量は、一般的に「Yocto Project」を使うとなると100GB以上が必要と言われています。

これは、今この「VMware Workstation Player」を動かしているパソコンのハードディスクから割り当てることになるため、どれだけのサイズを設定するかは、パソコンの残りの空き容量次第となります。

サイズは大きい方が後々面倒がなくて良いので、ここでは余裕を持って「256GB」と設定します。

(パソコンのハードディスクの空き容量がそんなに無い方は「128GB」でも行けるかな?)

設定が終わったら「次へ」ボタンをクリック。

「VMware Workstation Player」 - 5


次の表示では「ハードウェアをカスタマイズ」ボタンをクリックしてください。

「VMware Workstation Player」 - 6


ここが最後の思案のしどころ…。

仮想ハードディスクの割当に続いて、今作ろうとしている可能マシンに振り分けるメモリのサイズの設定です。

「VMware Workstation Player」は、ホストマシンの上で仮想マシンを動かします。

すなわち、Windowsが動いている上で同時にLinuxを動かすことになります。

この時、Windowsのためのメモリを増やしてLinuxのためのメモリを減らすと、Windowsのアプリケーションの動作が速くなり、Linuxのアプリケーションの動作が遅くなります。

逆もまた然り。

しかし「Yocto Project」は、非常に重いフレームワークです。

ソースコードのダウンロードやコンパイル、多くのファイルのコピーを何百回何千回と繰り返します。

一つのディストリビューションを作るのに、大変な時間がかかります。

そのため、Linuxを動作させる仮想マシンのメモリは、やはり多いほど処理速度が向上し、作業時間は短縮されます。

そこで、以下のように「推奨最大メモリ」の印で示される容量を設定しました。

(下の画像の例では「13.4GB」ですね。)

ちなみに、メモリと同様に、プロセッサ・コア数もこの画面で設定可能です。

こちらもメモリの場合と同様の理屈で多いほど有利ですが、お使いのCPUの半分ほどを振り分ければ良いと思います。

上記は、パソコンのCPUが4コア持っているので、そのうちの半分の2コアを仮想マシンに割り当てた例です。

この画面で可能な設定は非常に悩みますが、後から設定変更も可能ですので、それほど気を揉まないでくださいね。

設定が終わったら「次へ」ボタンをクリックしましょう。

「VMware Workstation Player」 - 7


以下の表示に切り替わったら「完了」ボタンをクリックして、仮想マシン、いよいよ起動です!

「VMware Workstation Player」 - 8


仮想マシンへのUbuntuのインストール

仮想マシンが起動する冒頭、以下の表示が出てきますが、これは「OK」ボタンをクリックしてください。

大したことじゃないです。

Ubuntuのインストール - 1


しばらくすると、仮想マシン上で「Ubuntu」のインストールディスク・イメージが実行されます。

Linux起動中…。

Ubuntuのインストール - 2


クリスタルなクラゲ!?

なかなかにアーティスティックな壁紙!

Ubuntuのインストール - 3


さて、いよいよ「Ubuntu」のインストーラが開始されます。

まずはキーボードの設定です。

お使いの環境に合わせて設定し「Continue」ボタンをクリックします。

Ubuntuのインストール - 4


この後は、しばらく「Continue」ボタンを連打で良いです。

Ubuntuのインストール - 5


Ubuntuのインストール - 6


Ubuntuのインストール - 7


Ubuntuのインストール - 8


以下の画面になったら、手入力が必要です。

ここも横着して全部「yocto」と入力しました。

この「Ubuntu」は「Yocto Project」のための一時的な環境で、なにもサーバーを構築するわけでもないのだから、あまり神経質にならなくて良いと思いますよ。

入力が終わったら「Continue」ボタンをクリック。

Ubuntuのインストール - 9


ふぅ…ようやくインストールが始まりました。

インストールが終了するまで、ある程度の時間がかかります。

Ubuntuのインストール - 10


インストールが完了すると、ひっそりと味気なく…以下のポップアップが表示されます。

「再起動していいですか?」…

「良いですよ!」ってなわけで「Restart Now」ボタンをクリックしてください。

Ubuntuのインストール - 11


仮想マシンが再起動すると、以下のようにログイン画面が表示されます。

「yocto」というユーザー名が表示されていますね?

こちらをクリックします。

Ubuntuのインストール - 12


パスワード入力のためのテキストボックスが現れますので、パスワードを入力しましょう。

今回の場合、私が横着したのでここも「yocto」と…。

Ubuntuのインストール - 13


すると、以下の通り「Ubuntu」のデスクトップが表示されます。

クリスタル・クラゲに再会!

本当に最近のLinuxは、WinodwsやMacOSに劣らないくらいデスクトップの完成度が高くなっていますね。

これで仮想マシンへの「Ubuntu」のインストールは無事終了です。

Ubuntuのインストール - 14


さて、起動させたものは、いつかは終了させなきゃいけない…というわけで「Ubuntu」の終了の仕方を確認しておきましょう。

Linuxの正しい礼儀作法として、これはターミナル(コマンドプロンプト)で行います。

現在のデスクトップからターミナルを開くには、GUIのメニューから選択しても良いのですが、もっと楽な方法があります。

キーボードの「Ctrl」+「Alt」+「T」を同時に押してください。

以下のようにターミナルが開けましたか?

Ubuntuのインストール - 15


「Ubuntu」を正しく終了させるには、開いたターミナルで以下のコマンドを入力します。


$ sudo shutdown -h now


このコマンドは、管理者権限で(sudo)、シャットダウンせよ(shoutdown)、電源断(Halt)で(-h)、今すぐに!(now)…という意味です。

すると、以下のようにパスワードの入力を求められます。

これは、コマンドの頭に「sudo」を付けたからです。

サーバーなどの用途に用いられるLinuxでは、シャットダウンは特別な操作です。

ログインしている誰でも彼でもシャットダウンできてしまっては困ります。

なので、大抵の場合「shutdown」コマンドは管理者権限で実行されなければなりません。

したがって、そのためのパスワードが必要というわけになります。

では、パスワード(今回の場合「yocto」ですね)を入力して、リターンキーを押します。

Ubuntuのインストール - 16


しばらくすると「Ubuntu」はシャットダウンされて、仮想マシンの画面も消え去ります。

これで「Ubuntu」が正しく終了できました。

再び「Ubuntu」を起動したいときは「VMware Workstation Player」の画面で、左のリストから「Ubuntu 64 ビット」を選択状態にして「仮想マシンの再生」をクリックします。

Ubuntuのインストール - 17


すると、再び仮想マシンが起動し「Ubuntu」が立ち上がって、ログイン画面が表示されます。

これで「Ubuntu」の起動と終了は万全ですね!


以上で「Yocto Project」を動作させる土台は整いました。

次回から、このフレームワークの構築に移りましょう。

…ここまででも、けっこう手間がかかりましたよね。


<続く>

Simplicity Studioを使ってみた! その1

「Simplicity Studio」のインストール 急遽、 Silicon Labs 社のマイコンを使用することになり、その統合開発環境「 Simplicity Studio 」をインストールしました。 手順が多く結構ハマったので、その備忘録です。 まずは、インストーラーのダウ...