コード生成の設定順序

CubeSuite+のコード生成では、クロック発生回路の“端子割り当て設定タブ”で、はじめに必ず設定してください。この設定は1度行うと変更できませんと、赤コメントが表示されます。今回は、この理由とコード生成の周辺機能の設定順序について示します。

周辺機能ピンの確定必要性
周辺機能ピンの確定必要性

RL78マイコンは、1つのピンに複数の周辺機能のI/Oピンを割付け可能です。これらI/Oピンには、再配置が可能なものもあります。例えば、64ピンパッケージのRL78/G13の割込みINTP10ピンは、P52P76のどちらかにでも割付け可能です。コード生成ツール(以下Cgと略す)は、GUIで周辺機能を簡単に設定できますが、対象となる周辺機能がどのピンを使うかが決まっていないと、ピンの競合判断ができません。そこで、最初に、周辺機能ピンの確定が必要になります。これを行うのが、“端子割り当て設定タブ”で、はじめに必ず…が表示される理由です。

Cgのクロック発生回路の次には、上から順にポート、割り込み、シリアル…と続きます。これは、使用頻度の高い機能順だろうと思います。しかし設定する時は、ポートを最後にすることをお勧めします。理由は、Cgが競合判断を行うからです。

ポートでは、各ポートの入出力や内臓プルアップの設定などができます。但し、デフォルトでは、全て“使用しない”となっています。この“使用しない”とは、“単純なI/Oポートとしては使用しないという意味”です。例えば、端子割り当てタブでPIOR0ビット=1にして、INTP10P76に確定したとしましょう。ポートの“ポート7”タブでのP76は、他のポートと同じ表示です。しかし、割り込みを先に設定した場合には、P76赤!マークが付きます。このマークにカーソルを合わせると、「P76INTP10で使われています。」というメッセージが表示されます。Cgが競合ありと判断したのです。

コード生成ツールの競合判断
コード生成ツールの競合判断

このように、ポート設定を周辺機能の後に行うと、既に使用済みのI/Oピンには、赤!マークが付きますので、デフォルトのままにできます。このマーク付きのピンを、どうしてもI/Oポートとして使いたい場合には、周辺機能を無効にするか、または最初のピン確定を変える必要があります。ピン確定は1度しかできませんので、新たなプロジェクト作成となります。

コード生成(設計ツール)の設定順序をまとめます。

(1) クロック発生回路>端子割り当て設定タブで、再配置可能な周辺機能の使用ピンを確定。

(2) ポート以外の使用周辺機能を設定。未使用周辺は、デフォルト無効なので、そのままでOK

(3) ポート>ポートnタブで、競合なしピンを設定。競合ピンをI/Oピンとして使う場合は、使用周辺機能を無効にするか、新プロジェクト作成が必要。

他の周辺機能に比べ、ポートは、ピン配置の自由度が高いので、最後に設定するのが良いでしょう。Cgでは、クロック発生回路のすぐ下にありますので、先に設定しがちですが、これを先にすると、周辺機能に赤!マークが付いて設定できなくなります。

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の実装の理由は、未だはっきりしません。この疑問が解けましたら、本ブログに記載する予定です。