スタータキットなしで始められる! シミュレータ活用開発術

マイコン入門:6 of 6

マイコンを使うには、スタータキットなどのハードウェアを用いてデバッグしなくてはいけないと思っていませんか。
大丈夫。ルネサスの統合開発環境「e2 studio」を使えば、PC上の環境だけを使って開発を始めることができます。

IoTを支えるマイコン

これまで「マイコン入門」として、組み込みプログラミングに触れてきました。プログラミングの対象であるマイコンは、家電製品、自動車、産業機器など幅広い分野でプログラムによる制御のために使われています。これらの機器の中核となる制御から、タッチ式UI、液晶画面といった機能まで、背後で働いているのはマイコンです。

最近は、マルチコアプロセッサを1GHz以上のクロックで駆動して、Linuxなどの強力なOSを走らせるSoC(システムLSI)がスマートフォンやスマートテレビに内蔵されています。しかし、このような強力なSoCだけですべての処理を行えるわけではありません。プログラムによる柔軟性を求めつつも、OSを用いないことによるリアルタイム性や低消費電力を求める用途が数多くあります。

例えば、赤外線リモコンの受光部分の信号処理(信号と雑音の分離)や復号(操作信号の再生)などは、高性能SoCが数msecごとに一度処理するよりも、マイコンが常時リモコンからの入力を監視していた方が確実なリアルタイム制御ができるでしょう。

iot

注目が集まっているIoTも同じです。IoTの処理の多くは、状況の報告と指令の実行です。複雑な情報処理は、IoT機器の側ではなく、情報を受け取ったクラウドサーバ側で行います。IoTで重要なのは、消費電力が低いことと、即座に反応することです。実際の処理では、アナログ入力や汎用I/Oポートからのデジタル入力から、状況を報告すべきかを判断して、通信モジュールにデータを送ります。このような処理は、マイコンにピッタリです。

RL78を使ってみよう

ルネサスのRL78ファミリは、使い勝手の良さで定評あるマイコンです。16bit CPUをコアに、RAMやフラッシュメモリ、ADコンバータやタイマ、汎用I/Oポート、シリアル・インタフェースなどをワンチップに収めています。更には高精度な高速オンチップオシレータも内蔵しているため、外付けの発振器が不要になり、極めて少ない外付け部品で動作します。基本機能に加えて、モータ制御や無線機器制御といった用途ごとの周辺機能を搭載した製品もあり、幅広い需要に応えています。

統合開発環境は優れモノ

今回は、汎用性に優れたRL78/G13のプログラムを、統合開発環境「e2 studio」上で開発します。統合開発環境とは、プログラムの作成、オブジェクトのリンク、デバッグ、シミュレーションなどを、一体的に実施するものです。統合開発環境が作られる前は、コンパイラ、リンカ、デバッガ、シミュレータなどが別個に存在し、開発者がそれぞれの間のやりとりを管理しなければなりませんでした。特に、処理を複数に分割して、それぞれの部分ごとに開発する際のバージョン管理は煩雑でした。プログラムを書いた本人も、どのオブジェクトが最新なのか、変更点はどこか、といったことが分からなくなることもしばしばありました。統合開発環境では、ソースプログラムの管理が格段に容易になります。

デバッグも、デバッガにより効率的に行えます。ソースコードにprintf()を挿入して、変数の値の変化を追いかける必要はありません。プログラムの実行を止めて変数の値を確認したい場所をソースコード上で指定したり、関数に渡される値を確認することが対話的に行えます。プログラムの動きが、まさに「手に取るように」分かるでしょう。 これはデバッグ機能の弱いArduinoには真似のできない、大きな利点です。

コード生成プラグインで楽々開発

RL78ファミリの知識がないからプログラムが組めないと尻込みしていませんか。大丈夫です。ルネサスは、必要な条件(パラメータ)を与えれば、自動的にC言語プログラムを生成する「コード生成プラグイン」を用意しています。コード生成プラグインは、マイコンの端子に機能を割り当てる初期設定プログラムや、I/OやADコンバータなどの周辺機能を利用する際に必要な設定プログラムなどを作ってくれます。プログラマは、コード生成プラグインが生成したプログラムを呼び出すことでI/Oや周辺機能を設定どおりに動作できます。マイコンのハードウェアマニュアルを理解して利用することはもちろん重要ですが、すべての手順を暗記しておく必要はありません。細かな部分はコード生成プラグインに任せることができるのです。今回は、コード生成プラグインを使って機能の割り当てや方形波出力幅を指定してみます。

シミュレータとの連携

ソースコードを書き上げて、コンパイルエラーも出なくなっても、プログラムは完成とは言えません。実際に使用するハードウェアが、そのプログラムで正しく動く事を確認しなければなりません。特に、周辺機能のレジスタのセットや、読み出しなど、マイコンの挙動と関係する部分は、ハードウェアを接続して動作を確認したいところです。しかし、開発中のハードウェアがいつでも手元あるとは限りません。

