前回からの続きです。
このテーマを最初からご覧になる場合はこちらからどうぞ。
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」を起動して下さい。
次に、アプリケーションメニューの「ファイル」から「新規」をクリックし「Renesas C/C++ Project」をクリック、更に展開されたメニューから「Renesas RA」をクリックします。
以下のようなダイアログが表示されたら「Renesas RA C/C++ Project」の表示をクリックして選択状態にしてから、ダイアログ下部の「次へ」ボタンをクリックしましょう。
以下のように「Renesas RA C/C++ Project」ダイアログが表示されたら「Project name」の下のテキストボックスにプロジェクト名を入力します。
雛形プロジェクトなので「Hinagata」とでもしましょうかね。
入力したらダイアログ下部の「次へ」ボタンをクリックです。
以下のように表示か切り替わります。
ここでは、どんなターゲット向けのソフトウェアを作るのかを問われています。
まずは、ターゲットのマイコン(Device)が違いますね。
「Arduino UNO R4」に搭載されているマイコンは、デフォルトで表記されている型番ではありません。
ですので、これを変更する必要があります。
「R7FA2A1AB3CFM」と表記されているテキストボックスの左に「...」というボタンがありますので、これをクリック!
以下のようなダイアログが表示されますので「Arduino UNO R4」に搭載されているマイコンである「R7FA4M1AB3CFM」を正しく選択して「OK」ボタンをクリックします。
「Renesas RA C/C++ Project」ダイアログに戻ります。
「Device Selection」の欄に正しいマイコンの型番が表示されていることを確認し、次は「Debugger」の欄に注目します。
今回は、デバッガに「E2 Lite(ARM)」を使用しますので、コンボボックスをこれに設定します。
正しく設定できたら、ダイアログ下部の「次へ」ボタンをクリックしましょう!
次の表示は、何もせずに「次へ」ボタンをクリックしていいです。
次の表示も、何もせずに「終了」ボタンをクリック!
次のポップアップが表示されますので「パースペクティブを開く」ボタンをクリックしてください。
これで雛形プロジェクトが作成されたはずなのですが「e2 studio」を起動したときと同じ表示のままです。
開いたはずのパースペクティブとやらは一体どこに?
実は、ちゃんと開かれているのです。
「ようこそ」ビューが邪魔しているんですね。
なので、これを除けてしまいましょう。
「e2 studio」の画面右上に「ようこそ」ビューの最小化ボタン(アンダーバーみたいなやつ)がありますので、これをクリックしてください。
すると、以下のような表示になります。
画面左側の「プロジェクト・エクスプローラー」のリストには、ちゃんと「Hinagata」プロジェクトが生成されていることが確認できますね。
マイコンのピンの設定
中央の「Summary」と書いてある「FSP Configuration」タブに注目してください。
このタブの下部には、更に複数のタブが存在しますが、その中の「Pins」タブをクリックしてください。
以下の表示に切り替わります。
ここは何をする画面かっていうと、マイコンのピンの設定です。
例えば、このピンはGPIOに使う…とか、このピンはシリアル通信に使う…とか。
すなわち、今回のターゲットである「Arduino UNO R4」で使用されるマイコンのピンの機能を設定するための作業となります。
そのためには「Arduino UNO R4」の回路図が必要ですね。
ここから、ダウンロードをお願いします。
この回路図で注目したいのは、回路図左上の「HEADERS」の部分です。
黄色い四角の左側「JANALOG」は、以下の部分に相当します。
黄色い四角の右側「JDIGITAL」は、以下の部分ですね。
例えば、今「e2studio」で開いている「Pin Configuration」で、シリアル通信「SCI2」のためのピン「P302_SCI2_TXD」と「P301_SCI2_RXD」を設定したい場合を考えます。
その場合は「Pin Configuration」の中の左側「Pin Selection」リストの中から「SCI2」を選択します。
次に、新たに切り替わった左の「Pin Configuration」の「Operaring Mode」の行の「Disabled」という表記の左側の「▼」マークをクリックします。
これはコンボボックスになっていて、設定できる機能が展開されます。
この中から「Asynchronous UART」(つまり普通のシリアル通信)を選択します。
すると、以下の表示に切り替わります。
「TXD_MOSI」が「P302」に、「RXD_MOSI」が「P301」に自動的に割り付けられたようです。
回路図では「P302_SCI2_TXD」と「P301_SCI2_RXD」という表記だったので、どうやらこれで正しいようですね。
「FSP Configuration」タブの左側の「FSP Visualization」のマイコンの絵でも「TXD_MOSI」と「RXD_MOSI」が表示され、このピンが「SCI2」の通信用のピンとして割り当てられたことが確認できます。
今回は「TXD_MOSI」が「P302」に、「RXD_MOSI」が「P301」に自動的に割り付けられましたが、これは偶然かもしれません。
もし、それぞれを違うピンに割り付けたい場合は「Pin Configuration」上でピン名の左側にある「▼」マークをクリックすることで、他のピンの候補を探して、設定することができます。
さて、このような作業を使用するすべてのピンで行うことになります。
このピンはアナログ入力、このピンはI2C通信用、などなど。
でも…
超ぉ~メンドクセエぇ!!
…ごもっとも。
ですので、今回のTOPPERS/ASPを動作させるための最低限の設定済みファイルをアタクシめが用意しときましたぜっ、ダンナ!(誰だオマエ?)
…てなわけで、ここからダウンロードしてください。
「arduino_uno_r4.pincfg」というファイルがダウンロードできます。
これをインポートすれば、面倒な作業は一瞬で終わります!
ダウンロードが終わったら「Pin Configuration」の「Manage configutrations...」という表示をクリックしてください。
以下の「Manage Pin Configrations」ダイアログが開いたら「Import」ボタンをクリックします。
続いて、以下の「Import Configration」ダイアログが開いたら「Browse...」ボタンをクリックします。
ダウンロードした「arduino_uno_r4.pincfg」を選択すれば良いのですが…どこにも無いじゃん!って場合は、検索する拡張子を変更しましょう。
「Altium Pin Configuration File(*.pincfg)」を選択します。
そうすると「arduino_uno_r4.pincfg」が表示されるはずです。
これを選択し、ダイアログ下部の「開く」ボタンをクリックです!
「Import Configration」ダイアログに戻ったら、追加された「arduino_uno_r4」のチェックボックスを有効にしてから、ダイアログ下部の「終了」ボタンをクリックです。
「Manage Pin Configrations」ダイアログ に戻ったら、左側のリストに「arduino_uno_r4」が追加されていることを確認してください。
左側のリストに元々あった「R7FA4M1AB3CFM_pincfg」は、もういらないので削除しましょう。
ていうか、残ってると後々問題になります。
「R7FA4M1AB3CFM_pincfg (Current)」を選択状態にしてから、右側の「Remove」ボタンをクリックします。
左側のリストで「R7FA4M1AB3CFM_pincfg (Current)」が削除されて「arduino_uno_r4 (Current)」だけが残っていることを確認して、ダイアログ下方の「OK」ボタンをクリックしてください。
ダイアログが消えて「Pin Configuration」に処理が戻ります。
するとどうでしょ?
ピンの設定が「arduino_uno_r4.pincfg」の内容に更新されていることが分かります。
「FSP Configuration」タブの左側の「FSP Visualization」のマイコンの絵も、設定を反映して、なにやら賑やかになってませんか?
クロックの設定
さて、お次は「Arduino UNO R4」のクロックの設定を行わなければなりません。
この雛形プロジェクトを作成した時点では、外部クロックのXTALを使用するように初期設定されているのですが、実際「Arduino UNO R4」には外部クロックのXTALが搭載されていません。
その代わりに、内部クロックを使用するように設定してあげなければいけません。
これを行うには「FSP Configuration」タブの下部の「Clock」タブをクリックして設定画面を開きます。
クロックの設定画面が開いたら、以下のように外部クロックのXTALを使用する設定から、内部クロック(HOCO 48MHz)を使用する設定に切り替えます。
変更は三箇所!
<追記>
「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」のバージョンによってデフォルトの設定が変わるみたいです…。)
ソースコードの出力
時は来た!
設定内容をソースコードとして出力します。
「FSP Configuration」タブにおいて「Pin Configuration」の右側に「Generate Project Content」という表示があります。
これの「▶」マークをクリックです!
以下のポップアップが表示されますので「続行」ボタンをクリックします。
これで、設定内容に沿ったソースコードが雛形プロジェクトに出力されたはずです。
どんなふうに出力されたのかな?…って気になりませんか?
確認してみましょう。
「e2studio」を現在の「FSP Configuration」モードから「C/C++」モードに切り替えましょう。
この切り替えは、画面右上の「C/C++」ボタンで行います。
クリックしてみましょう。
画面左側の「プロジェクト・エクスプローラー」のリストから「Hinagata」、「ra_gen」の順に展開し「pin_data.c」をダブルクリックします。
すると、画面中央にソースコードが表示されます。
これが、今まで作業してきたピンの設定が出力されたものです。
ちょっと複雑ですが、定義名などの内容から「それっぽい」内容になっていることは分かりますね。
以上で、マイコンのピンの設定は完了です。
さて、今回は「TOPPERS/ASP Arduino UNO R4版」を動かす上で足りないソースコードを出力するための雛形プロジェクトを作りました。
また、その雛形プロジェクトで「Arduino UNO R4」に搭載されているマイコンのピン設定を行い、それを反映したソースコードも出力しました。
次のステップは「TOPPERS/ASP Arduino UNO R4版」のソースコードをダウンロードし、雛形プロジェクトで得られたソースコードをそこにコピーします。
その上で「TOPPERS/ASP Arduino UNO R4版」をターミナル(コマンドライン)でビルドするところまでを行っていきましょう。