6マイコンを使うには、スタータキットなどのハードウェアを用いてデバッグしなくてはいけないと思っていませんか。studio」を使えば、PC上の環境だけを使って開発を始めることができます。IoTを支えるRL78統合開発環境Eコード生成プラグインシミュレータとの連携シミュレータで開発スタータキットで確認IoTを支えるマイコンこれまで「マイコン入門」として、組み込みプログラミングに触れてきました。幅広い分野でプログラムによる制御のために使われています。これらの機器の中核となる制御から、タッチ式UI、液晶画面といった機能まで、背後で働いているのはマイコンです。最近は、マルチコアプロセッサを1GHz以上のクロックで駆動して、Linuxなどの強力なOSを走らせるSoC(システムLSI)がスマートフォンやスマートテレビに内蔵されています。このような強力なSoCだけですべての処理を行えるわけではありません。プログラムによる柔軟性を求めつつも、OSを用いないことによるリアルタイム性や低消費電力を求める用途が数多くあります。赤外線リモコンの受光部分の信号処理(信号と雑音の分離)や復号(操作信号の再生)などは、高性能SoCが数msecごとに一度処理するよりも、マイコンが常時リモコンからの入力を監視していた方が確実なリアルタイム制御ができるでしょう。注目が集まっているIoTも同じです。IoTの処理の多くは、状況の報告と指令の実行です。複雑な情報処理は、IoT機器の側ではなく、情報を受け取ったクラウドサーバ側で行います。IoTで重要なのは、消費電力が低いことと、即座に反応することです。実際の処理では、アナログ入力や汎用I/Oポートからのデジタル入力から、状況を報告すべきかを判断して、通信モジュールにデータを送ります。このような処理は、マイコンにピッタリです。RL78を使ってみようルネサスのRL78ファミリは、使い勝手の良さで定評あるマイコンです。CPUをコアに、RAMやフラッシュメモリ、ADコンバータやタイマ、汎用I/Oポート、シリアル・インタフェースなどをワンチップに収めています。高精度な高速オンチップオシレータも内蔵しているため、外付けの発振器が不要になり、極めて少ない外付け部品で動作します。基本機能に加えて、モータ制御や無線機器制御といった用途ごとの周辺機能を搭載した製品もあり、幅広い需要に応えています。studio」上で開発します。統合開発環境とは、プログラムの作成、オブジェクトのリンク、デバッグ、シミュレーションなどを、一体的に実施するものです。統合開発環境が作られる前は、コンパイラ、リンカ、デバッガ、シミュレータなどが別個に存在し、開発者がそれぞれの間のやりとりを管理しなければなりませんでした。処理を複数に分割して、それぞれの部分ごとに開発する際のバージョン管理は煩雑でした。プログラムを書いた本人も、どのオブジェクトが最新なのか、変更点はどこか、といったことが分からなくなることもしばしばありました。統合開発環境では、ソースプログラムの管理が格段に容易になります。デバッグも、デバッガにより効率的に行えます。ソースコードにprintf()を挿入して、変数の値の変化を追いかける必要はありません。プログラムの実行を止めて変数の値を確認したい場所をソースコード上で指定したり、関数に渡される値を確認することが対話的に行えます。プログラムの動きが、まさに「手に取るように」分かるでしょう。これはデバッグ機能の弱いArduinoには真似のできない、大きな利点です。コード生成プラグインで楽々開発RL78ファミリの知識がないからプログラムが組めないと尻込みしていませんか。ルネサスは、必要な条件(パラメータ)を与えれば、自動的にC言語プログラムを生成する「コード生成プラグイン」を用意しています。コード生成プラグインは、マイコンの端子に機能を割り当てる初期設定プログラムや、I/OやADコンバータなどの周辺機能を利用する際に必要な設定プログラムなどを作ってくれます。プログラマは、コード生成プラグインが生成したプログラムを呼び出すことでI/Oや周辺機能を設定どおりに動作できます。マイコンのハードウェアマニュアルを理解して利用することはもちろん重要ですが、すべての手順を暗記しておく必要はありません。細かな部分はコード生成プラグインに任せることができるのです。今回は、コード生成プラグインを使って機能の割り当てや方形波出力幅を指定してみます。シミュレータとの連携ソースコードを書き上げて、コンパイルエラーも出なくなっても、プログラムは完成とは言えません。実際に使用するハードウェアが、そのプログラムで正しく動く事を確認しなければなりません。周辺機能のレジスタのセットや、読み出しなど、マイコンの挙動と関係する部分は、ハードウェアを接続して動作を確認したいところです。開発中のハードウェアがいつでも手元あるとは限りません。そこで威力を発揮するのがシミュレータです。目的のマイコンやそのマイコンを搭載したボードの機能を、そのままソフトウェアで仮想的に再現します。マイコンの端子からどのような信号が出ているのか、観測できます。ボードレベルのシミュレータの場合、ボードが扱える入力(スイッチやボリューム)や出力(LED)もソフトウェアで再現します。ソフトウェアでの実行ですから、ターゲットとなるハードウェアと同じ速度にはなりません。何が起きているかを観察し、状況を理解するには十分です。studioでは、シミュレータとのシームレスな連携がなされています。シミュレータで開発スタートそれでは、e2studioからシミュレータを動かして、スタータキット向けのサンプルプログラムを動かしてみましょう。今回は、キットを入手する必要はありません。スタータキットの機能はシミュレータで実現します。必要なのは、PC1台だけです。RL78のハードウェアは一切使わずに、サンプルプログラムを走らせます。今回は、以下の手順でe2studioによる開発を体験してみましょう。e2studioにインポートします方形波出力のコードを生成し、シミュレータに接続して出力を観察しますプログラムを修正し、LED点滅プログラムに変更しますボードレベルのシミュレータに接続して、期待どおりの動作であるか確認します1から6の操作は、ルネサスのWebサイトで公開されている動画で操作手順が説明されています。実際の詳細な操作は併せて動画をご覧頂くとして、ここではe2studio環境下でのシミュレータ利用の様子を説明します。Renesasのログイン名とパスワードを用意しておきましょう。この先の作業で必要となります。Renesasに登録していない人は、登録を先に行いましょう。studioを、以下のURLよりダウンロードしてください。e2studioインストーラ(オフライン用またはオンライン用)」です。ダウンロードしたインストーラを実行すると、e2studioがインストールされます。セットアップ編」(動画1)をご覧下さい。サンプルプログラムのダウンロード次に、サンプルプログラムをダウンロードします。コード生成プラグイン編」(動画2)で詳しく説明されています。今回のサンプルプログラムは、ボード上のLEDを一定の周波数で点滅させるものです。これをシミュレータ上で実現することで、スタータキットを使わずに、プログラムの実行を確認します。コード生成プラグイン編サンプルプログラムは以下のURLからダウンロードできます。ZIP形式で圧縮されていますので、展開しましょう。ハードウェア編)今回は、「an_r20an0399jj0100_rl78_programming」という名前のフォルダに必要な情報が収められていました。studioは、サンプルプログラムを収めたフォルダにアクセスする必要があります。RL78搭載ボードをシミュレーションする際の情報もこのフォルダに入っています。分かりやすい場所に展開して作業しましょう。フォルダ名やパス名に全角文字が使われていない場所を使います。日本語のフォルダ名は使えません。動画2では、今回のサンプルプログラムの動作が最初に説明されます。必要な際には再生を一時停止させてプログラムの動作を理解してから先に進むと、作業の理解にも役立ちます。studioにインポートします。図1のようにインポートするプロジェクトが置かれているフォルダを指定します。サンプルプログラムを使用する際は「RL78G13CG_Sample_e2sフォルダ」を指定して下さい(動画2の01:16、以下「分:秒」形式で記します)から解説されています)。方形波出力コードの生成と、出力の観察まず、コード生成プラグインを使ったプログラム開発を行ってみましょう。コード生成プラグインを使うことで、パラメータを与えるだけで必要なコードが生成されます。当初のプログラムでは、100μsecに設定されていた方形波の幅を100msecに変更し、コードを生成しています(動画2の「01:50」から始まる「方形波出力の設定」にてパルス幅を変更する操作を示しています)。新たなコードが生成されたら、シミュレータをデバッガに接続して、方形波出力を観察してみましょう。studioの操作は、動画2の「03:13」から手順が示されています。シミュレータとデバッガがつながり、サンプルプログラムが走り出すと、タイミングチャートが現れます(図2:動画では「04:45」)。図2:シミュレータに表示されたタイミングチャート(クロックの種類を「msec」、倍率を「1/32」と指定)図2のタイミングチャートは、msec単位で変化する信号を観察するようにセットし、ロジックアナライザのような機能を実現しています。出力がON/OFFされる周期も測定できます。シミュレートを中断(一時停止)して、信号出力を止めます(図3)。その後、タイミングチャートにマウスを当ててマーカーを置くと、タイミングチャート内にマーカー間の時間が表示されます(動画2「04:48」から操作を説明しています)。次に、プログラムの修正を行い、LEDの点滅をスイッチにより停止・再開させられるようにします。ここでは、タイマカウンタを用いて、これが0になると割り込みを発生することでLEDの点灯、消灯を行ないます。次に、スイッチ1を押すとタイマのカウントダウンが停止し、スイッチ2を押すとカウントダウンを再開することとします。図4の「N」字型アイコンを押下してデバッガとシミュレータの接続を切断します。デバッガを切断するとシミュレータ画面が自動的に閉じられます。図4:「N」字型のアイコンでデバッガを切断サンプルプログラムを修正してLED点滅プログラムとする様子は、動画2(「05:42」から)を参照して下さい。プログラミングやデバッグにおいては、ビルド前や作業の節目ごとに定期的に変更を保存するとよいでしょう。「方形波出力コードの生成と、出力の観察」では、RL78/G13の動作は、ロジックアナライザのようなタイミングチャートで観察しただけでした。今度は、LEDの出力に加えて二つのスイッチ入力もあります。ボードのシミュレータを本格的に活用する時です。RL78/G13スタータキットのボードと同じ動作をするボードシミュレータを使ったデバッグの様子は、動画「RL78ボードシミュレータ編」(動画3)で説明されています。「シミュレータGUI」のファイルメニューから「開く」(ファイル→開く)を選択するとダイアログボックスが現れます。ダイアログボックスにはフィルタ機能があり指定した拡張子が付いたファイルのみを表示するようになっています。ファイル(*.pnl)」を指定してください(図5)。ダイアログボックスにて「RL78G13_CG_Sample_e2s/G13_RSK_Board2.pnl」を選択することで、ボードレベルのシミュレータにデバッガ接続します(図6)。シミュレータの利用を示した動画3「RL78ボードシミュレータ編」では、「01:06」において「ワークスペース」との表記があります。これは、「サンプルプログラムとしてダウンロードしたフォルダ」(今回の例では「an_r20an0399jj0100_rl78_programming」)内の「workspace」フォルダのことです。studioのワークスペース(e2_studioディレクトリ直下にあるworkspace)ではないので注意して下さい。図6:G13_RSK_Board_2.pnlを選択シミュレータで動作させるボードが決まると、ボード画面が表示されます(図7)。動画にあるように、スイッチの入力を変化させてみましょう。LEDの点滅がプログラム通りに変化します。図7:シミュレータに対象となるボードが表示シミュレータ上でプログラムを走らせることで、スタータキットに代わって動作を確認しました。今回のプログラムはあくまでも例の一つで、マイコンの動作を知るための色々なプログラムの動きをシミュレータで確認できます。このように、ハードウェア入手前であっても、目的のマイコンの機能を存分に試せる環境が用意されており、迅速な開発を実現します。Kit編」(動画4)で見ることができます。今回作成したコードは、シミュレータでもスタータキットでも全く同じに動作します。これこそ、シミュレータによる開発の利点なのです。ターゲットとなるハードウェアを使わずに行うプログラミングはいかがでしたでしょうか。シミュレータはソフトウェア駆動ですから、実際のハードウェア(スタータキット)とは同じ速度になりません。それでも、どのような動作をしているかを追いかけ、理解するには十分です。studio」を活用して、RL78を使ったソフトウェア開発に挑戦しましょう。