RL78コンパイラコーステキスト、2013年5月22日Rev.1.06版の要旨を3回に分けて解説します。
このテキストは、 ルネサス半導体トレーニングセンターの2日間セミナ「RL78 コンパイラコース」用に作成されたもので、RL78/G14を対象に、コンパイラとリンカ、周辺機器、割込み処理という盛りだくさんの内容です。セミナ参加が困難な私のような地方技術者にとっては、テキスト公開だけでもありがたいです。テキスト内容が濃いので、初心者向けにここでは、リンカとコンパイラに絞って解説します。
今回はリンク・ディレクティブ、2回目は、スタック設定、これら2回がリンカ関連、3回目がコンパイラ関連です。入手が容易で、評価キットにも良く使われる以下2種マイコンの具体例を示します。
対象マイコン
RAM容量 | ROM容量 | データ・フラッシュ容量 | |
RL78/G13:S2コア |
4KB |
64KB |
4KB |
RL78/G14:S3コア |
5.5KB |
リンク・ディレクティブ要旨
先ず、リンカとコンパイラを簡単に説明します。コンパイラは、ユーザ作成のプログラムを、変数や定数、プログラムコードなどの「種類別に1つのかたまり」にまとめ、リンカに渡すロードモジュールを作成します。この「かたまりをセクション」と呼び、変数のかたまりをデータセクション、プログラムコードのかたまりをコードセクションなどと呼びます。リンカは、コンパイラが作成した各セクションのロードモジュールを、マイコンのROMやRAMに割付け、オブジェクトを生成します。今回と次回は、このリンカ関連の説明です。
リンク・ディレクティブとは、リンカへのセクション単位の「追加ユーザ割付指示ファイル」のことです。「ユーザ」とわざわざ但し書きしたのは、CuiteSuite+のデフォルトのリンク・ディレクティブ:r_lk.drは、別のところ(場所は不明)にあり、このデフォルト指示に従ってリンクすれば、問題なくオブジェクトが生成できるからです。このため、CubeSuite+のプロジェクト・ツリーには、r_lk.drが表示されません。ユーザが指示を追加する場合は、「追加分のみを記述した」user.drを作成し、プロジェクト・ツリーに追加します。
追加ユーザ指示が必要になるのは、1.スタック領域の設定、2.saddr領域拡張の設定、3.データ・フラッシュ使用時、専用ライブラリ使用領域の確保、の3つの場合です。1と2については、2回目以降にそれぞれ解説します。
3のデータ・フラッシュは、RL78ファミリマイコンならば実装済みの周辺機能です。RL78/G13にはデータ・フラッシュ無しのデバイスもありますが、電源なしでもデータ保持ができる一種のROMです。プログラムで書き換えができるのでRAMでもあり、重要なパラメタなどを記録するのに便利な機能です。
データ・フラシュを使うには、ルネサス提供の専用ライブラリ:データ・フラッシュ・ライブラリ Type04 Ver.1.05が必要で、このライブラリ動作のためにRL78/G13ならFEF00h ~ FF2FFh、RL78/G14ならFE900h ~ FECFFhのRAM下位アドレスから1KBを専有します。さらに、データ・フラッシュ利用に関係なくRAM上位アドレスは、汎用レジスタ、コンパイラ固定使用領域、saddr領域が合計で224バイトを専有します。そのため、RL78/G13とRL78/G14の全RAM容量から、これらの専有領域を引いた残りの2848/B20hバイトと4384/1120hバイトが、コンパイラにとって自由に使えるコンパイラ領域になります。つまり、ユーザ作成プログラムの変数などは、コンパイラがデータセクションにまとめ、リンカがこのRAM領域へ配置します。
従って、データ・フラッシュ利用時は、ユーザが、追加リンク・ディレクティブで、このことを追記する必要があります。データ・フラッシュ実装マイコンでも、これを使う/使わないはユーザまかせですので、使わない場合をデフォルトとして記述がないからです。このユーザ追記は、以下のようになります。
【 データ・フラッシュ利用時の追記リンク・ディレクティブ 】
MEMORY RAM : ( 0FF300H, 000AA0H ) ; RL78/G13 RAM4KB、ROM64KB、データ・フラシュ4KB
MEMORY RAM : ( 0FFD00H, 001020H ) ; RL78/G14 RAM5.5KB、ROM64KB、データ・フラシュ4KB
但し、上記は、さらにSTACK領域に128/256バイトを割当てた例で、これをuser.drファイルとしてプロジェクト・ツリーへ追加すれば、データ・フラッシュ・ライブラリが使えるようになります。
2 thoughts on “RL78コンパイラコーステキスト要旨(1回目)”