本初心者講座は、ルネサスエレクトロニクス社(以降、ルネサス)のArm® Cortex®-Aプロセッサ内蔵マイコン RZ/Gシリーズを初めて使うエンジニア向けの「ルネサスRZ/Gシリーズ入門講座」です。
本初心者講座のゴールは次の3つです。
- マイクロプロセッサ・RZ/Gシリーズの製品仕様、開発環境、アプリケーションを理解する。
- マイクロプロセッサ・RZ/Gシリーズの基本的な使い方を理解する。
- マイクロプロセッサ・RZ/Gシリーズの応用的な使い方を理解する。
*本講座では、マイクロプロセッサをプロセッサと称して説明いたします。
本講座は次の5回シリーズの連載で構成されます。
第1回:RZ/Gシリーズの紹介
第2回:開発環境の整備
第3回:組込みLinuxを動かしてみる
第4回:ユーザーアプリケーションを追加してみる
第5回:サブコアを使ってみる
今回は、第5回の「サブコアを使ってみる」です。サブコアとして搭載されているCortex-M33を動作させてみます。
【課題】
1.メインコアとサブコアの関係を理解する
メインコアとサブコアがどのような関係で動作しているかを学習し、理解します。
2.サブコアの開発環境を理解する。
メインコアとサブコアでは、使用する開発ツールが異なります。PC、デバッガ、統合開発ソフトについて学習し、理解します。
3.サブコアの使い方を理解する。
実際にサブコア用のプログラムを作って、実行して、使い方を理解します。
今回題材にしているRZ/G2LはCortex-A55が2個とCortex-M33が1個搭載されたマルチコアチップです。「 第3回:組込みLinuxを動かしてみる」と「 第4回:ユーザーアプリケーションを追加してみる」ではCortex-A55を組込みLinuxで動作させてみました。今回はサブコアとして搭載されているCortex-M33を動作させてみます。
一般的に、Cortex-M33のようなマイコンでは、RTOSまたはベアメタルのどちらかで使用されています。今回はサブコアの使い方の学習を目的としていますので、複雑なOSは使わず、できるだけ簡単なベアメタルでやってみます。
開発環境としてはルネサスから提供されている統合開発環境のe2 studioを利用します。
作業手順は、ルネサスが提供している「RZ/G2L RZ/G2LC RZ/G2UL RZ/G3Sのアプリケーションノート: Getting Started with Flexible Software Package」(以降、アプリケーションノート)を参考にします。
メインコアとサブコアの関係
一概にマルチコアと言われても、複数のコアがどのような関係で動作しているかをイメージするのは、難しいと思います。RZ/G2LではCortex-A55でLinux OS(以降Linux)を、Cortex-M33でリアルタイムOS(Real-Time Operating System:以降RTOS)またはOS無し(ベアメタル)で、動作させる想定だと思ってください。
ネットワークやグラフィックの分野では、Linuxの実績ある設計資産が豊富にありますが、一方で、1つのプロセッサにLinuxとRTOS(または、ベアメタル)を共存させるマルチOSの概念があります。
そこで、ルネサスでは、 RZ/G Flexible Software Package(以降、FSP)とプロセッサ間通信用フレームワークの標準化APIであるOpenAMPから構成される、マルチOSソリューション開発用ソフトウェアパッケージの RZ/G Multi-OS Packageソフトウェアパッケージを提供しています。
図1:RZ/G Multi-OS Package
OpenAMPとは異なるOS間で連携動作をさせる仕組みです。Multicore Associationによって標準化されています。AMPはAsymmetric Multi Processing(非対象マルチ処理)の事で、コア毎に異なるOSを起動できることを指しています。OpenAMPを使用することによりマルチコア、マルチOSを構成することができるようになります。
RZ/G2Lでは、Cortex-A55のLinuxをマスターとし、Cortex-M33のRTOSをリモートとしています。マスターとリモート間で通信チャネルを確立します。マスターは決められたコマンドにより、メッセージをリモートに送信します。メッセージを受信したリモートは、コールバック関数を呼び出し、この関数の中でリモートはマスターへメッセージを送信します。更に、メッセージを受信したマスターは、コールバック関数を呼び出し、再びリモートへメッセージを送信します。
このマスターとリモート間のメッセージのやり取りを繰り返します。このように、マスターが、リモートをコマンドで操作するのではなく、マスターとリモート間でメッセージのやり取りを繰り返すイメージです。マルチOSによる開発では、それぞれのOS向けにソフトウェアの開発が必要になります。各々、独立したソフトウェアとして各々のソフトウェアを開発し、OpenAMPのメッセージで連携させることになります。
Cortex-A55のソフト開発手順は説明しましたので、今回はCortex-M33のソフト開発の手順を説明します。
使用機材
今回も評価用ボードは「RZG2L Evaluation Board Kit(以降、RZ/G2L評価キット)」を使用します。
PCは、Windows PCまたはLinux PCのどちらも使えますが、第3回と第4回と同じように、Windows PCを使います。アプリケーションノートには、Linux PCを使う場合も詳しく解説されていますので、Linux PCを使う方はアプリケーションノートを参考にしてください。
統合開発環境のツールはe2 studioを使います。これは、ルネサスから無償で提供されているオープンソースの「Eclipse」をベースとした、統合開発環境です。Eclipseの強力なコード編集機能に加え、豊富な拡張機能を搭載し、サンプルコードのダウンロードからデバッグまで、すべての開発プロセスを統合開発環境e2 studioだけで賄うことができます。
必要な機材をまとめると次のようになります。
- Windows PC
- 評価用ボード:RZ/G2L評価キット
- デバッガ:SEGGER社のJ-Linkおよび9-pin Cortex-M Adapter
- 統合開発環境:e2 studio
e2 studioとFSPのセットアップ
e2 studioとFSPは、 ルネサスのWebからダウンロードできます。RZ/G FSP Windows Platform Installerを使うとe2 studioとFSPを一括でセットアップすることができます。
図2:RZ/G FSP Windows Platform Installerダウンロードサイト
FSPは、 GitHubのWebからもダウンロードできます。GitHubではv3.0.0まで公開していますが、ルネサスが正式にサポートできるものはルネサスのWebで配布しているv2.1.0です。
RZ/G FSP Windows Platform Installerのダウンロードが終わると「setup_rzgfsp_v2_1_0_e2s_v2024-07.zip」という圧縮ファイルができます。これを展開して作成される「setup_rzgfsp_v2_1_0_e2s_v2024-07.exe」という実行ファイルを管理者として実行します。
図3:インストール開始
最初は、インストールタイプの選択です。ここでは「カスタムインストール」を選択します。そして、「Next >」をクリックして続けます。
注)e2 studioがPCにインストールされている場合は、既存のバージョンを変更、削除、または別の場所にe2 studioをインストールするオプションが表示されます。
図4:インストールタイプ
「ようこそ」では、「Next >」をクリックして続けます。
図5:ようこそ画面
次に、インストールする追加機能(言語パック、SVNおよびGitサポートなど)を選択します。言語については、必要に応じて選択します。「Next >」をクリックして続けます。
図6:拡張機能
インストールするコンポーネントを選択し、「Next >」をクリックして続けます。Renesas FSP Smart Configurator CoreとRenesas FSP Smart Configurator ARMは、必ず選択されていることを確認してください。
図7:カスタマイズ機能
インストールする追加ソフトウェア(コンパイラ、ユーティリティ、QEなど)を選択します。必ずGNU ARM Embedded xx.z 20yy.mmが選択されていることを確認してください。「Next >」をクリックして続けます。
図8:追加ソフトウェア
ソフトウェア使用許諾契約書に同意して、「Next>」ボタンをクリックします。
図9:ライセンス
スタートメニューのショートカット名を確認し、「Next>」ボタンをクリックして続けます。
注)e2 studioがすでにインストールされている場合は、他のe2 studioと区別するためにショートカットの名前を変更します。
図10:ショートカット
インストールするコンポーネントの一覧が表示されます。内容を確認し、「インストール」ボタンをクリックしてインストールします。
図11:概要
インストールが始まります。
図12:インストール
インストールが終わると、次の画面になります。
図13:インストール完了
「OK」ボタンをクリックしてインストールを完了します。
インストールが正常に完了したかどうかを確認します。e2 studioを開けて「ヘルプ(H)」→「CMSIS Packs Management」→「Renesas RZ/G」をクリックします。
図14: FSPの正常インストールの確認(1)
FSPが正常にインストールされた場合、次のような表示になります。
図15: FSPの正常インストールの確認(2)
プロジェクトを作る
e2 studioを使用して簡単なアプリケーションを作成し、そのアプリケーションをRZ/G2L評価キット上で実行します。題材は、最も作成手順が簡単な足し算のプログラムを作って、実行してみましょう。
この講座は、RZ/G2Lの使い方を学ぶのが目的なので、最も簡単なプログラムにして、間違いの無いようにし、プログラムの作成とデバッグ時間を最短にします。3つの変数a、b、cを定義して、aとbを足してcに入れる簡単なプログラムです。これなら、誰もが間違いなく作れると思います。
実際のプログラムコードは、後ほど説明します。
ステップ1
e2 studioで、「ファイル」→「新規」→「C/C++プロジェクト」をクリックします。
図16:New C/C++ Project
ステップ2
「Renesas RZ」→「Renesas RZ/G C/C++ FSP Project」を選択し、「次へ(N)>」をクリックします。
図17:Renesas RZ/G C/C++ FSP Project
ステップ3
プロジェクトに名前を付けます。今回は「Simple_addition」にします。空白は使えませんので、注意してください。
「次へ(N)>」をクリックします。プロジェクト構成ウィンドウに選択内容が表示されます。
図18:e2 studio Project Configuration window
ボードとツールチェーンの選択
プロジェクト構成ウィンドウで、ハードウェアとソフトウェア環境を選択します。手順を箇条書きにします。
- FSPのバージョンを選択します。
- アプリケーションのボードを選択します。今回はRZ/G2L評価キットを選択します。実際の製品でユーザー独自ボード使う場合はカスタムユーザーボードを選択します。
- デバイスを選択します。デバイスはボードの選択に基づいて自動的に設定されます。カスタムユーザーボード(任意のデバイス)を使用する場合のみ、デバイスを変更してください。
- ツールチェーンの選択は、デフォルトでGNU Arm Embeddedになります。
- ツールチェーンのバージョンを選択します。デフォルトでは、インストールされているツールチェーンのバージョンになります。
- デバッガを選択します。 J-Link Armデバッガが事前に選択されています。
- 「次へ(N)>」をクリックします。
図19:ボードとツールチェーン
Build Artifact(アーティファクト)and RTOS Selectionの画面では、サブコア開始状態、およびRTOSを選択します。Executable(エクゼキュータブル)を選択し、「Secure」を選択します。今回は、入門講座でかつ非常に簡単なプログラムなのでRTOSは使いません。「No RTOS」を選択します
図20:RZ MPU Project Generator
Project Template Selectionの画面では、利用可能なテンプレートがリストされますが、今回はテンプレートを使いませんので、「Bare Metal – Minimal」を選択します。すると、パースペクティブが開きます
図21:Project Template Selection
パースペクティブが開いたら、コードを生成します。
図22:パースペクティブ
コードが生成されても画面は何も変わりません。左側のプロジェクト・エクスプローラーでsrcを選択し、さらにhal_entry.cをダブルクリックします。すると、ユーザープログラムを入力する前の初期コードが現れます。
図23:初期コード確認
初期コードの真ん中あたりに/* TODO: add your own code here */と記載されています。
その下に、次のコードを書き込みます。
volatile int a=3; volatile int b=2; volatile int c=1; c=a+b;
3つの変数a、b、cを定義して、aとbを足してcに入れます。
図24:ユーザープログラム記入
上部のツールバーにある小さな「ハンマー」記号をクリックするとプロジェクトがビルドされます。
完了するとビルド結果がCDTビルド・コンソールに表示されます。「Build Finished. 0 errors, 1 warnings. (took 8s.672ms)」と書かれていますので、エラー無くビルドされました。Warningが1つありますが、これは「変数cを定義したけど使っていないよ。」という事です。プログラムの動作に影響はありませんので、このままにしておきます。
図25:ビルド結果
これでプロジェクトを実行する準備が整いました。
RZ/G2L評価キットのセットアップ
システム構成
Windows PCにデバッガをつなぎ、デバッガはRZ/G2L評価キットとアダプタケーブルで接続します。
図26:システム構成
今回使用するデバッガは、SEGGER社の J-Linkを使います。その中でもローコスト版の J-Link BASE Compactを使います。
日本では 株式会社エンビテックが、SEGGER社のハードウェア(デバッガ・書込みツール)及びソフトウェア製品のライセンス販売・サポートサービスの代理店になっています。J-Linkは エンビテック社のWebから購入可能です。また、必要なソフトウェアのダウンロード・インストール方法は こちらを参照ください。
J-Link BASE Compactは、 J-Link 9ピンアダプター経由でRZ/G2L評価キットに接続します。
モード設定
ボードをブートモード3(QSPIブート(1.8V)モード)の設定はSW11、JTAGを接続する場合は、SW1を、次のように設定する必要があります。
図27:モード設定
アダプタの接続
J-Link 9-Pinアダプタは9-pinコネクタ経由で、次のようにボードに接続します。
図28:J-Link 9-Pinコネクタ
電源接続
USB電源をUSB Type-Cコネクタに接続します。
図29:電源供給
電源が供給されると、LED1(VBUS PWR On)とLED3(モジュールPWR On)が点灯します。さらに、SW9を1秒以上押すとデバイスに電源が入り、LED4(キャリアPWR On)が点灯します。
図30:電源投入手順
これでWindows PCとデバッガとRZ/G2L評価キットの準備が整いました。
デバッグモード
デバッグ記号(虫の記号)の横にある小さな矢印をクリックし ドロップダウンリストボックスから「デバッグの構成」を選択します
図31:デバッグの構成
「構成の作成、管理、および実行」の画面で左側のツリービューのRenesas GDB Hardware Debuggingの下の今回のプロジェクトの名前を選択します。
図32:プロジェクトの選択
プロジェクトの名前を確認して、選択します。下部の「デバッグ」をクリックするとデバッガが起動します
図33:プロジェクトの確認
プログラムの実行
デバッグ画面が開いたら、再開ボタンをクリックします。すると、プログラムはmain()関数のhal_entry()の呼び出しまで実行されます。次に、再開ボタンをもう一度クリックするとプログラムは実行を継続し演算を行います。
図34:プログラムの実行
再開ボタンの隣の一時停止ボタンをクリックすると、プログラムが一時停止します。
図35:デバッグの一時停止
プログラムが一時停止すると、右側の変数のウィンドウに、a、b、cの値が表示されます。
cの初期値は1ですが、演算後は5になっているのが判ります。
図36:変数の確認
一時停止ボタンの右側の終了ボタンをクリックすると、デバッグモードが終了し、デバッガがデバイス(RZ/G2L)から切り離されます。
図37:デバッグモードの終了
最後はファイルメニューから終了を選んでe2 studioを終了します。
「第5回:サブコアを使ってみる」は、以上です。RZ/G2LのサブコアであるCortex-M33の使い方が理解できたと思います。
これで「ルネサスRZ/Gシリーズ入門編」は終わりです。LinuxマシンのマイクロプロセッサRZ/Gシリーズの製品仕様、開発環境、アプリケーションを理解し、基本的なメインコアCoretx-A55の使い方と、その応用としてサブコアCortex-M33の使い方を習得できたと思います。
ルネサスRZ/Gシリーズ入門編の5回シリーズは、今回で終わりですが、さらにRZ/G2Lの評価キットをユーザーキットに変換するポイントをまとめた特別編を計画しています。ご期待ください。