Interface2012年6月号付属FM3マイコン基板企画対応

『FM3マイコン基板エミュレータ＆GUIプログラム』


●収録ファイル内容

・README.TXT　………………　本ファイル

・qemu-system-arm.exe　……　QEMUベースFM3エミュレータ本体
　libglib-2.0-0.dll
　libgthread-2.0-0.dll
　intl.dll

・FM3_CPU.jar　…………　FM3マイコン基板単体版GUI部
　FM3_CPU_OFF.gif
　FM3_CPU_ON.gif

・FM3_CQBB-EL.jar　……　拡張ベースボードCQBB-EL版GUI部
　FM3_CQBB-EL_OFF.gif
　FM3_CQBB-EL_ON.gif

・UARTsample.bat　……………　UARTシリアル通信エコーバック エミュレータ起動BATファイル
　UARTsample.out
　<UARTsample>　ソースフォルダ(IAR EWでビルド)

・LEDsample.bat　……………　CPU基板オンボードLED点滅制御 エミュレータ起動BATファイル
　LEDsample.out
　<LEDsample>　ソースフォルダ(IAR EWでビルド)

・CQBB-ELsample.bat　………　拡張ベースボードCQBB-EL対応サンプル エミュレータ起動BATファイル
　CQBB-ELsample.out
　<CQBB-ELsample>　ソースフォルダ(IAR EWでビルド)

・CQBB-ELuart.bat　…………　拡張ベースボードCQBB-EL対応サンプル(UART通信有り)
　CQBB-ELuart.elf
　<CQBB-ELuart>　ソースフォルダ（gccでビルド）


●FM3マイコン基板エミュレータの基本構成
　エミュレータ本体にはQEMUを、GUI部はJavaで作成したプログラムとなっており、エミュレータ本体とGUI部とで別々のプログラムが、内部で通信を行うことで連携して動作しています。そのため、ゲスト・プログラム（FM3マイコン用プログラム）としてLED点灯制御などのGPIOを操作するプログラムを走らせる場合は、QEMU本体とGUI部の両方を起動する必要があります。
　またUARTを使ったシリアル通信を行うゲスト・プログラムを実行する場合は、telnetによるターミナルと通信可能です。UARTによる通信を行うだけでGPIO操作を伴わない場合は、QEMU本体と任意のターミナル・ソフトだけで、GUI部は起動する必要はありません。

　詳細については、Interface2012年7月号を参照してください。


●GUI部を動かすにはJavaのランタイムが必要
　GUI部はJavaにより書かれているので、jarファイルを実行するにはJavaのランタイムがインストールされている必要があります。
　次のURLなどからランタイムをダウンロードしてインストールしてください。
　　　http://java.com/ja/download/


●操作方法

▲UARTsample　……………　UARTシリアル通信エコーバック
　UARTsample.batを起動してください。QEMU本体が起動して、telnetターミナルの接続待ちになります。このとき「セキュリティの警告」のダイアログが表示されますが、「OK」を選択してください。
　telnetはポート番号1204で接続してください。Windows xpなどにはtelnetコマンドが標準で入っているので、コマンド・プロンプトを開き、
  C:\>telnet localhost 1204[Enter]
としてtelnetターミナルを起動できます。接続が確立すると、ゲスト・プログラム UARTsample.out の実行が開始され、ターミナルの画面に、

Echo back sample. Please hit any key.

と表示され、以降は入力した文字をエコーバックしてきます。

　内部的にはFM3マイコンのマルチファンクション・シリアルコントローラのチャネル4を使っています。
　なお、本プログラムについては、Interface2012年7月号第3章を参照してください。


▲LEDsample　……………　CPU基板オンボードLED点滅制御
　LEDsample.bat起動すると、QEMU本体とCPU単体GUI部が起動します。GUI部が起動すると、QEMUとの内部通信開始ボタンが表示されるので「OK」をクリックしてください。するとゲスト・プログラム LEDsample.out の実行が開始され、CPU基板オンボードのLEDが点滅します。
　なお、本プログラムについては、Interface2012年6月号第5章を参照してください。


