RL78/G14は、RL78/G13と差替えできるか?

RL78/G1444DMIS@32MHzG13は、41DMIPS@32MHzRL78ファミリカタログより)。そこで、RL78/G13で開発中に、マイコン性能が足りなくなった時、RL78/G14へ差替えができれば良いと漠然と考えていた。ここで、この可能性について64ピンパッケージで考察する。

RL78/G13G14PIORフォーマットを示す。PIORは、特定ピンを、別の位置へ再配置することができる便利な機能で、基板設計を容易にするために設けられている。G13では、初期値設定を含めて6つの選択肢、G14では10選択肢がある。

PIORフォーマットの違い
PIORフォーマットの違い

PIORフォーマットを眺めると、青で囲ったPIOR5からPIOR1SCK20までは、G13G14は、ほぼ同じだが、TxD0からPIOR0再配置できる機能は、全く異なることが判る。64ピンパッケージの場合、初期値設定でも、ピン位置の異なる機能がある。つまり、これら位置が異なる機能を使ったG13ソフト、基板に、そのままG14は使えない事を示している。例えば、G13TI02/TO02を使って開発したソフトと基板に、G14を差替えても動作しない。

PIOR初期値設定の違い
PIOR初期値設定の違い

残念ながら、RL78/G13でマイコン性能が足りない場合は、ソフトを工夫した方が良さそうだ。“G13G14で同じピン配置の機能のみを使えば、差替えも可能”だが、このような制約はなしでG13開発するのが“筋の良い設計”と言える。

PIORは、G13、またはG14同一機種でパッケージを変えた時に、活用すべき機能で、パソコンのようにCore i3Core i7へ交換して性能を上げることは出来ないと認識した次第です。

CubeSuite+ V1.03.00へバージョンアップ

CubeSuite+が、V1.03.00へバージョンアップしました(ルネサスサポート情報vol.122 2012/11/15より)。今回様々な機能追加/変更がありますが、ここでは、2点紹介します。

端子配置表/図追加

RL78/G13G14の設計ツールに端子配置表と図が追加されました。配置図で、コード生成ツールの結果がGUIで確認できます。マイコンボード設計時、PIORで再配置ピンの配置を検討する際などに有効です。また、配置表には、ピン未使用時の処置方法もあるので参考になります。

端子配置図
端子配置図

コード生成出力の変更

CubeSuite+のポイントは、コード生成ツールの活用です。今回、このコード生成の自動生成ファイルに変更がありました。

新旧コード生成ツール比較
新旧コード生成ツール比較

