RZ/A1で楽しい組込み開発(1)2017/03/14
RZ/A1で開発をはじめよう
ルネサス エレクトロニクスからRZ/A1シリーズが発表されて数年経ちました。当社でもいくつかの製品にRZ/A1を採用していますが、手頃で使いやすくコストパフォーマンスの良いチップだと考えています。
そこで、このコーナーではRZ/A1に興味があるけど、どうやって開発を進めればいいのか分からない方へ向けて、具体的な方法を紹介したいと思います。
まずは、ドキュメントをそろえるところからはじめ、コンパイラや統合開発環境の使い方、ArmコアやRZ/A1の話など、実際の開発に役立つような情報を詳細に載せていきます。
- このコーナーではRZ/A1Lを使ったボード(CEV-RZ/A1L)を使って説明します。
- 内容についてお気づきになったことや、誤り、激励などがありましたらご連絡ください。
RZ/A1Lとは
RZ/A1Lとはご存知の通り、Arm社のCortex-A9コアが搭載された、ルネサス エレクトロニクスのプロセッサです。ルネサスはSH-2Aの置き換えプロセッサと位置付けているようですが、周辺I/OなどSH-2Aを踏襲した仕様となっていますので、SHユーザには馴染みやすいのではないかと思います。
CPUクロックは400MHzで、動作速度もSH-2Aの2倍ぐらいのDMIPS値を出しています。SH-2Aでパフォーマンスに物足りなさを感じている方には、ちょうどいい感じかもしれません。
内蔵RAMが3MBあるとか、シリアルフラッシュメモリのプログラムが直接実行できるとか、いろいろおすすめポイントはありますが、その中で、最大のおすすめポイントは、日本語のドキュメントが用意されているというところでしょう。
正直なところ、日本語で書かれていても理解しがたいところはあります。が、しかし、これが英語なら、もっと理解度は落ちていることでしょう。まあ、自分の能力の低さを露呈していることにもなりますが、そんな人でもRZで開発ができる、というところをご紹介したいと思います。
ドキュメントをそろえよう
まず、何が必要かといえば、ドキュメントでしょう。この時代、ドキュメントはすべてネットから手に入ります。RZ/A1Lで開発を行う場合は、以下の3つのドキュメントが必要ですので、これらをダウンロードしていきます。
- RZ/A1Lユーザーズマニュアル(ルネサス)
- Cortex-A9テクニカルリファレンスマニュアル(Arm)
- Armアーキテクチャリファレンスマニュアル(Arm)
ルネサスのRZ/A1Lのマニュアルは周辺I/Oの説明が主となっていますので、コアであるCortex-A9の仕様については書かれていません。よって、Cortex-A9のマニュアルをArm社のページからダウンロードする必要があります。さらに、Cortex-A9のマニュアルにはArmコアの仕様が書かれていませんので、Armアーキテクチャリファレンスマニュアルをダウンロードする必要があります。
このあたりですでに心が折れそうですが、我慢してダウンロードしましょう。まずはArmのCortex-A9テクニカルリファレンスマニュアルです。以下のURLからダウンロードできます。
http://infocenter.arm.com/help/topic/com.arm.doc.ddi0388fj/DDI0388FJ_trm.pdf
ファイル名が分かりにくいので、適当に変更しておくことをおすすめします。なお、日本語版のマニュアルは若干リビジョンが古く、r2p2となっていますが、このコーナーで使用する分には特に問題ないでしょう。
次は「Armアーキテクチャリファレンスマニュアル」ですが、こちらはなぜかArmのホームページにユーザ登録が必要です。RZ/A1LはARMv7-Aアーキテクチャですので、このマニュアルが必要なのですが、2017年1月現在、日本語版は抄訳となっています。また、目次もないので正直なところ見づらいです。
日本語で書かれたArmアーキテクチャのマニュアルでは、ARMv5のものが個人的に読みやすいと思っていますので、そちらをよく参照しています。Armの基本的な説明は網羅されていますので、とりあえずはARMv5アーキテクチャでも十分だと思います。
Armアーキテクチャリファレンスマニュアルは以下のURLから、[Armアーキテクチャ] – [ARMv5 Reference Manual Japanese]をクリックすればダウンロードできます。
http://infocenter.arm.com/help/index.jsp
最後は「RZ/A1Lユーザーズマニュアル」です。検索エンジンで「RZA1L」を検索するとルネサスのホームページがヒットしますので、そのページから[ドキュメント]を選択し、[ユーザーズマニュアル:ハードウェア]にチェックを入れ、検索を押します。
タイトルに表示されている「RZ/A1Lグループ、RZ/A1LUグループ、RZ/A1LCグループ ユーザーズマニュアル ハードウェア編」をクリックし、ダウンロードしてください。ドキュメント的には、この3種類があればとりあえずOKです。
開発環境をそろえよう
次に開発環境をそろえます。組込み開発に必要なものは、コンパイラ、統合開発環境、ボード、デバッガ(JTAG-ICE)です。今回は以下のものを用意します。
- GNU C/C++
- e2 studio
- CEV-RZ/A1L
- PALMiCE3 ARM
GNU C/C++はCyber THOR Studios社のページから、ルネサスCPU向けのGCCがダウンロードできますので、それを使います。以前はKPITテクノロジーズが運営していたページですが、Cyber THOR Studiosに引き継がれました。そのため、様々なところにKPITの表記が残っています。
e2 studioはルネサスが無償で提供しているEclipseベースの統合開発環境です。Eclipseというと、自分がそうであったように、食わず嫌いの人も多いのではないかと思います。使ってみるとエディタの機能が強力で、プログラミングが楽になる気がします。ちなみにe2 studioはイースクウェアスタジオと読むらしいです。
CEV-RZ/A1Lは、RZ/A1L評価ボードです。USB、LAN、SDRAM、温度センサーを搭載しており、RZ/A1Lの評価に最適です。当社のホームページからも7,700円で購入できます。
PALMiCE3 ARMは言わずと知れた当社製のJTAG-ICEです。宣伝は割愛します。
GNU C/C++のインストール
以下のURLからGNU C/C++をダウンロードします。
https://gcc-renesas.com/ja/rz/rz-download-toolchains/
この時点ではv16.01が最新ですので、「GNUARM-NONE v16.01 Windows Toolchain(ELF)」をダウンロードします。ダウンロードにはユーザ登録が必要ですので、必要な情報を入力して登録してください。
ダウンロードしたファイル「GNUARM-NONEv1601-EABI.exe」を実行すると、インストールが開始されますので、Defaultを選択して、Nextを何回か押します。
最後にFinishを押せばインストール完了です。簡単ですね。
e2 studioのインストール
次はe2 studioをインストールします。検索エンジンで「e2 studio」を検索し、ルネサスのe2 studioのページを表示します。ダウンロードをクリックし、さらに[統合開発環境 e² studio 5.3.0 インストーラ (オフライン用)]をクリックします。ダウンロードにはユーザ登録が必要ですので、必要な事項を入力して登録を行ってください。
オンライン用のインストーラもありますが、そちらは必要なモジュールをその都度ダウンロードしてインストールします。ちなみにオンライン用のファイルサイズは約80MB、オフライン用は約900MBあります。
なお、オンライン用のインストーラでは、インターネットへアクセスするため、プロキシサーバーの設定が必要になることがあります。プロキシサーバーの設定が分からない場合は、オフライン用をダウンロードすることをおすすめします。
ユーザ登録を完了して[ダウンロード]をクリックすると、免責事項のページが表示されますので熟読し、[同意]をクリックします。
ダウンロード終了後、「setup_e2_studio_5_3_0_023.exe」を実行すると、インストールが開始されます。今回はオフライン用をダウンロードしましたが、オンライン用でインストールされる場合は、インストーラのトップページに[プロキシーを設定]という項目がありますので、ここクリックしてプロキシサーバーを設定してください。
[RZデバイス・サポート]にチェックを入れます。
[日本語言語パック日本語サポート]にチェックを入れます。
以下の設定はすべてチェックを入れます。
[GCC ARM Embedded 4.9 2015q3]のチェックを外します。
これは今回使うCyber THOR Studios(KPIT)のGNU Cとは別のGNU Cなので外します。それと、このGNU CではなぜかCortex-AをサポートしていないようですのでRZ/A1Lでは使えません。GNU Cにもいろいろ種類があるのかと思われるかもしれませんが、さまざまな団体がライブラリや付加機能を追加してリリースしているもので、核となるコンパイラは同じものです。
以下のソフトウェア使用許諾の内容を確認し、チェックを入れます。
[インストール]を押すとインストールが開始されます。
インストールが完了したら、早速e2 studioを起動してみましょう。
最初にワークスペースの場所を指定する必要がありますので、適当なフォルダを指定します。もちろん、デフォルトで表示されている場所でも構いません。
初回は以下のツールチェインの登録画面が表示されますので、[KPIT GNUARM-NONE-EABI Toolchain – v16.01]を選択してください。
(他のツールチェインの選択肢がなければ表示されないかもしれません。)
コード生成の登録の確認が表示されますので[OK]を押し、e2 studioを一旦終了してから再起動します。
「ようこそ」の画面が表示されればインストール完了です。
新規プロジェクト作成
e2 studioがインストールできた勢いで、プロジェクトの作成から簡単なプログラム作成までやってしまいましょう。「ようこそ」の画面から[Workbench]をクリックし、IDEの画面に切り替えます。
[ファイル]メニューの[新規作成][Cプロジェクト]を選択すると、以下のウィンドウが表示されますので、プロジェクト名に適当な名前を入力します。ここでは「test」としておきます。
プロジェクトの種類に[Executable (Renesas) – Sample Project]を、ツールチェインに[KPIT GNUARM-NONE-EABI Toolchain]を選択します。Sample Projectを選択することでRZ/A1Lの初期化ルーチンを含んだサンプルプログラムが生成されます。
[次へ]ボタンを押すと「ターゲット固有の設定の選択」画面が表示されますので、[ターゲットの選択]でRZ/A1Lの[R7S721021]を選択してください。
さらに、構成の選択で[シミュレーターを使用してデバッグする]のチェックを外し、[リリース(デバッグしない)]にチェックを入れます。
[次へ]を押すと「コード生成の設定」画面が表示されますが、現在RZ/A1ではこの機能が使えません。RZ/T1を選択すれば使えるようですので、このあたりはルネサスさんの力点の置き方が違うのでしょうね。しかたなく、そのまま次へ行きます。
CPUのオプション選択画面が表示されます。
浮動小数点は使いませんが、RZ/A1LはFPUを標準搭載していますので、[浮動小数点ABI]を[Softfp]、または[Hard]に設定しておきます。これで浮動小数点演算時にFPU命令が出力されます。
[Warn if stack size exceeds the limit](なぜかここだけ英語?)も1000(=4KB)に拡張しておきましょう。ローカル変数のサイズが指定値を超えると、コンパイル時に警告を表示してくれます。なお、この指定はスタックサイズの指定とは関係ありません。スタックサイズはプログラムが生成されてから、リンカのセクションで指定します。
引き続き[次へ]を押すと、最終選択画面が表示されます。ライブラリ・ソースの選択をどうするかという問題がありますが、とりあえずデフォルトで行くことにし、[終了]を押します。
プロジェクトの要約ウィンドウが表示され、[OK]を押せば以下のようにプロジェクトが生成されます。
左側のプロジェクト・エクスプローラーに生成されたファイルがツリー形式で表示されています。ここからtest.cを開いてみました。
なるほど、main関数が出力されて、他にもリセット処理、ベクタテーブルなどが出力されています。HEWでおなじみだったiodefine.hもありますね。なんとなくプログラムが作れそうです。
では、一度ビルドが通るかやってみましょう。ビルドは[プロジェクト]メニューの[プロジェクトのビルド]です。ハンマーの図柄のツールバーを押してもOKです。
ビルドが無事通りましたので、次回よりいよいよプログラムを追加していきましょう。で、どんなプログラムを作るのかといえば、まずはLチカ(LEDチカチカ)が基本ですよね。
e2 studioのワークスペースとEclipseの文化について
e2 studioはEclipseをベースにしていますが、EclipseはHEWやCS+、EW、Visual StudioといったIDEとは違う文化を持っています。最初に戸惑うのがワークスペースの扱いです。この違いによって、Eclipseに嫌悪感を持っている方も結構おられるようです。
他のIDEではプロジェクトファイルというファイルが存在し、そのファイルを開くことでIDEを起動することができます。しかし、Eclipseにはそのようなファイルがないため、「以前作ったあのプロジェクトを再開したい」と思っても、どうしていいのか分からないのです。
ファイルのメニューからプロジェクトをインポートする機能があるのですが、現在のワークスペースに組込まれて、ややこしいことになります。また、プロジェクト・エクスプローラーはフォルダの内容をそのまま表示していますので、ここで削除を行うと本当のファイルまで削除されてしまう事態が発生します。
他のIDEと同じ感覚で使用するには、ワークスペースフォルダをプロジェクトごとに用意するのが良いようです。プロジェクトファイルで起動するのではなく、Eclipse起動時にワークスペースフォルダを指定することで、異なるプロジェクトで再開できます。また、起動してからもファイルメニューに[ワークスペースの切り替え]というのがありますので、これで別のプロジェクトへ切り替えることができます。