▲CQBB-ELsample　………　拡張ベースボードCQBB-EL対応サンプル
　CQBB-ELsample.batを起動すると、QEMU本体と拡張ボードCQBB-LE版GUI部が起動します。GUI部が起動すると、QEMUとの内部通信開始ボタンが表示されるので「OK」をクリックしてください。するとゲスト・プログラム CQBB-ELsample.out の実行が開始されます。

　動作としては、拡張ボードCQBB-EL上の四つのタクトスイッチを操作すると、7セグメントLEDにカウント結果を表示するというものです。
　一番右のタクトスイッチ(SW2)をマウスでクリックするとカウント値が+1されます。
　右から2番目のタクトスイッチ(SW3)をクリックすると、ディップスイッチの状態がカウント値にロードされます。
　右から3番目のタクトスイッチ(SW4)をクリックすると、カウント値が FFh になります。
　一番左のタクトスイッチ(SW5)をクリックするとカウント値が-1されます。
　ディップスイッチは一番左側がLSBで、右側がMSBです。各ビット位置の白丸部分をクリックすると、ON/OFF状態がトグル動作します。


▲CQBB-ELuart　…………　拡張ベースボードCQBB-EL対応サンプル(UART通信有り)
　CQBB-ELuart.batを起動すると、QEMU本体と拡張ボードCQBB-LE版GUI部が起動します。GUI部が起動すると、QEMUとの内部通信開始ボタンが表示されるので「OK」をクリックしてください。さらにポート1204番のtelnet接続を待ちます。UARTsampleの例と同様にtelnetを接続してください。するとゲスト・プログラム CQBB-ELuart.elf の実行が開始されます。

　拡張ベースボードCQBB-ELのタクトスイッチとディップスイッチの操作方法や7セグメントLEDの表示内容はCQBB-ELsampleと同様です。こちらは同時に、UARTのシリアル通信で7セグメントLEDに表示したカウント値をターミナルに表示します。

　よってゲスト・プログラム CQBB-ELuart.elf の実行が開始されると、ターミナルには次のように起動メッセージが表示されます。

FM3 + CQBB-EL sample program

この状態でCQBB-ELのタクトスイッチを操作すると、

FM3 + CQBB-EL sample program
count = 01h
count = 02h
count = 03h
count = 02h
count = 01h
count = 00h
count = FFh

というように、カウント内容もターミナルに表示されます。


●シリアル通信で使用するUARTのチャネルを変更する場合
　本誌記事で解説があるように、本FM3マイコン基板エミュレータが対応しているUARTチャネルは0、3、4の三つです。それぞれ次のポート番号に割り当てています。
　・UARTチャネル0　…　ポート1202
　・UARTチャネル3　…　ポート1203
　・UARTチャネル4　…　ポート1204
　また、例えばUARTチャネル3のtelnet接続確立までゲスト・プログラムの実行を止めたい場合は、UARTsample.batを参照して、最後の部分を次のように変更してください。

　（中略）
	-serial telnet:0.0.0.0:%QEMUFM3_PORT_UART0%,server,nowait ^
	-serial telnet:0.0.0.0:%QEMUFM3_PORT_UART3%,server ^　　← "nowait"を削除
	-serial telnet:0.0.0.0:%QEMUFM3_PORT_UART4%,server,nowait

　これで、ポート1203のtelnet接続が確立してからゲスト・プログラムが走り出すので、プログラム実行開始直後の起動メッセージなどが正しくターミナルに表示されます。



●ゲスト・プログラムについて

▲IAR EWで作成したプログラム
　「IAR EWでビルド」と明記しているプログラムは、富士通提供のテンプレート・プロジェクトをベースにプログラムを作成し、IAR社のIAR EWを使ってビルドしました。よって実行形式ファイルは、?????\example\IAR\output\debug\exe の中に生成される拡張子.outのファイルとなります。テンプレート・プロジェクトの設定で、ファイル名はすべて mb9bf61xt_template.out となっているので、それぞれ UARTsample.out や LEDsample.out というファイル名にリネームしています。

▲gccで作成したプログラム
　CQBB-ELuartのみgccでビルドしています。こちらの拡張子は.elfです。

