RL78

e2studioの導入~KPIT GNU Tools

複数回にわけてRenesasさんのEclipse統合開発環境であるe2studioの導入とRENESAS WEBコンパイラからダウンロードしたプロジェクトのインポートまでを説明したいと思います。

なぜこんなことをするかと言うと、WEBコンパイラが重いからです。

プログラム容量に関わらず、一度重くなるとレスポンスがとことん悪く、クリック一つの反応すら却ってこないこともしばしば。だったらローカルで開発できるようにしようというと思いました。他の方も実践されているとは思いますが、導入方法について少しでも参考になればと思い、本記事を起こしました。

では早速、インストールから説明します。

e2studioはEclipse統合開発環境であるものの、HewやCubeSuite+で言うところのToolChainを持っていません。EclipseのCDTとRenesas開発環境のToolChainを組合わせる必要があります。組み合わせは2通りあります。

  1. e2studio + KPIT GNU Tools
  2. e2studio + Renesas ToolChain

RenesasのC/C++コンパイラToolChainをお持ちの方はそちらをご利用いただくとして、今回はフリーで利用できて且つリンク制約も特にないKPIT GNU Toolsとの組み合わせについて説明します。

手順はe2studioのインストール、KPITのインストール、e2studioの起動の順番で行うとe2studioでのToolChain連携が楽になるのでオススメです。

e2studioのインストール

まずはe2studioをダウンロードします。Renesasさんのホームページからダウンロードできますので、分割、一括、お好みでダウンロードしてください。
ダウンロードが完了したら実行ファイルを走らせます(一括ファイルの場合Renesas_e2_studio_2.2.0.13.exe/2.2.0.13はバージョンを意味しています)。

スプラッシュ画面から動作環境確認画面となります。VC++が必要となりますが、インストールしていない方はe2studioのインストーラが対応してくれますので、VC++をインストールしてください。
e2_001e2_002
VC++のインストール(サムネイル)
e2_003e2_005

続いてe2studioのインストールですが、特記すべきところは有りません。使用許諾の確認、インストールフォルダを指定し、Installをクリックだけでインストールが始まります。
e2_006e2_007e2_008

プログレスバー表示中にプロンプトが立ち上がりますが、ここでの作業はありません。途中、Windowsロゴ認証テストについて聞かれますが、そのまま「続行」をクリックします。
e2_009e2_011e2_010e2_012

以上でe2studioのインストールは完了です。続いてe2studioの起動…といきたいところですがToolChainを先に入れておいた方が後々楽ができるため、KPIT GNUツールのインストールを先に行います。

KPIT GNUツールのインストール

続いてKPIT GNU Toolsをインストールします。こちらはKPIT GNU Toolsのホームページからダウンロードできますが、ダウンロードの前にユーザー登録する必要があります。
英語表記になっている方は一度日本語表記に直しましょう。初期ユーザー登録を行うには画面右手の「登録」から登録画面に進みます。既に登録されている方は「GO」からログインしてください。
登録画面での注意事項ですが、全ての情報を半角英数で入力することです。全角文字を入力すると情報が正しくないとして、何度も修正をEメールで求められます。修正情報は現地スタッフからチェックしているらしく、修正確認と再修正通知は現地就業時間?にきますので時間のロスが多くなります。初めから半角英数で入力しましょう。

無事登録が完了し、ログインできるようになったら「無償ダウンロード」タブから「最新KPIT GNUツール」を選択し、ウインドウズツールチェインからGNURL78とGNURXをダウンロードします。GR-SAKURAならGNURXのみで十分ですが、GR-KURUMIやその他プロジェクトにも流用できますので、GNURL78もインストールしておいて損はないと思います。

今回はGNURXのみ紹介します。

kp_008
ダウンロードしたGNURXv1401-ELF.exe(v1401はバージョンを意味しています)を実行すると上記画像のような注記が出ますが、OKをクリックして継続します。記事作成時点ではPCにHEWを入れていなかったため、このような注記が表示されました。

インストールそのものは他のソフトと同様です。事例ではカスタムインストールでインストール場所を指定しています。
kp_001kp_002

続いてTOOLCHAINのActivation Codeを入力します。これはKPIT GNU Toolsのアカウント情報に(日本語表記の場合)活性化コードとして表示されていますので、こちらを入力してください(画像中はコードを削除しています)。
kp_003kp_004
一度Activation Code(活性化コード)を入力し受諾されると次のインストールから尋ねられることはありません。複数のToolChainのインストールはそんなに負担ではないと思います。

