2.19 デバッグ・コンソールの使用

この節では,標準入出力を実行するためのデバッグ・コンソールの使用方法について説明します。

プログラム内の標準ライブラリ関数,例えば,scanf関数によるキーボード入力データの読み込み,printf関数によるデータの出力は,次のデバッグ・コンソール パネルで行います。

図 2.182

デバッグ・コンソール パネル

 

なお,デバッグ・コンソールの各機能についての詳細は,デバッグ・コンソール パネルを参照してください。

 

デバッグ・コンソール パネルによる標準入出力をC/C++プログラムで使用する場合は,プログラム内に低水準インタフェース・ルーチンが必要です。

 

CS+では,次のデバッグ・コンソール機能用のファイルを持つ,E1/E20用のサンプル・プロジェクト「RX610_Tutorial_DebugConsole」を提供しています。

 

-

低水準インタフェース・ルーチン(C 言語部分)用のファイル(lowsrc.c,lowsrc.h)

-

低水準インタフェース・ルーチン:open,close,read,write,およびlseek

標準入出力により呼び出されます。

 

-

入出力ライブラリの初期設定:_INIT_IOLIB

-

オープンした全関数のクローズ:_CLOSEALL

それぞれ,初期設定ルーチン・ファイルresetprg.c内の初期設定ルーチン“PowerON_Reset_PC”により呼び出されます。

 

-

低水準インタフェース・ルーチン(アセンブリ言語部分)用のファイル(lowlvl.src)

-

1文字の出力を行う関数:_charput

-

1文字の入力を行う関数:_charget

それぞれ,低水準インタフェース・ルーチン“write”,“read”により呼び出されます。

 

-

main関数を含むソース・ファイル(DebugConsole_Sample.c)

-

main関数内で標準ライブラリ関数scanf,およびprintfを呼び出します。

 

注意

【E1】【E20】【EZ Emulator】
デバッグ・コンソールを使用する場合,プログラム中のcharput,charget関数内でシステムクロックを切り替えないでください。システム・クロックを切り替えるとエミュレータとマイクロコントローラの送受信に影響を与え,データが正常に送受信できない恐れがあります。
デバッグ・コンソール機能を使用する場合は,データの送受信のために,ユーザ・プログラムのリアルタイム性が損なわれます。

備考 1.

低水準インタフェース・ルーチンについては,「CC-RX コンパイラ ユーザーズマニュアル」を参照してください。

備考 2.

【シミュレータ】
標準入出力を実行する方式として,エミュレータと同様の方式とシミュレータ固有の方式をそれぞれサポートしています。シミュレータ固有方式では,標準入出力の他にファイル入出力を使用できます。
各サポート方式は,プロパティ パネル上の[デバッグ・ツール設定]タブ[ストリーム入出力]【シミュレータ】カテゴリ内の[ストリーム入出力モードを選択]プロパティを指定することで切り替わります。
シミュレータ方式の入出力機能については,「B. 入出力機能」を参照してください。


デバッグ・コンソール機能のサンプル・プロジェクトを使用するには,次の手順で操作を行ってください。

(1)

サンプル・プロジェクトを読み込む

CS+のスタート パネル 上の[サンプル・プロジェクトを読み込む] から,E1/E20用のサンプル・プロジェクト「RX610_Tutorial_DebugConsole」を読み込みます。

備考

“スタート パネル”についての詳細は,「CS+ プロジェクト操作編」を参照してください。

(2)

低水準インタフェース・ルーチン(アセンブリ言語部分)用のファイルを編集する【シミュレータ】

ストリーム入出力の方式をシミュレータモードとして使用する場合,低水準インタフェース・ルーチン(アセンブリ言語部分)用のファイル(lowlvl.src)の内容をシミュレータ用に編集する必要があります。lowlvl.srcの内容を以下のシミュレータ用のサンプルへ置き換えてください。

         .GLB    _charput
         .GLB    _charget
SIM_IO   .EQU 0h
         .SECTION   P,CODE