そこで威力を発揮するのがシミュレータです。目的のマイコンやそのマイコンを搭載したボードの機能を、そのままソフトウェアで仮想的に再現します。マイコンの端子からどのような信号が出ているのか、観測できます。ボードレベルのシミュレータの場合、ボードが扱える入力(スイッチやボリューム)や出力(LED)もソフトウェアで再現します。もちろん、ソフトウェアでの実行ですから、ターゲットとなるハードウェアと同じ速度にはなりません。しかし、何が起きているかを観察し、状況を理解するには十分です。e2 studioでは、シミュレータとのシームレスな連携がなされています。

シミュレータで開発スタート

それでは、e2studioからシミュレータを動かして、スタータキット向けのサンプルプログラムを動かしてみましょう。今回は、キットを入手する必要はありません。スタータキットの機能はシミュレータで実現します。必要なのは、PC1台だけです。RL78のハードウェアは一切使わずに、サンプルプログラムを走らせます。

今回は、以下の手順でe2studioによる開発を体験してみましょう。

  1. e2studioをPCにダウンロードして、インストールします
  2. サンプルプログラムをダウンロードします
  3. サンプルプログラムを e2studioにインポートします
  4. 方形波出力のコードを生成し、シミュレータに接続して出力を観察します
  5. プログラムを修正し、LED点滅プログラムに変更します
  6. ボードレベルのシミュレータに接続して、期待どおりの動作であるか確認します

 

1から6の操作は、ルネサスのWebサイトで公開されている動画で操作手順が説明されています。実際の詳細な操作は併せて動画をご覧頂くとして、ここではe2studio環境下でのシミュレータ利用の様子を説明します。

(1) e2 studioのインストール

まず、My Renesasのログイン名とパスワードを用意しておきましょう。この先の作業で必要となります。まだMy Renesasに登録していない人は、登録を先に行いましょう。最新版のe² studioを、以下のURLよりダウンロードしてください。

ダウンロードURL: https://www.renesas.com/search/keyword-search.html#genre=tooldownload&softwarecategory=1&toollayer=300585

 

ダウンロードするのは、「統合開発環境 e2studioインストーラ(オフライン用またはオンライン用)」です。ダウンロードしたインストーラを実行すると、e2studioがインストールされます。インストール途中で指定を求められるデバイス・ファミリー、追加コンポーネント、RL78向けコンパイラ等の選択については、「RL78 e2studio セットアップ編」(動画1)をご覧下さい。

動画1:RL78 e² studio セットアップ編

(2) サンプルプログラムのダウンロード

次に、サンプルプログラムをダウンロードします。ダウンロードから、e2 studioへのセット、デバッグ、シミュレータの利用、といった一連の作業は、動画「RL78 コード生成プラグイン編」(動画2)で詳しく説明されています。今回のサンプルプログラムは、ボード上のLEDを一定の周波数で点滅させるものです。これをシミュレータ上で実現することで、スタータキットを使わずに、プログラムの実行を確認します。

動画2:RL78 コード生成プラグイン編

サンプルプログラムは以下のURLからダウンロードできます。ZIP形式で圧縮されていますので、展開しましょう。

ダウンロードURL:https://www.renesas.com/search/keyword-search.html#q=r20an0399&genre=sampleprogram

(関連リンク:コード生成ツール RL78 APIリファレンスRL78/G13 ユーザーズマニュアル ハードウェア編)

 

今回は、「an_r20an0399jj0100_rl78_programming」という名前のフォルダに必要な情報が収められていました。 e² studioは、サンプルプログラムを収めたフォルダにアクセスする必要があります。RL78搭載ボードをシミュレーションする際の情報もこのフォルダに入っています。分かりやすい場所に展開して作業しましょう。ただし、フォルダ名やパス名に全角文字が使われていない場所を使います。日本語のフォルダ名は使えません。

動画2では、今回のサンプルプログラムの動作が最初に説明されます。必要な際には再生を一時停止させてプログラムの動作を理解してから先に進むと、作業の理解にも役立ちます。

 

(3) サンプルプログラムのインポート

ダウンロードが完了したら、今回実施するプロジェクトをe2 studioにインポートします。図1のようにインポートするプロジェクトが置かれているフォルダを指定します。サンプルプログラムを使用する際は「RL78G13CG_Sample_e2sフォルダ」を指定して下さい(動画2の01:16、以下「分:秒」形式で記します)から解説されています)。

図1:インポートするプロジェクトを指定(「RL78G13CG_Sample_e2s」内を参照)

図1:インポートするプロジェクトを指定(「RL78G13CG_Sample_e2s」内を参照)

(4) 方形波出力コードの生成と、出力の観察

まず、コード生成プラグインを使ったプログラム開発を行ってみましょう。コード生成プラグインを使うことで、パラメータを与えるだけで必要なコードが生成されます。当初のプログラムでは、100μsecに設定されていた方形波の幅を100msecに変更し、コードを生成しています(動画2の「01:50」から始まる「方形波出力の設定」にてパルス幅を変更する操作を示しています)。