残りはサポートやライセンスに関する同意です。そのまま進めましょう。
kp_005kp_006kp_007
setup typeの項目はHEWに関連付けるかどうかの確認です。チェックを付けるとHEW関連フォルダ下にインストールされますし、チェックを外すと任意のフォルダ下にインストールが可能です。いずれにせよ、e2studioには自動で関連付けされますので、ご安心ください。

KPIT GNU Toolsのインストールが終わればあと一息です。

e2studioの起動(ToolChain登録)

ここまでこればあとはToolChainのe2studioへの登録だけです。

小難しいことはなく、まずは普通にe2studioを起動させます。するとToolChain登録画面が立ち上がります。登録したいツールチェインの選択と、デフォルトワークスペースの位置を指定すればToolChainの登録は完了します。
e2_021e2_020e2_022

RXRL78もインストールしている方はツールチェインの登録にRL78の項目も表示されていますので、一緒に登録してください。

手戻りを少なくするために今回の手順としましたが、必ずしもこの手順である必要はありません。
次回はWEBコンパイラのプロジェクトをe2studioに登録する手順を紹介します。

RL78マイコン タイマアレイ ワンショット動作

かふぇルネにも投稿しましたが、RL78のタイマアレイユニット(TAU)、ワンショット動作について私の誤解がありました。

一般的にタイマはタイマスタート(TS)をセットすると動作開始するのですが、RL78のタイマアレイユニットでは動作モードによってスタートフラグセット時の動きが異なります。RL78はタイマイネーブル(TE)との絡みがあるためです。

今回取り上げたワンショット動作(U0 CH2:master/CH3:slave SoftTriger)についてはCubeSuite+のコード生成は

以上のように出力します。これはマニュアルの

によるものです。
R_TAU0_Channel2_Start()内で直接タイマイネーブル(TE)を制御したいところですが、このレジスタはReadOnlyのため、そうもいかないようです。

実際にワンショット動作として稼働させるには

  1. R_TAU0_Channel2_Start()
  2. タイマイネーブル(TE)のセット

  3. R_TAU0_Channel2_Set_SoftwareTriggerOn()
  4. ワンショットタイマのスタート

の順番で呼び出す必要があります。
中身を見ると同じタイマスタート(TS)レジスタを操作しているわけですが、前述の通り、1回目のタイマスタート(TS)のセットはタイマイネーブル(TE)をセットしタイマを動作可能状態にするだけで実際にはタイマは動いていません。2回目以降のタイマスタート(TS)のセットでワンショット動作が始まります。尚、ワンショット動作はCH2をmasterに、CH3をslaveに設定しているため2回目以降にセットするのはCH2だけです。
rl78_tau_os

仮に2回目以降もR_TAU0_Channel2_Start()をcallしてCH2/CH3のタイマスタート(TS)をセットすると下記動作になってしまいます。
rl78_tau_os2

本来ならActtiveがCH2、in-ActiveがCH3であるのに対し、CH2/CH3が同時にスタートしているので必要な時間がとれなくなっています。

皆様もタイマアレイユニット(TAU)を利用する際はご注意ください。

コンペアマッチタイミング

コンペアマッチの発生タイミングについてかふぇルネに投稿しました。

タイマの機能の一つであるコンペアマッチですが、ユーザーが想定する周期と実際の設定値には差があるので注意が必要です。

cmpmacth

図はR8Cマイコンを例に取り上げています。TRCCNTはタイマのカウント、TRCGRAはコンペアマッチ指定値です。

コンペアマッチ指定値に「n」と書けば「n×クロック時間」と思いますが、実際は「(n+1)×クロック時間」となってしまいます。
これはコンペアマッチの判定タイミングが「タイマカウント更新時」となっているからです。

人間の頭ではタイマカウンタが更新された結果、指定値と一致してるかどうかを判断するように考えますが、R8Cでは更新された結果ではなく更新する前に判断します。つまり、コンペアマッチにnを指定していた場合、タイマカウントは既にnになっているにも関わらず、次のタイマカウント更新時(->n+1になるタイミング)にコンペアマッチと判定されます。

ある周期が計算上「5000×クロック」となる場合、コンペアマッチ指定値には「5000-1」を入力するのはこのためです。

この考え方はルネサスマイコンの内、SH2a(MTU2)、RX200(MTU2)、RX600(MTU2)、RL78(タイマRG)、R8C(タイマRG)に適用されます。
設計の際には頭の片隅に置いておいてください。