;-----------------------------------------------------------------------
;  _charput:
;-----------------------------------------------------------------------
_charput:
         MOV.L      #IO_BUF,R2
         MOV.B      R1,[R2]
         MOV.L      #1220000h,R1
         MOV.L      #PARM,R3
         MOV.L      R2,[R3]
         MOV.L      R3,R2
         MOV.L      #SIM_IO,R3
         JSR        R3
         RTS
;-----------------------------------------------------------------------
;  _charget:
;-----------------------------------------------------------------------
_charget:
        MOV.L       #1210000h,R1
        MOV.L       #IO_BUF,R2
        MOV.L       #PARM,R3
        MOV.L       R2,[R3]
        MOV.L       R3,R2
        MOV.L       #SIM_IO,R3
        JSR         R3
        MOV.L       #IO_BUF,R2
        MOVU.B      [R2],R1
        RTS
;-----------------------------------------------------------------------
;  I/O Buffer
;-----------------------------------------------------------------------
         .SECTION  B,DATA,ALIGN=4
PARM:    .BLKL     1
         .SECTION  B_1,DATA
IO_BUF:  .BLKB     1
         .END

(3)

使用するデバッグ・ツールを選択する

使用するデバッグ・ツールの選択/切り替えは,プロジェクト・ツリー パネル上の[品種名 デバッグ・ツール名(デバッグ・ツール)]ノードを右クリックすることで表示されるコンテキスト・メニューにより行います。

備考

デバッグ・ツールの選択についての詳細は,「2.3.1 使用するデバッグ・ツールを選択する」を参照してください。

(4)

プロパティ パネルの設定を変更する【シミュレータ】

シミュレータを使用する場合,プロパティ パネルの上の[デバッグ・ツール設定]タブ[ストリーム入出力]【シミュレータ】カテゴリ内において,次の設定を行います。

図 2.183

[ストリーム入出力]カテゴリ

(a)

[ストリーム入出力モードを選択]

エミュレータと同じ低水準インタフェース・ルーチン(アセンブリ言語部分)用のファイルを使用する場合は,[エミュレータモード]を選択してください(デフォルトでは[シミュレータモード]が指定されています)。

(b)

[ストリーム入出力機能を使用する]

このプロパティは,[ストリーム入出力モードを選択]プロパティにおいて[シミュレータモード]を選択した場合にのみ表示されます。

標準入出力またはファイル入出力を行う場合,[はい]を選択してください(デフォルトでは[いいえ]が指定されます)。

(c)

[ストリーム入出力用アドレス]

このプロパティは,[ストリーム入出力モードを選択]プロパティにおいて[シミュレータモード]を選択した場合にのみ表示されます。

低水準インタフェース・ルーチン(アセンブリ言語部分)に,シミュレータ用のサンプルを使用している場合は,“0”(デフォルト)を指定してください。

(5)

ダウンロードを実行する

メイン・ウインドウ上の[デバッグ]メニュー→[ビルド&デバッグ・ツールへダウンロード]を選択します。これにより,デバッグ・ツールと接続したのち,ビルド/ダウンロードを行います(「2.5.1 ダウンロードを実行する」参照)。

(6)

デバッグ・コンソール パネルをオープンする

デバッグ・コンソール パネルをオープンします。

(7)

プログラムを実行する

プログラムを実行します(「2.9 プログラムの実行」参照)。

(8)

デバッグ・コンソール パネル上でデータの入出力を行う

プログラムを実行することにより,デバッグ・コンソール パネル上でデータの入出力を行います。

本プログラムは,scanf関数によりキーボードからパネル上へ入力した10個のデータを読み込み,入力データを昇順にソートしたのち,printf関数によりパネル上に出力します。

 

-

main関数内のprintf関数により,データを格納する配列“a”の要素名をパネル上に出力します。

-

キーボードによりパネル上へデータを入力すると,main関数内のscanf関数によりデータを読み込みます。

 

-

main関数内のprintf関数により,ソートしたデータをパネル上に出力します。

備考

デバッグ・コンソール パネルのコンテキスト・メニューから[ローカル・エコー・バック有効/無効]を選択し,ローカル・エコー・バック機能を無効状態にした場合,入力した文字は表示しません(ローカル・エコー・バックを実行しません)。