モダンOSのお砂場(83)UNO R4でFreeRTOS、Renesas RA4M1基礎知識

Joseph Halfmoon

ArduinoやFreeRTOSのAPIレベルから少しハードよりに「ダイブ」しようとしてルネサスRA4M1マイコンについて無知なことを露呈しました。今回はタイマなどの周辺ハードウエアの直接アクセスをするための準備作業として、ルネサス様の用語など基礎知識を勉強したいと思います。

※「モダンOSのお砂場」投稿順Indexはこちら

※Arduino IDE上で「スケッチ」形式のソースからFreeRTOSを使って実験してみてます。ターゲット機はArduino UNO R4 Minima。泣く子も黙る?ArmコアのルネサスRA4M1マイコン搭載機です。

そろそろUNO Minima搭載のRA4M1の周辺回路に直接触りたい

Arduinoの環境の FreeRTOS 機能はまだまだ沢山あるのですが、まあ、一通りベーシックなところは練習してみた、というところでそろそろタイマあたりから直接ハードウエアを制御したい、と思いました。しかしソースを見ると、FSPって何よ、AGTってタイマなの?とルネサス用語?炸裂。この辺の用語をさらっておかねば先に進みませぬ。そこで今回は目につくところからお勉強と。

ファミリ、グループ、ターゲットマイコン

ルネ様のマイコンを使ったことがあれば、ルネ様の用語「ファミリ」「グループ」については経験があるかと思います。今回ターゲット機にしておりますArunino UNO R4 Minima搭載のマイコンについていえば

    • ファミリ=RA
    • グループ=RA4M1
    • マイコン型番=R7FA4M1AB3CFM

ということになります。RAというのが、Armコア登載のルネサスマイコンのシリーズ全体の名称で、RA4M1というのがグループ名(今回は1グループ=1種ダイみたいだけど。)そして長い長いR7FA4M1AB3CFM という番号が実際に搭載されているマイコンの型番のようです。チップを注文するときは最後の型番でお願いしないとダメっす。後ろの方の文字と数字の中にFeature set、コードフラッシュ容量、動作温度、パッケージの種類などが込められているからです。ただしソフトを考えるときはRA4M1ってことで良いよね。でも今回わざわざマイコン型番まで書いたのは、Arduino UNO R4用に供給されているソースを読むときには「R7FAなんたら」で始まるようなファイル名が出てくるからです。ルネサスのフラッシュマイコンの型番がR7Fで始まり、ArmコアならR7FAだというような知識が無いと戸惑います。

FSP、HAL、BSP

続いてソフトウエアの階層名です。HALとかBSPとかはルネ様以外でも出てくると思いますが、FSPと言われてちょっと戸惑いました。

    • FSP、Flexible Software Package
    • HAL、Hardware Abstruction Layer
    • BSP、Board Support Package

上のFSPが一番広い概念のようです。ルネ様の解説ページが以下に。

Flexible Software Package(FSP)

上記の解説をみると、各機種に固有のBSPの中にArm標準のCMSISなども含まれているみたい。そのBSPの上にHALやFreeRTOSのMiddlewareのレイヤが構築され、さらにその上にFreeRTOSの本体が載っておると。アプリはそのまた上ね。今回はアプリの下にArduinoのAPI階層も載っているので屋上屋を重ねたその上でプログラミングさせていただいておると。

上から掘り進めていってハードにたどり着くのは大変。でも下位のAPIの中ではBSPとかを頭に頂くものどもが登場するので、お名前には慣れていた方が良いみたい。

AGT、GPT

ようやく周辺ハードウエアの階層です。その中でタイマ関係でちょいと目についた者どものお名前をあげておきます。この辺のお名前とそのお役目の詳細は、ルネサス RA4M1「グループ」の「ユーザーズマニュアル ハードウェア編」を参照すると書かれてます。

    • AGT(Asynchronous General Purpose Timer)

非同期汎用タイマということでよろしいのかな。RA4M1グループには2本の16ビットAGTが搭載されているようです。その0番はArduino環境のsetup()などが動作する前に起動されて動作している重要なものだと判明しました。

delay()とかdelayMicroseconds()関数などのタイミングを作っている

のであります。これが無いと手も足もでない?

    • GPT

GPTは「汎用PWMタイマ」であるようです。UNO R4もPWM出力を持っているのでそれらPWMには使われているのだと思いますが、32ビット2チャンネル、16ビット6チャンネルをどのようにPWM出力に割り当てているのかまでは不明であります。調べておかんとね。

そういえばArmマイコンにはSystickタイマもあったな

ここまでの調べはルネ様の周辺回路についてであったです。でもArmコアに引っ付いた(Arm社が仕様を決めてる)Systickタイマもありましたな。今つかっているArduino-FreeRTOS環境ではRTOSが使っているの?どうなの?これまたちゃんと調べておかないとね。

先は長いな。

モダンOSのお砂場(82)UNO R4でFreeRTOS、ブラウザからUNO R4のLEDを操作 へ戻る

モダンOSのお砂場(84)STM32 NucleoでMbed OS6、RAM使用量の取得 へ進む