本初心者講座は、ルネサスエレクトロニクス社(以降、ルネサス)のArm® Cortex®-Aプロセッサ搭載マイクロプロセッサ RZファミリを初めて使うエンジニア向けの「Cortex-A|RZファミリ編」です。(注意:本講座では、マイクロプロセッサをプロセッサと称して説明いたします)
本初心者講座のゴールは次の3つです。
- マイコンとマイクロプロセッサ・RZファミリの違いを習得する。
- マイクロプロセッサ・RZファミリの機能と性能を理解する。
- マイクロプロセッサ・RZファミリの使い方を理解する。
本講座は次の5回シリーズの連載で構成されます。
第1回:RZ/Aシリーズから始めよう!
第2回:RZ(プロセッサ)とマイコンの違い
第3回:マイコンユーザーがRZファミリに移行する手法
第4回:マイコンとプロセッサの垣根を超える
第5回:RZファミリの紹介
今回は、第3回の「マイコンユーザーがRZファミリに移行する手法」です。マイコンユーザーが、マイコンからプロセッサRZへ移行する場合に、チェックが必要となるポイントを6つに分けて解説します。今回はポイントの解説です。具体的な変更、設定方法については、「第4回:マイコンとプロセッサの垣根を超える」で解説します。
課題
1. マイコンからプロセッサRZに移行するポイントは何か?
マイコンからプロセッサに移行する際の6つのポイントを学習する。
2. 6つのポイントで行う検討内容は何か?
6つのポイントのそれぞれで実際に行う検討内容を学習する。
3. マイコンとプロセッサRZの機能の違いを学ぶ。
6つのポイントの観点からマイコンとプロセッサRZの機能の違いを習得します。
マイコンからRZファミリに移行するには?
本シリーズの第2回「RZ(プロセッサ)とマイコンの違い」でも述べましたように、マイコンとプロセッサでは、ハードウェア、ソフトウェア、開発環境が違います。そのため、マイコンからプロセッサ(RZファミリ)に移行する際には、それぞれの違いを十分チェックする必要があります。
まず、マイコンでは、フラッシュ・メモリやSRAMが内蔵されていますが、プロセッサでは外付け部品としてDDR(Double Data Rate)-SDRAMなどを準備しなければなりません。さらに、それらに必要な電源回路などの周辺回路も必要になります。そのためシステムに必要な外付け部品の検討が必要です。
一方、プロセッサの方がマイコンよりもはるかに高速で動作するため、消費電流も多くなります。そのため、システム基板では、消費電流に対応した回路設計や高速信号に対応するレイアウト設計が必要になります。
起動時にも違いがあります。マイコンは、電源投入後、自動的にリセットが解除され、内蔵フラッシュ・メモリから命令を読み出して実行します。一方、プロセッサでは、内蔵RAMに命令をブートしてから実行するか、外部フラッシュ・メモリから直接命令を読みだして実行します。そのためブートローダーが必要になります。
さらに、プロセッサは、ブートローダー、OS(Operation System)、ユーザープログラムが分かれているので、ソフトウェアのカスタマイズが必要です。ソフトウェアの構成や規模が違うので、ソフトウェアの開発体制も考える必要があります。
一般的に、プロセッサの開発で使用するパソコン(以降、PC)のOSはLinuxが多いですが、RZファミリではWindowsでも開発可能です。移行の際には、PCや開発ソフトなどの使い回しなどを考え、最も効率の良い開発環境を選択する必要があります。
ついつい見落としがちなのは、アプリケーションの個々の課題です。例えば、電源回路の形態、表示方法、リアルタイム性などです。
以上のような課題に対して、どのように対応すればよいか、次の章から詳細に解説します。
システムに必要な外付け部品
マイコンでは、メモリが内蔵されていますが、一般的なプロセッサでは外付け部品としてメモリを準備しなければなりません。さらに、必要とされるメモリの種類も様々です。
一方で、RZ/Aシリーズでは、大容量SRAMが内蔵されているので、他のプロセッサに比べて外付け部品が少なくてすみます。
実際のマイコン(RAファミリ)とプロセッサ(RZファミリ)の電源回路を比較してみましょう。
図2は(a)RA6M5評価キットと(b)RZ/A1H評価キットと(c)RZ/G2UL評価キットの電源回路の系統図です。
(a)の場合は、USB電源用に5.0Vを供給する回路が設けられていますが、基本的に3.3V電源があればRA6M5は動作します。(b)の場合は、RZ/A1L用の1.18V電源と、3.3Vのデジタル回路用のレギュレータだけです。RZ/A1Lには外付けDDRが不要なので、レギュレータは2つで賄えます。(c)の場合は大容量内蔵RAMが無いので、DDR用の電源として1.2Vレギュレータが設けられています。そして、この1.2VはEthernet PHY用と兼用しています。その他はPLL用に1.1Vが必要です。
マイコンからプロセッサに移行する場合は、使用するプロセッサの種類によって必要な回路とそれらの電源回路などの周辺回路の検討が必要になります。
システム基板の回路設計とレイアウト
回路設計
前述したように、プロセッサの方がマイコンよりも部品点数が増えます。さらに外部フラッシュ・メモリやDDRだけでなく電源回路などの周辺回路が必要になります。それらの回路のパラメータ(コンデンサの種類や値、インダクタの種類や値など)を設計する必要があります。
ここでは、電源回路を例に取ります。
極端な話、マイコンは乾電池でも動作します。その場合の周辺部品は、外来ノイズ除去のインダクタやコンデンサだけも問題なく動作します。しかし、プロセッサの場合は電源に要求される電圧値、容量が異なるので、レギュレータなどの電源ICを使って、複数の電源回路を個別に設計します。
例えば、新たに電源回路を設計する場合、ショットキーバリアダイオードを選択しますが、その逆回復時間trrが大きいと損失が大きくなるので、適切なtrrのショットキーバリアダイオードを選ぶ必要があります。
ショットキーバリアダイオードの他にもインダクタ、コンデンサなどの構成部品の最適なパラメータを検討する必要があります。
レイアウト設計
プロセッサでは高速信号を取り扱うため、プリント基板上の信号線の引き回しや、信号の反射、クロストークなどを考慮した配線パターンのレイアウト設計が必要です。また、電子部品(IC、コンデンサ、インダクタなど)の実装場所、取り付け方向なども検討する必要があります。レイアウト設計で考慮すべき点を以下に示します。
- 電源プレーンとグランドプレーンを使用する。
- 電源とグランドが面で接続されるので、電位の基準点となり、電圧と配線抵抗の変動を防ぐ。
- 内層のプレーンは、機械的強度を保つ。
- 可能限り部品間は短い直接配線にする。
- 信号間の干渉、高インピーダンスを防ぐ。
- 高速デジタル信号またはRF信号は配線によるインピーダンスを考慮する。
- 高速信号では、インピーダンスが高くなり伝送効率が落ちるので、設計時に配線のインピーダンスを考慮する。
- 配線間容量結合は最小限にする。
- 高速信号や同種類の信号は極力離し、平行配線せずに、結合容量を極力小さくする。
- 配線間結合による信号間の干渉防止。
- 電流が多く流れる配線は、配線による過熱が発生しないようにする。
- 配線の幅と厚みを十分設けて電流密度を下げる。
- 高速信号配線と低速信号配線は分離する。
- クロストークと干渉の防止。
- アナログ回路とデジタル回路を分離する
- 高速デジタル信号のアナログ回路干渉防止。
ルネサスからは、RZ/AシリーズやRZ/Gシリーズのレイアウト設計ガイダンスが提供されていますので、参考にしてください。
ブートローダー、OSのカスタマイズ
プロセッサのプログラムは、複数のプログラムが組み合わさって構成されています。大別するとユーザープログラム、ブートローダー、OS(Operation System)です。さらにシステム基板に依存するプログラムも含まれます。システムのソフトウェアとハードウェアを階層化すると図4のようになります。
最上位は、アプリケーションソフトウェア(ユーザープログラム)です。これは、必然的に新規開発になります。ミドルウェアは、アプリケーションソフトウェアに依存して適用されます。その下の階層はOSです。マイコンではOSを使用しない場合もありますが、プロセッサは、ほとんどの場合でOSが使われます。また、プログラムを実行する際のブートローダーやシステム基板上の電子デバイスを制御するプログラムも必要です。
ブートローダー
マイコンのブートモードについて、RA6M5の場合を例にして説明します。RA6M5の動作モードには、シングルチップモードとSCI/USBブートモードがあります。MD 端子がHigh になっているときにリセットが解除されると、MCU はシングルチップモードで起動し、内蔵フラッシュメモリが有効になります。
一方、MD 端子がLow になっているときには、MCU 内部のブート領域に格納された、内蔵フラッシュ・メモリ書き込みルーチン(SCI/USB ブートプログラム)が用いられます。SCI/USB を使用して、MCU 外部から内蔵フラッシュ・メモリ(コードフラッシュメモリ、データフラッシュメモリ)を書き換えることができます。
プロセッサにも、様々なブートモードがあります。RZ/A1Lには、4つのブートモードがあって、外部端子(MD_BOOT0と1)で設定します。
ブートモードによっては、ユーザーは、ローダプログラムと呼ばれる「プログラムを大容量内蔵RAM に転送するプログラム」を作る必要があります。
OS
マイコンでもOSを使います。特に組み込みシステムの多くはOSを使用しています。RA6M5の場合は、e2studioでプロジェクトを作成時に、GUIツール(FSPコンフィグレータ)上の操作で、FreeRTOS、Azure® RTOSなどのRTOS機能を実装することができます。
RZ/Aシリーズは、そもそもRTOSベースのプロセッサです。そのため、e2studioのGUIツール(FSPコンフィグレータ)上の操作で、FreeRTOS、Azure RTOS(*1)のRTOS機能を実装することができます。
(*1)2023年11月21日、MicrosoftはAzure RTOSをオープンソースに提供することを決定したと発表しました。Eclipse Foundationの管理下となり、Azure RTOSはEclipse ThreadXとなります。
ソフトウェア開発
開発体制
マイコンの場合のソフトは、単独でないにしても小規模のチームで開発されます。小規模のチームの場合は、ソフトウェアの各パーツを相互に調整し、製品全体の性能を確立させることが可能です。この場合、各パーツの開発者間の綿密な調整やコミュニケーションが必要になります。
プロセッサのプログラムは、マイコンに比べると開発規模が膨大です。そのため、比較的大きなチームで、並列化されて開発されます。大勢で開発した様々なプログラムのパーツを組み合わせて統合し、まとめ上げる形態です。
しかし、数多くのパーツを相互に調整するには限界があります。そこで、別々に開発されたパーツを組み合わせて製品全体の性能を確立します。各パーツを組み合わせる場合は、インターフェースを標準化した機能ブロックとして、これらの組み合わせ方で製品として機能や性能を実現します。
メモリ管理
プロセッサにはメモリ管理が必須です。マイコンでも、メモリ管理が必要な場合もありますが、プロセッサに比べると簡易的な方法が主流になっています。
例えば、RA6M5のCortex-M33ではメモリ保護機能のMPU(Memory Protection Unit)がメモリ管理を行います。MPUは、アドレスマップの領域をユーザーの要望に従って定義し、さらにアクセス許可/不許可の設定ができます。
例えば、図8中のタスク1では領域1~3をアクセスできますが、領域4はアクセスできません。タスク2では領域4~6はアクセス可能ですが、領域3はアクセス不可です。また、タスク3は領域7がアクセス可能ですが、領域6はアクセス不可のように設定できます。図中×印の付いた経路でメモリをアクセスするとエラーが発生します。
プロセッサの場合にはメモリを管理するMMU(Memory Management Unit:メモリ管理ユニット)があります。
Cortex-AのMMUは、仮想アドレスから物理アドレスへのアドレス変換を行います。アドレス変換は、変換テーブルを参照して自動的に変換します。キャッシュ制御も行います。変換テーブルに、メモリタイプ・キャッシュ属性・バッファ属性を設定できます。プロセッサを使う場合、MMUは必須です。
変換テーブルは、第1レベルテーブルと第2レベルテーブルで構成します。第1レベルテーブルでは、16Mバイトと1Mバイトの単位で仮想アドレスから物理アドレスに変換を行い、第2レベルテーブルを使用することで、より細かい64Kバイトと4Kバイトの単位で仮想アドレスから物理アドレスに変換できます。
開発環境
RZ/Aシリーズでは、Windows上のe2studioが使えますので、PCのOSはWindowsに、統合開発ソフトはe2studioに統一することができます
e2studioにはWindowsでもLinuxでも使えるバージョンが提供されていますので、ダウンロードする際にWindows版をダウンロードします。すると、setup_e2_studio_202y-xx_x.zip(yは年、xはバージョン情報)がダウンロードされます。
そして、インストールする際に、2つ以上の製品シリーズを選択します。例えば、RA6M5ユーザーの場合、RAファミリとRZファミリを選択してインストールします。それだけで、同一のWindows PC、同一の統合開発ソフトe2studioで、RAファミリもRZファミリも開発できるようになります。
RZファミリも、サンプルプログラムが豊富で、ソフトウェアパッケージをルネサスのWebからダウンロードして簡単に使うことができます。
アプリケーション個々の課題の検討
ここでは、アプリケーション個々の課題のバッテリー容量、表示、リアルタイム性などについて説明します。マイコンからプロセッサへ移行する課題と言うよりも、アプリケーション製品の個々の仕様による技術的な課題です。
電源
電源回路に関する着目点は、次のようなことが考えられます。
①電源容量
②電池駆動の製品だと電池寿命
③突入電流
④負荷変動に対する電圧変動
⑤電源の立ち上がり時間
マイコンに比べるとプロセッサは消費電力(電流)が大きいので、「①電源容量」や「③突入電流」「④負荷変動に対する電圧変動」が、重要な検討要素になります。
携帯機器の場合、電池寿命が製品仕様にも含まれますので「②電池駆動の製品だと電池寿命」が、重要になります。電池寿命は、次の式で求められます。
電池寿命=電池容量(mAh)/負荷平均電流(mA)
計算式自体は簡単ですが、負荷電流は最大電流、定常電流、待機時電流などの状態で変動するため、平均電流の求め方がポイントになります。多くのユーザーは、突発性の負荷変動を考慮し、最大電流の20%~30%のマージンを見込んで、計算します。
検討例として、図12に負荷変動による電源電圧変動のシミュレーション例を示します。
一方、「⑤電源の立ち上がり時間」も多くのアプリケーションで検討を要する課題です。Type-CなどによるUSB給電や、電池駆動であれば、最初から電源が確立していて問題は無いのですが、レギュレータICやコンバータICで、電源を構成する場合は、シミュレーションで電源の立ち上り時間を十分検討する必要があります。
いずれにしろ、マイコンで使用していた電源回路をプロセッサに適用したい場合は、電流量が増えますので。必ずシミュレーションなどを行って、問題ないことを確認しましょう。
表示方法
表示方法も検討が必要です。単なるインジケータならLED(Light Emitting Diode)が使われますが、文字や画像、動画を表示する場合は、マイコンとプロセッサでは異なってきます。
マイコンの場合はセグメントタイプのLCD(Liquid Crystal Display)やドットタイプのLCDが良く使われます。高機能なマイコンで画像、動画を扱う時には、カラーLCDが使われます。
プロセッサでは、シリアル/パラレルインタフェースに加えて、LVDSやMIPIDSIといったより高解像度に対応したインターフェースを使って、HD(1280×720)やFull HD(1920×1080)クラスの解像度を持つLCDに接続することが可能な製品もあります。
また、LCDに画像を表示するためにはフレームバッファとしてRAMが必要になります。LCDの解像度が大きくなるに従い、フレームバッファとして必要となるRAMの容量も大きくなります。RZ/Aシリーズは、最大10MバイトのRAMを搭載し、フレームバッファとしても使用できますが、この内蔵RAM容量と、LCDの解像度については事前検討が必要です。一般的にRZ/Aシリーズとして表示可能な解像度はWXGAまでであり、FHDの解像度のLCDに表示する場合は、外付けRAMシステムのRZ/Gシリーズを使用してください。
リアルタイム性
リアルタイム性とは、要求される時間枠内で処理や応答を完了できる性質を意味します。
リアルタイム性に関連するのは、マイコンやプロセッサの動作速度です。家電品や健康機器、玩具などでは、それほど急速な処理は必要とされませんが、産業系では急速な処理が要求され、特に緊急事態の対応処理などでは、必須項目です。
一方で、イベントの発生をCPUに伝えるための通信方式も検討が必要です。イベントからCPUまでの情報伝達が遅いと、急速なリアルタイム性は実現できません。
マイコンとプロセッサの棲み分けを、リアルタイム性の観点から分類すると次のようになります。
- モータ制御など、純粋にリアルタイム性を必要とするアプリケーションではRTOSベースでRAなどのマイコンでシンプルなシステムを構築する
- マルチタスク必須の複雑なアプリケーションや、高解像度のHMIなどのアプリケーションを動作させたい場合はLinuxなどの汎用OSベースでRZ/Gシリーズなどのプロセッサのシステムを構築する
- 本講座のテーマであるRZ/Aシリーズは、最大10MバイトのRAMを内蔵し、RTOSベースのソフトウェアパッケージをルネサスのWEBより入手して使用することで「マイコンの使いやすさを継承したプロセッサ」として簡単にHMIシステムの開発が可能です。
「第3回:マイコンユーザーがRZファミリに移行する手法」は、以上です。次回の「第4回:マイコンとプロセッサの垣根を超える」では、マイコン(RAファミリ)ユーザーがプロセッサ(RZファミリ)に移行する、または、プロセッサ(RZファミリ)ユーザーがマイコン(RAファミリ)に移行する際に直面する具体的な問題を取り上げて、解決策を説明します。