新たなコードが生成されたら、シミュレータをデバッガに接続して、方形波出力を観察してみましょう。e² studioの操作は、動画2の「03:13」から手順が示されています。シミュレータとデバッガがつながり、サンプルプログラムが走り出すと、タイミングチャートが現れます(図2:動画では「04:45」)。

図2:シミュレータに表示されたタイミングチャート

図2:シミュレータに表示されたタイミングチャート(クロックの種類を「msec」、倍率を「1/32」と指定)

図2のタイミングチャートは、msec単位で変化する信号を観察するようにセットし、ロジックアナライザのような機能を実現しています。出力がON/OFFされる周期も測定できます。まず、シミュレートを中断(一時停止)して、信号出力を止めます(図3)。その後、タイミングチャートにマウスを当ててマーカーを置くと、タイミングチャート内にマーカー間の時間が表示されます(動画2「04:48」から操作を説明しています)。

図3:一時停止でプログラムを中断

図3:一時停止でプログラムを中断

(5) プログラムの修正と設定の変更

次に、プログラムの修正を行い、LEDの点滅をスイッチにより停止・再開させられるようにします。ここでは、タイマカウンタを用いて、これが0になると割り込みを発生することでLEDの点灯、消灯を行ないます。次に、スイッチ1を押すとタイマのカウントダウンが停止し、スイッチ2を押すとカウントダウンを再開することとします。

まず、図4の「N」字型アイコンを押下してデバッガとシミュレータの接続を切断します。デバッガを切断するとシミュレータ画面が自動的に閉じられます。

図4:「N」字型のアイコンでデバッガを切断

図4:「N」字型のアイコンでデバッガを切断

サンプルプログラムを修正してLED点滅プログラムとする様子は、動画2(「05:42」から)を参照して下さい。プログラミングやデバッグにおいては、ビルド前や作業の節目ごとに定期的に変更を保存するとよいでしょう。

(6) デバッガ・シミュレータへの接続と、入出力の観察

(4) の「方形波出力コードの生成と、出力の観察」では、RL78/G13の動作は、ロジックアナライザのようなタイミングチャートで観察しただけでした。今度は、LEDの出力に加えて二つのスイッチ入力もあります。いよいよボードのシミュレータを本格的に活用する時です。RL78/G13スタータキットのボードと同じ動作をするボードシミュレータを使ったデバッグの様子は、動画「RL78ボードシミュレータ編」(動画3)で説明されています。

Video 3: RL78 Board Simulator

動画3:RL78ボードシミュレータ編

「シミュレータGUI」のファイルメニューから「開く」(ファイル→開く)を選択するとダイアログボックスが現れます。ダイアログボックスにはフィルタ機能があり指定した拡張子が付いたファイルのみを表示するようになっています。プルダウンメニューから「入出力パネル ファイル(*.pnl)」を指定してください(図5)。ダイアログボックスにて「RL78G13_CG_Sample_e2s/G13_RSK_Board2.pnl」を選択することで、ボードレベルのシミュレータにデバッガ接続します(図6)。

シミュレータの利用を示した動画3「RL78ボードシミュレータ編」では、「01:06」において「ワークスペース」との表記があります。これは、「サンプルプログラムとしてダウンロードしたフォルダ」(今回の例では「an_r20an0399jj0100_rl78_programming」)内の「workspace」フォルダのことです。e2 studioインストール時または起動時に指定した e2 studioのワークスペース(e2_studioディレクトリ直下にあるworkspace)ではないので注意して下さい。

図5:入出力パネルのみを表示させるフィルタ機能

図5:入出力パネルのみを表示させるフィルタ機能

図6:G13_RSK_Board_2.pnlを選択する

図6:G13_RSK_Board_2.pnlを選択

シミュレータで動作させるボードが決まると、ボード画面が表示されます(図7)。動画にあるように、スイッチの入力を変化させてみましょう。LEDの点滅がプログラム通りに変化します。

図7:シミュレータに対象となるボードが表示

図7:シミュレータに対象となるボードが表示

シミュレータ上でプログラムを走らせることで、スタータキットに代わって動作を確認しました。今回のプログラムはあくまでも例の一つで、マイコンの動作を知るための色々なプログラムの動きをシミュレータで確認できます。このように、ハードウェア入手前であっても、目的のマイコンの機能を存分に試せる環境が用意されており、迅速な開発を実現します。

スタータキットで確認

スタータキットの動作は、動画「RL78/G13 Renesas Starter Kit編」(動画4)で見ることができます。今回作成したコードは、シミュレータでもスタータキットでも全く同じに動作します。これこそ、シミュレータによる開発の利点なのです。

ターゲットとなるハードウェアを使わずに行うプログラミングはいかがでしたでしょうか。シミュレータはソフトウェア駆動ですから、実際のハードウェア(スタータキット)とは同じ速度になりません。それでも、どのような動作をしているかを追いかけ、理解するには十分です。統合開発環境「e2 studio」を活用して、RL78を使ったソフトウェア開発に挑戦しましょう。

Video 4: RL78/G13 Renesas Starter Kit

動画4:RL78/G13 Renesas Starter Kit編