hdwinit()の割込み許可EI()の前に、R_MAIN_UserInit()が追加されました。困るのは、従来プロジェクトを新バージョンで再コード生成したら、main()に関しては、旧バージョンの/* Start User code… から /* End User code…のソースがコピーされないことです。要となるコード生成ツール自体もバージョンアップしますので、このような不具合があることも念頭に置く必要があります。リリースノートに記載はありますが、多くの変更の中に、サラリと紛れ込んで記載されますので、注意が必要です。

RL78/G1xピン配置の指針

RL78ファミリカタログ記載のRL78/G1xI/Oポート配置例から、IOピン配置の指針を考察します。

System Pinsは、全てのパッケージで動作に必要となるピンで、64ピン構成の場合、RESETTOOL0VddVssREGC EVdd0EVss07本です(ピン数により、EVdd0が無いなど必須本数は異なる)。従って、このSystem Pins側には、バイパスコンデンサやE1インタフェースなどの実装が必須です。

RL78/G1x IOポート利用指針
RL78/G1x IOポートの利用指針

一方、P1P2P7は、System Pinsとは別サイドにあるため、部品実装が容易で、しかも、使用するRL78/G1xのパッケージ変更があっても、部品の配置変更が少ないポートと言えます。従って、P1P2P7の順に使用するIOピン配置をすると、スケーラビリティに優れたピン配置と言えるでしょう。

RL78/G1xI/Oポート配置でもう一つ便利な機能が、周辺IOリダイレクション・レジスタ:PIORによるIOピンの再配置です。3064ピン構成の場合、Timer_ IOピンやI2C_A0の配置が変更できます。64ピンを基準にピン数を減らす場合などに効果的です。

CubeSuite+コード生成機能の目的

CubeSuite+のコード生成(以下Cg)は、有用で効果的なツールです。今回は、このCgの目的を整理します。

図は、あるプロジェクトのCubeSuite+画面です。プロジェクトツリーのファイルに、コード生成カテゴリがあり、Cg出力のヘッダファイルとソースファイルは、ここに配置されます。ファイルには、新たなカテゴリを追加し、Cg出力ファイルと区別できるようにしています。

CubeSuite+画面
CubeSuite+画面

Cgの目的は、API生成とテンプレート作成の2つです。それゆえ、Cgの出力ファイルには、2つ様式があります。1つがAPI関連のヘッダとソース分離様式、もう1つがテンプレート関連のヘッダ、ソース一体様式です。

目的 様式 生成内容
API生成 分離様式 r_cg_周辺.h 周辺APIプトロタイプ宣言、型定義など
r_cg_周辺.c 周辺APIソース
r_cg_周辺_user.c r_cg_周辺.h r_cg_macrodriver.huserdefine.hは追加済みの空ソースファイル
テンプレート生成 一体様式 r_main.c r_cg_周辺.h r_cg_macrodriver.huserdefine.hは追加済みのメインループ付き空ソースファイル
r_systeminit.c r_cg_周辺.h r_cg_macrodriver.huserdefine.hは追加済みの周辺初期化API付き初期化ソースファイル

userdefine.hは、Cg生成時、空ヘッダファイル。

APIのプトロタイプ宣言や型定義が記述されたヘッダファイルは、r_main.cに自動追加され、Cgが生成したAPIをファイル内で宣言なしに使えます。分離様式は、このように使用側で明示的な宣言が不要になる利点があります。APIやライブラリのように、ソースにバグが無く品質が良い関数を使うのに適した方法です。一方、ユーザが作成した関数は、(バグがあるかもしれませんので)使用側で明示的に宣言した方が良いでしょう。

通常は、Cg出力のコード生成カテゴリのファイルの中身に、ユーザがソースを書き加えることでプログラムが完成します(どこに書き加えるかは、2012/8/13記事参照)。具体的には、r_cg_周辺.cr_main.cの空ソース部分、userdefine.hが対象です。r_cg_周辺.cでユーザが追加した関数は、r_main.cなどの使用側で明示的に使用宣言します。userdefine.hは、ユーザ追加ソースで必要となるマクロや型定義などを記述します。

Cgが指定する場所へソースを書き加えれば、後に構成が変わってCg再生成をしても、ユーザが追加したソースはそのまま引き継がれます。Cgの目的が2つあり、生成ファイルとその内容を俯瞰的に理解していないと、有用性が判りづらい点もあるので、整理しました。

RL78/G13 秋月電子通商で販売中

RL78/G13 Promotional Board使用中のマイコンを含め、4品種マイコンを秋月で販売中です。

型式

R5F100LCAFB

R5F100LEAFB

R5F100LGAFB

R5F100LJAFB

価格(円/税込)

250

290

340

400

ROMKB

32

64

128

256

RAMKB

2

4

12

20

Data FlashKB

4

8

Temperature

-40 to 85

Package

P-LFQFP64-10×10-0.50 

P-LFQFP64-10x10-0.50
P-LFQFP64-10×10-0.50

備考

RL78/G13 Stick スタータキット使用品 ROM64KB制限のため無償版CubeSuite+では開発不可

 

2012年10月31日現在、AAA商品なので入手性は良く、価格も安い。0.5mmピッチなので、同じく販売中の変換基板を使えば試作などでの実装も容易でしょう。 

ピッチ変換基板
ピッチ変換基板

RL78/G13のパッケージは300品種以上ありますが、同じ品種で、実装面積が小さく拡張性が優れた品種を選ぶとしたら、64-LQFP 10x10mm、ピッチ0.5mmなのでしょう。RL78/G13 Stickスタータキットもこの品種:R5F100LEAFBを使っています。

実装面積のパッケージ差
実装面積のパッケージ差

豊富な周辺機能を備えたマイコンをこの価格で入手できるのが、あらゆる機器にマイコンを使う理由です。RL78/G13ならCubeSuite+のコード生成で、簡単に周辺APIの自動生成ができるし、ソフト開発速度もアップします。

特徴を活かしたメイン関数の効果

前回紹介した、最新マイコンの特徴を活かすメイン関数の効果を示します。

測定は、RL78/G13 Stickスタータキットの、低消費電力動作デモンストレーション用J3コネクタを使います。このコネクタは、通常動作、HALTSTOPSNOOZEの各モードでの消費電流を測るものです。このキットに、適当なプログラムを書き込んで、メイン関数内に低消費電力モードのHALTがある場合とない場合で、どの程度差があるかを実測しました。

測定条件

消費電流

メイン無限ループ内にHALT()がある時

1.95mA

HALT()無しの時

5.70mA
測定結果と測定方法
低消費電力モードの効果と測定方法

メイン関数の無限ループ内でHALTの時間割合が多ければ多い程、消費電流を下げることができるので、ここで示した値は、目安で、平均消費電流です。しかし、HALTがメイン無限ループ内にあるだけで、マイコン消費電力が半分以下になることが判ります。

特徴を活かしたメイン関数の効果

前回紹介した、最新マイコンの特徴を活かすメイン関数の効果を示します。

測定は、RL78/G13 Stickスタータキットの、低消費電力動作デモンストレーション用J3コネクタを使います。このコネクタは、通常動作、HALTSTOPSNOOZEの各モードでの消費電流を測るものです。このキットに、適当なプログラムを書き込んで、メイン関数内に低消費電力モードのHALTがある場合とない場合で、どの程度差があるかを実測しました。

測定条件

消費電流

メイン無限ループ内にHALT()がある時

1.95mA

HALT()無しの時

5.70mA
測定結果と測定方法
低消費電力モードの効果と測定方法

メイン関数の無限ループ内でHALTの時間割合が多ければ多い程、消費電流を下げることができるので、ここで示した値は、目安で、平均消費電流です。しかし、HALTがメイン無限ループ内にあるだけで、マイコン消費電力が半分以下になることが判ります。

最新マイコンの特徴を活かすmain関数とは?

最新マイコンには、20MHzを超える高速動作と消費電力を抑えた2つの動作モード、このモードを効率的に切り替える仕組みを持ちます。この特徴を活かすメイン関数をRL78/G13G14で示します

最新マイコンの特徴を活かすメイン関数

ポイントは、メイン関数の無限ループ内で、高速動作後、低消費電力モードへモード切替することです。低消費電力モードからの復帰は、タイマ割込みや外部割込みなどの割込み処理で行います。

図1 最新マイコンの特徴を活かすmain関数
図1 最新マイコンの特徴を活かすmain関数

 

低消費電力モード中は、電力消費が低下しますので、このモードの時間が長ければ長いほど、マイコントータルの消費電力は下がります。このため、最新マイコンには、高速動作モードと低消費電力モード、効率的なモード切換え機能の3つが備わっています。

高速動作モード

RL78/G13G14は、最大32MHz、世界定番のCortex-M0マイコンは、最大50MHzなど最新マイコンの動作速度は、簡単に入手できる20MHz発振器を大きく超えるものがほとんどです。また、動作電圧範囲も1.8Vから5.5Vまでと広範囲で、マイコン以外のデジタルデバイスとの接続トレランスは良好です。

但し、RL78マイコンは、供給電圧:VDDによりCPUの最大速度が異なるので、図2のコード生成時の動作モード設定には、注意が必要です。図3から、RL78/G13G14は、2.7(V)VDD5.5(V)範囲では、最大32MHzの高速メイン・モードで動作しますが、1.6(V)VDD1.8(V)時は、4MHz動作が最大となります。

どの動作モードに設定してもRL78マイコンは、高速処理で、かつ、高速処理中でも電力消費は低いことが判ります。

図2 コード生成の動作モード設定画面
図2 コード生成の動作モード設定画面

 

図3 RL78/G13,G14の動作電圧と動作電流
図3 RL78/G13,G14の動作電圧と動作電流 (ルネサスエレのRL78ファミリマイコン資料より抜粋)

低消費電力モード

最新マイコンには、通常動作と別に低消費電力モードが必ずあります。機種によりスリープやHALTなど、呼び名が異なりますが、いずれもCPUや一部の内臓周辺機能へのクロック供給を停止し、電流消費を低減させるモードです。

RL78/G13G14では、図4HALTに相当する低消費電力モードは、通常動作と組み合わせて使うことが重要です。つまり、一般的なメイン無限ループ内の処理を、図1に示したように、割込み起動の通常処理後は、ループを無駄に回さず、低消費電力へモードを切替えることで、本来の組込みマイコン高速処理が実現できるのです。

図4  RL78/G13、G14の動作モード
図4 RL78/G13、G14の動作モード(RL78ファミリマイコン資料より抜粋)

高速なモード切換え

RL78/G13G14には、割込みバンクが4面あることや、高速に関数を呼び出すcalltなどの仕組みがあり、割込み処理のオーバーヘッドを少なくすることができます。一方、Cortex-M0マイコンには、モード切換えを高速にする専用回路:NVIC (Nested Vectored Interrupt Controller)が実装されています。

RL78/G13G14実務向けスケルトンテンプレート

最新マイコン機能は上手く使わないと、実務向けプログラミングはできません。マニュアルには、これら機能の説明はあります。しかし、その背景にある使い方については、記述されていません。使い方は、ユーザマターだからです。背景理解度が低い者には、宝の持ち腐れになりかねません。

また、サンプルプログラムや、チュートリアルで紹介される処理は、内容理解に重点をおいた記述になっています。中級者以上ならば、これらをヒントにアレンジし、最新マイコンの宝を駆使したプログラミングができます。

今回はメイン関数のみを示しました。本ブログ読者対象である、初心~中級者向けに、近日中に、実務に使えるRL78/G13G14向けの実務向けスケルトンテンプレートをフリーウエアで公開する予定です。組込みソフトのフリーウエアはあまり見かけませんが、このテンプレートは、サンプルプログラムなどで掲載された関数を、手順に沿って簡単にテンプレートに組み込むことができるものです。ご期待ください。

新規プロジェクト作成の3方法

新規プロジェクトを作成するには、CubeSuite+のスタート(S)画面から、“新しいプロジェクトを作成”を使うのが一般的です。このツールには、新規プロジェクト作成と、既存プロジェクト流用の2つの選択肢があります。しかし、いずれの方法でも、コード生成の設定値は、引き継がれません。

新規プロジェクト作成時の2つの選択肢
新規プロジェクト作成時の2つの選択肢

そこで、既存プロジェクトを流用し、かつ、コード生成の設定値も引き継ぐプロジェクト作成方法を紹介します。

既存プロジェクトを丸ごとコピーし、そのフォルダ名とプロジェクト名:既存プロジェクト名.mtpjを、新プロジェクト名に変更します。変更したプロジェクト名.mtpjをダブルクリックし、CubeSuite+を起動します。これで、既存プロジェクトとコード生成設定値が、両方とも新しいプロジェクトへ引き継がれます。一旦、CubeSuite+を終了します。新プロジェクトフォルダ内にある旧プロジェクト名.PC名.mtudファイルは、削除して構いません。新プロジェクト名.PC名.mtudファイルは、自動生成されています。

プロジェクト作成の3方法 コード生成設定値コピー 既存プロジェクトファイルコピー
新規プロジェクト作成 なし:新規コード生成必要 なし:userdefine.h新規作成必要
既存プロジェクト流用 なし:新規コード生成必要 あり
フォルダ丸ごとコピー あり:コピー済み あり

 

但し、第3の方法でも、コード生成を再実行した場合は、割込みバンク設定値(RB1/RB2/RB3)は、全てデフォルトのRB0に戻ります。RB0以外の割込みバンク使用時は、注意が必要です。

スタータキットでRSKを作る費用は?

E1がセットになったRSKRL78/G13開発に理想的だが、日本仕様とUS/Euro仕様の価格差が気になる、という内容を以前書きました。開発環境には、RSKとは別に、RL78/G13 Stickスタータキットという低価格品(3000円~5000円程度)があります。今回は、このスタータキットでRSKと同じ機能を実現する費用を概算します。

スタータキットとRSKの機能差を示します。

機能 スタータキット RSK
CPU R5F100LEAFB R5F100LEAFB
CPUピンヘッダ あり あり
CPUリセットボタン なし あり
E1インタフェース あり(ボックスヘッダなし) あり(ボックスヘッダあり)
UARTインタフェース なし あり
LCDインタフェース なし あり
EZ Emulatorインタフェース あり(P12/TxD0P14/RxD0使用) なし
ユーザSW なし 3
LED ユーザ1個、電源1 ユーザ4個、電源1
ポテンショメータ 1個(ANI2 1個(ANI6

 

スタータキットは、SWLEDの個数を減らしていますが、E1インタフェースは実装済みで、しかも、RSKと同一CPUです。CPUリセットボタンは、デバッガー経由でリセットできるので、不要です。また、CPUピンヘッダで全CPUピンが使用できるので、RSK実装のSWLEDもスタータキットへ追加可能です。LCDインタフェースも、よく使われる4-bit LCDモジュールインタフェースですので、IOピン6本で追加可能です。

スタータキットのP12/TxD0P14/RxD0を使用するEZ Emulatorインタフェースは、E1インタフェースの代替です。従って、キットでE1使用時は、別用途に使えます。

結局、スタータキットに、E1単体価格15,000円を加えて20,000円弱、LCDSWUARTなどを実装する手間と費用が更にかかりますが、RSKより安く機能実現ができそうです。逆に、製造ミスや実装の手間を考えると、RSKはリーズナブル価格だ、とも言えます。