CubeSuite+のコード生成にユーザ処理を追加する方法

CubeSuite+のコード生成(以下Cgと略す)の目的は、以前このブログで記載しました。今回は、ユーザ処理の追加方法を示します。

Cgは、使用周辺機能に応じたAPIと、メイン関数を含むテンプレートを生成します。ユーザは、このCg生成ファイルに必要なユーザ処理を追加すれば、プログラムが完成する仕組みです。この仕組みを使って完成したプログラムは、Cg指定のユーザ処理追加部分に記述していれば、RLマイコンの機種やピン数が変わって再コード生成しても、そのままファイルマージされ使えます。APIが、機種やピン数のハード依存部分を隠ぺいするからです。

では、どのようにCubeSuite+へユーザ処理を追加すれば、良いのでしょうか?大別すると、2つあります。1つは、Cg生成ファイルに直接追記する方法、もう1つは、別ファイルで追加する方法です。

APIを活かしてユーザ処理を追加するなら、別ファイルで追加する方法を用いましょう。CubeSuite+のファイルカテゴリ追加機能を使って、コード生成とは別カテゴリを作り、この中にユーザ処理ファイルを追加することをお勧めします。これにより、バグの可能性のあるユーザファイルと、(おそらくバグのない)APIファイルを分離でき、メンテナンス性が向上します。また、ユーザファイルは、機種依存しないハズですから、そのまま別機種マイコンへ移植できる可能性も高まります

ユーザ処理追加方法
ユーザ処理追加方法

 

デバッグツールの差

CubeSuite+には、5種類のRL78デバッグツールが使えます。今回は、これらのうち、E1EZ Emulator、シミュレータの解析機能を比較します。

デバッグツールは、バグ取りが主目的です。これに加えて、ツールタイマを使ってプログラム解析もできます。以下に各ツール接続時の解析内容と、画面右下に表示される各ツールのステータス情報を示します。

解析機能 E1 EZ Emulator Simulator
制御品質解析(変数やパラメタの時間変化) あり あり あり
実行性能解析(関数処理の時間割合) なし なし 選択可能
パフォーマンス解析(特定区間の実行時間計測) なし なし 選択可能
カバレッジ解析(実行網羅率測定) なし なし 選択可能

 

ステータス情報(CubeSuite+画面右下)

デバッグツールの差
デバッグツールの差

 

E1EZ Emulatorは、CubeSuite+以外に専用ハードウエアが必要です。シミュレータは、CubeSuite+のみで実行できます。E1EZ Emulatorの違いは、ありません。シミュレータの解析内容が一番豊富です。シミュレータでは、ステータス情報の足/時計/タイルアイコンクリックで解析機能の“あり/なしの選択も可能”です。RL78のカタログに記載されている実行性能解析は、シミュレータでのみ可能です。

しかし、シミュレータ解析は時間がかかります。専用ハードを使うE1EZ Emulatorは実時間処理なので、実行時間1秒の間に解析結果が得られます。同じ時間をシミュレータで解析すると、制御品質解析に加えて実行性能/パフォーマンス/カバレッジ解析ができますが、トレースメモリを2Mフレーム使用して、1分以上かかります。シミュレータは、トレース範囲の設定とトレース・メモリ・サイズに注意が必要です。E1/EZ Emulatorとシュミレータの使い分けが必要でしょう。

外付け20MHzの必要性検証実験

現在入手可能なRL78/G13の評価ボード:QB-R5F100LE-TBRL78/G13 Stick スターターキット、RSK for RL78/G13には、どれも外付け20MHz発振器が実装されており、メインクロックを供給しています。

RL78/G13性能は、内臓32MHzをメインクロックとして使った時に最高となるので、なぜ外付け20MHzがこれら評価ボードに実装されているかが疑問でした。

考えられるのは、プログラミングに必須となる可能性です。R8C/25でも同じ経験がありました。そこで、最もシンプルなQB-R5F100LE-TBを使って、プログラミング時に20MHz供給の必要性を検証します。

RL78/G13 Target Board
RL78/G13 Target Board

 

QB-R5F100LE-TBは、ショートパッドのパターンカットでクロック供給/停止を変えられます。結果は、外付け20MHzなしでも問題なくプログラミングでき、プログラミング後、内臓クロックで動作しました。

コスト重視の評価ボードで外付け20MHzの実装の理由は、未だはっきりしません。この疑問が解けましたら、本ブログに記載する予定です。

最新ユーザマニュアルの簡単参照方法とエラーメッセージ対処方法

CubeSuite+がアップデートされると、設計編~メッセージ編のPDFユーザマニュアルも更新されます。ツールニュースでの更新通知で、これら最新マニュアルをダウンロードし、参照される方が多いと思います。このマニュアルのもっと簡単な参照方法を示します。

CubeSuite+ヘルプを使う方法です。ヘルプは、大きく分けて2種類のドキュメントを含みます。チュートリアルと、起動編~メッセージ編までのマニュアルです。後者の内容は、最新ユーザマニュアルと同じです。ヘルプファイルなので、追記はできませんが、PDFマニュアルのダウンロードは不要で、簡単に参照できます。

もう一つのTipsとして、CubeSuite+の出力ウインドのエラーメッセージ番号の上にカーソルを載せて、F1:ヘルプを押すと、メッセージ編の記載場所へジャンプします。出力ウインドよりも詳細なエラー内容や、対処方法が記載されています。頻繁に使いますし、しかも便利な機能です。

最新ユーザマニュアル参照方法
最新ユーザマニュアル参照方法

 

解析機能チュートリアルのすすめ

CubeSuite+は、APIやテンプレートの生成、エディタなど、IDEとして優れた基本機能以外に、“解析機能”を持ちます。この解析機能理解のため、CubeSuite+付属のチュートリアル一読をすすめます。

解析機能チュートリアル
解析機能チュートリアル

 

Officeソフトのように、ヘルプを理解するためにヘルプが必要な場合もありますが、このCubeSuite+のチュートリアルヘルプは、中級者であれば理解必須です。以下に、チュートリアルの注意点と記載重要事項を示します。

注意点:

チュートリアルでは、「リセット&実行ボタン」で結果を出力しています。しかし、同じ結果となるハズの「リセットボタン」+「実行ボタン」を押した場合と、結果が異なることがあります。チュートリアル実行中に記載と異なる結果の場合には、後者(リセットボタン+実行ボタン)を試してください

チュートリアル記載の重要事項:

・静的情報とは、ビルド完了後に表示できる項目。動的情報とは、デバッグ・ツール接続後,プログラム実行後に表示できる項目。

・実行性能の解析目的は,関数単位のCPU使用率を把握し,CPU負荷を軽減する関数を探すこと。

・解析対象の実行時間に対して,トレース取得期間が十分かどうかを判断する事が必要。デバッグ・ツールのプロパティで「トレース・メモリを使い切った後の動作」の設定を「停止する」設定もその一つ。

・解析範囲に対して,解析データ(デバッグ・ツールのトレース・メモリ)が適切か確認することが重要。 

・解析対象に対して,トレース取得期間と実行回数が十分でない場合,解析結果を正しく判断できないことがある。対策として、対象関数が何回実行されたかを関数パネルで把握する事。

・性能解析は、解析対象に応じて,適切な手段を選択する必要がある。解析グラフは,便利なツールだが、使用方法を誤ると適切な判断ができない。

・動的情報が表示できるかは,デバッグ・ツールに依存。RL78/G1xE1の組合せでは、トレースとパフォーマンス測定はできない。対策は、シミュレータを使うこと

・パフォーマンス解析目的は、システム性能を満足するために,特定の処理速度が十分かどうかを判断すること。

いかかですか? 中級者は、これらを理解して、作成プログラムの性能改善に活用しましょう。ちなみに、このヘルプファイルは、下記にあります。

C:\Program Files (x86)\Renesas Electronics\CubeSuite+\Help\Tutorial-Analysis.chm

ターゲット・ボードのE1インタフェース

CPUFPGAボード開発の最初の山場が、プログラミングインタフェースです。これらソフト必須のハードは、プログラミングして初めて動作するので、ここで躓くと先へ進めません。RL78/G1xならE1インタフェースです。ルネサス資料“E1/E20エミュレータユーザーズマニュアル別冊”に、RL78接続時の注意事項が記載されていますが、実際の動作ボードで理解する方が良さそうです。

E1インタフェース理解に最も適した動作ボードは、ルネサスのターゲット・ボード(以下TBと略す)でしょう。TBは、最もシンプルで、最も早い時期に提供されるボードで、最重要ハードの把握が容易などの特徴があります。201212月現在、RL78/G1x関連は、下記8種のボードがリリースされています。

ターゲット・ボード一覧
ターゲット・ボード一覧

本ブログ対象のRL78/G13G14は、2種類のTBがあり、これらのE1インタフェース部分のみを抜き出しました。TOOL0端子経由(図ではP40と記載)で、フィラッシュ・メモリ・プログラミングとオンチップ・デバッグの両方に対応します。これらの図から、T_RESETは、ボード内で不使用でも、E1インタフェースには必須そうだということが判ります。

RL78ーG13、G14のE1インタフェース
RL78ーG13、G14のE1インタフェース

 

RL78/G1xボード開発チェックリスト

RL78/G13ボード開発のチェックリストを作成中です(本リストは、適宜更新予定)。

項番 内容 備考
1 RL78/G1x0.1uFパスコン配線長:Vss/Vdd端子とパスコン間の配線長は、最短で、等長とする。  
2 RL78/G1xの電源配線は、パスコン経由。  
3 REGC0.47uF~1uf配線は、極力短くする。REGCコンデンサは、特性が良いものを使用。但し、パスコン配線が優先。

パスコン配線とREGC配線の優先順位
パスコン配線とREGC配線の優先順位

 

 
4 入力専用で、内臓プルアップ抵抗無しのピン(64ピンの場合、P121/122/123/124/137)は、外部でプルアップ/ダウン抵抗で固定。

入力専用で内臓プルアップ抵抗無しのピン
入力専用で内臓プルアップ抵抗無しのピン

 

 
5 未使用ピンは、出力に設定。入力ピンは、内臓プルアップ抵抗使用。  

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ピンを基準にピン数を減らす場合などに効果的です。