C言語対応リアルタイム・デバッガー機能
C言語対応IDEコンパイラーはMicrochip PIC® MCUとdsPIC® DSC マイクロコントローラのためのハイレベルなデバッガー機能を含んでいます。 フラッシュPIC® MCUシリーズのマイクロコントーラ(PIC12F,16F,18F,24, dsPIC)を含む 開発ボードとCレベルで簡単にデバッグ出来るICD-U64, Mach X, 又は、ICSPギャング・プログラマーPRIME8等の プログラマー/デバッガーを供給しています。 また、Microchip MPLAB®REAL ICE, ICD3等もIDEからはMPLAB, MALAB-Xと共に使用出来ます。
デバッガーはローディング, リセット, Go, ホールト,
Go To Line, ステップとステップ・オーバー コントロール・
コマンドを提供しています。ソース・ウィンドウでのステッピングはフルにC行とリスティング・ウィンドウはアセンブリ行
(シングル・ワード指令)をステップします。ステップ・オーバーは標準関数、インライン関数とライブラリー・コールを
正しく実行します。
標準のRAM と Data EEPROM ウィンドウは変更されたデータとその位置を表示します。データはバイト単位で
手動で変更出来ます。プログラム・メモリーはディスアセンブルされアセンブリ言語ニーモニックで表示されます。
更に詳しい情報はそれぞれの
メニュー・タブをクリック
メニュー・タブをクリック
デバッガー概要
デバッガー概要
デバッガー・ツール(CCS ICD, CCS Load-N-Go, CCS Mach-X, 等)を使って マイクロコントローラ上でアプリケーションのデバッグを行うことが出来ます。
デバッガ・ウィンドウのトップにあるアイコンは実行、停止、 シングル・ステップ等のアクションを実行するためのアクション・ボタンです。詳細は以下です。 デバッガ・ウィンドウの各タブは1つの機能にフォーカスされています。 (ROMを見る, RAMを見る, ブレークポイント設定, 等々)
ウィンドウの下にはステータス・フィールドがあります:
- PC - これはプログラム・カウンター(PC)でマイクロコントローラが 現在中止/停止しているそのプログラム・メモリ・アドレスです。
- W - これはマイクロコントローラのワーキング・レジスターです。 もし、マイクロコントローラが複数のワーキング・レジスターを持っていますと これは最初のワーキング・レジスター(WREG0 又は、W0)です。
- Status - これはマイクロコントローラ(デバッガー・ツールはプログラムをロードしている、 プログラムが実行されている、プログラムは準備されているが停止されている等々)上の デバッガ・ツールやデバッグの現在の状態を示しています。
デバッガー・アクション
Enable | デバッガーを有効にする。これはC対応のIDEのデバッガ部分を起動して デバッグ・モードでマイクロコントローラをプログラム | |||||||||
Disable | デバッガーを無効にする。これはC対応のIDEのデバッガ部分を閉じて マイクロコントローラから切断 | |||||||||
Run | 現在の位置からプログラムを実行 | |||||||||
Reset | そのプログラムの最初にマイクロコントローラをリセット | |||||||||
Halt | プログラムの中止/停止。マイクロコントローラのプログラムが停止され、 実行は任意のRun又は、Steopコマンドでこの時点から続行されます。 | |||||||||
Step Into | シングル・ステップを実行します。ステッピングする時、これはに関数にステップします。 | |||||||||
Step Over | シングル・ステップを実行します。ステッピングする時、これはに関数を ステップ・オバーします。 | |||||||||
Run to Cursor | プログラムはエディット・カーソルの位置まで実行されます。 | |||||||||
Snapshot | さまざまなデバッグ情報を記録することができます。 ユーザーがどの情報を何時、何処に記録するかを選択すること出来ます。 記録することができる情報も含まれるもの:現在の時間、プロジェクト名、 PC、デバッガの状態、ウォッチ、ブレーク、RAM値等々 | |||||||||
Configure[環境設定] | デバッガーを環境設定 | |||||||||
Debug Window |
| |||||||||
Help | デバッガー・ウィンドウ上でヘルプ・ボタンを押した時、その特定のデバッガー・ ウィンドウのヘルプが表示されます。 | |||||||||
More Option | このデバッガー・ウィンドウに関連したさらなるアクションを表示。 これは、このデバッガー・ウィンドウ上で右マウス・クリックした時に得れる ものと同じメニューです。 |
RAM
デバッガー・ウィンドウ - RAM | マイクロコントローラのデータ・メモリ(RAM)の内容の表示 |
一番上の行と最初のカラムはセルのアドレスです。上記の例では、アドレス0x16は0x8Fの値を持っています。
セルは最後のステップ/停止以後に値が変更されますと赤色で表示。変更されていない場合は青色です。
セル上でダブル-クリックすることで値を変更することが出来、そして、新しい値を入力出来ます。 これはデバッガ・ツールがこの新しい値をマイクロコントローラに書き込みます。
変数の値を読むためにはウォッチ・ウィンドウ、又は、Evalウィンドウを使用すると簡単です。
右クリック・メニュー
このウィンドウで右クリックすることで次の操作メユーが提供されます。
Show as decimal - ツールチップは一時的に符号なし10進数としてセルの値が表示します(基本 10)
Show as signed - ツールチップは一時的に符号付き10進数としてセルの値が表示します(基本 10)
Show as chars - ツールチップは一時的に現在のセルから開始しそれがヌル終端(0x00)に達するまで 文字列値(ASCII文字)を表示します。
Show as float - ツールチップは一時的に現在のセルと次の3つのセルを読み取り、それを浮動小数点形式に変換し 選択されたセルの浮動小数点表現を表示します。
Copy to notes - 値をコピーし、それをプロジェクトに関連したそのノート・ファイルにセーブ
ROM
デバッガー・ウィンドウ - ROM | マイクロコントローラのプログラム・メモリ(ROM)の内容とそのプログラム・ メモリのディスアセンブリーを表示 |
このウィンドウの最初のカラムはプログラム・メモリ内の命令の物理アドレスです。 2番目はこのアドレスの命令ワードです。このウィンドウの残りのカラムはこの命令の 逆アセンブリー、又は、アセンブリー言語翻訳したものです。 このマイクロコントローラのための命令セットやアセンブリー言語のコマンドの詳細については、 マイクロコントローラの製造元が提供するドキュメントとデータシートを参照してください。
プログラムの現在の位置は黄色でハイライトされます。
プログラムのCと各C行のために生成された命令及び、アセンブリーを示すより洗練されたビューについては PCW IDEのC/ASMリスト・ビューを使用して下さい。C/ASMのリストでは各命令をシングル・ステップし、 そして、アセンブリー内の特定のアドレスにブレークポイントをセットします。
Data EEPROM
デバッガー・ウィンドウ - EEPROM | マイクロコントローラが内部データEEPROMを有する場合、このウィンドウは そのデータEEPROM内の値を読み取り、又は、そのデータEEPROMの値をセット |
一番上の行と最初のカラムはセルのアドレスです。上記の例ではアドレス0はABを持っていてそれにストアされます。
セルは最後のステップ/停止以後に値が変更されますと赤色で表示。変更されていない場合は青色です。
セル上でダブル-クリックすることで値を変更することが出来、そして、新しい値を入力出来ます。 これはデバッガ・ツールがこの新しい値をマイクロコントローラに書き込みます。
ブレーク
デバッガー・ウィンドウ - Breakpoints | マイクロコントローラ・デバッガがイベントのポイントで実行を停止させる原因となる イベントの設定/セット/クリア・ブレークポイント |
Type - これはブレークポイントのタイプです。ROMブレークポイントは プログラム・メモリの或るアドレスをヒットしたときにブレークします。 RAMブレークポイントはマイクロコントローラ・コアが特定のデータ・メモリ・ アドレスをリード、又は、ライトしようとするときにブレークします。 全てのマイクロコントローラがRAMブレークポイントをサポートしているのでは有りません。
Address - これはブレークポイントのためのアドレスのセットです。 このアドレスの場所はRAM又は、ROMセッティング・タイプに依存します。
PassCnt - そのアドレスがブレークポイントの前にアクセスされる必要がある回数が トリガーされ実行が停止します。全てのマイクロコントローラでサポートされているのでは有りません。
Info - RAMのブレークポイントのデータ値が使用するプログラムのメモリー・アドレスの C言語での場所等のブレークポイントに関する詳細な情報
スタック
デバッガー・ウィンドウ - Stack | 関数コールのセル・スタックを表示し、全パラメータがこの関数へパスされます。 |
ウォッチ
デバッガー・ウィンドウ - Watches | それらの値を見るための変数の監視 |
ウィンドウの上部にあるフィールドにはユーザーが監視する変数や式を入力することが出来ます。 任意の有効なC式を入力することが出来ます。プルダウンはプログラム内の全ての変数のリストから 選択することが出来ます。Enterキーを押すかフィールドの横にあるPlusボタンを押すと変数や式が ウォッチ・リストに追加されます。Plusボタンの横にある矢印はウォッチ・リストに式や変数を 追加するために使用されますがフォーマットやサイズに修飾子を付けることが出来ます。
Format - 下記のフォーマット・オプションから選択することが出来ます:
- Auto - IDEが選択された変数を基に正しいフォーマットを決定
- Binary - 10進数で表示(基本10)
- Char - ASCII文字として表示
- Hex - 16進数で表示(基本16)
- Float - 浮動小数点として表示
- String - 文字列として表示(ヌル・ターミネータとして0x00で終わるASCII文字の列)
ウォッチされている各変数や式はウィンドウにそれ自身のテーブルが与えられます。 変数や式名(下線が引かれている)をクリックするとユーザーがこのウォッチ(式、フォーマット又は、 サイズ)を再設定することができます。説明は変数名の後の括弧内にどのような形式とサイズが 使用されているの詳細が表示されています。各式又は、変数はテーブルの右側のシェブロンを クリックすることで最小化または最大化することができます。 変数又は、式はテーブルの右側のXをクリックすることでウォッチ・リストから削除することができます。 ボックスやウォッチ・リストはボックスのタイトルを左クリックしながら新しい場所にボックスを ドラッグすることにより再配置することができます。
ぺリフェラル
デバッガー・ウィンドウ - Peripherals | マイクロコントローラとそれらの値の特殊ファイル・レジスタ(SFR)を表示しますが ハードウェア・ペリフェラルに分類されます。 |
ウィンドウのトップのプル-ダウンは検査するペリフェラル(A/Dコンバータ, UART, PWM, 等)を選択することが出来ます。 グループが選択された時、ウィンドウはそのペリフェラルに関連したSFRを表示します。
最初のテーブルに示されるのはそのペリフェラルの全てのバイトとワード、それらの場所と値です。 2番目のテーブルに示されるのは個々のビット、それらの場所と値です。
各ペリフェラルについてのさらに詳しい情報はマイクロコントローラのドキュメントとデータシートを参照 して下さい。
Eval[評価]
デバッガー・ウィンドウ - Eval | 実行時にメモリに格納された値と変数を使用してユーザーの プロジェクト内の任意の有効なC式を評価するためにデバッガを使用 |
式はその式を入力してからEnterを押すことで評価することができます。 ユーザーの式は黒色のテキストで表示され、結果は青色のテキストで表示されます。
右クリック・メニュー
- Keep side effects - 割り当て、又は、変更(=演算子、++演算子、 -- 演算子等) を含む任意の式はマイクロコントローラのデータ・メモリーへの割り当てを実際に保存します。
- Clear screen - ウィンドウをクリア
- Calculator - カルキュレータを開く
モニター
デバッガー・ウィンドウ - Monitor | ICDコネクターは6ピンですが、PGMピンは使用されませんので一般的には5ピンのみが プログラミングやデバッギングのために使用されます。 PCW IDEのデバッグ・モニター機能はPGMがイン-サーキット・デバッグと連動して操作することができる 1-wire UARTとして使用することが出来ます。 これはいくつかのデバッグのprintf()を追加することができることとデバッガ・ウィンドウ内で それらを見るのに便利です。1-wireですが双方向でデータを処理しgetc()はユーザーからのデータを 受信するためにマイクロコントローラ・コード内で使用することが出来ます。 |
有効/無効を含むこの機能の一般的な構成はDebug Configure[デバッグ設定]ウィンドウで行います。
1-wireは双方向であるためこのウィンドウにマウスをクリックすると、それがフォーカスをした後、 キーボードで文字を入力すると、それらの文字はマイクロコントローラに送信されるようになります。 マイクロコントローラはそのデータを受信するのにgetc()またはkbhit()を使用することができます。
コードはサポートを追加するためのマイクロコントローラに追加する必要があります - これはデバッガ・ オプションを使用して#use rs232()プリプロセッサ・コマンドを使用して行われます。以下はサンプル構文:
#use rs232(DEBUGGER, stream=STREAM_MONITOR, xmit=PIN_B3, rcv=PIN_B3)
- DEBUGGERが必要とされUARTストリームを1-wireデバッグ・モニターとして使用されるように設定します。
- STREAMはプログラムが複数の#use rs232()経由で複数のUARTストリームを持ったイベントでこのUARTのための ユニークなストリーム識別子名を設定します。詳細についてはCCS Cコンパイラ・マニュアルで#use rs232() ドキュメントを参照して下さい。
- XMITとRCVはどのピンが使用されるかを設定するために使用することができます。 指定しない場合、コンパイラはデフォルトとしてPIN_B3を使用します。 XMITとRCVの値が一致している必要があります。
ブレーク・ログ
デバッガー・ウィンドウ - Break Logging | ブレークポイントがパスされるたびに変数の値をログします。イベント時に 実行を停止する伝統的なブレークポイントとは異なりブレーク・ログは実行を続けます。 |
Log - チェックが入れられますと ブレーク・ロギングが有効にされます。 これがチェックにされた時、実行はブレークポイントに到達して時も停止されません。
Break - もし、マイクロコントローラが複数のブレークポイントを持っている場合、 ブレーク・ロギングに使用するために、このフィールドはbreakpoint#にセットされる必要があります。 ブレークポイントのセッティング/削除はブレークポイント・ウィンドウをご覧下さい。
Timestamp - チェックされている場合、タイムスタンプが各ログ・エントリーに追加されます。
Expression - 各ブレークでログされるべき変数又は、変数のリスト。 変数のリストは';' キャラクター(セミコロン)でセパレートすることが出来ます。
Results - 各行はブレークポイントでログされた値を表示。 もし、Expressionフィールドで複数の値がリストされている場合は、 Resultsフィールドでリストされた値は同じ順序で表示されます。
右クリック・メニュー
Results領域での右クリックは次のメニューが現れます:
Clear Screen - Results表示をクリア
Save to notes - Results表示をそのプロジェクトに関連したノート・ファイルにセーブ
Save to file - Results表示をユーザーが指定したファイルにセーブ、IDEはそのファイルを最初に聞いて来ます。
RTOSタスク
デバッガー・ウィンドウ - RTOS Tasks | デバッグされるターゲット・マイクロコントローラ上で実行されている全てのRTOSタスク での統計を見ることが出来ます。 |
ウィンドウの一番上には検査するためにどのタスクを選択することができるプルダウンがあります。 これらは#task()プリプロセッサ・コマンドで先行されるすべての関数です。
プルダウンの横の 'In'フィールドは現在どのタスクにプログラムが入っているかを示します。 これは現在のプログラム・カウンタ(PC)によって決定されます。
Enabled - もし、タスクが有効にされいる場合は'Enabled'、もし、タスクが無効にされている場合 は'Disabled'。このステータスは rtos_enabled()とrtos_disabled()関数によって制御されます。
State - タスクの状態
- Ready - タスクが正常に実行され、次の実行時間を待っています。
- Running - タスクが現在実行されています。唯一つのタスクが1度に実行することができ、 他のすべては無効になっているか、実行するための時間を待っています。
- Waiting on await - タスクは現在rtos_await()関数により順番を待っています。
- Waiting on semaphore - タスクは現在rtos_wait()関数により順番を待っています。
Run Rate - タスク・アクティベーション間の時間。例えば、10回実行するタスクはここでは100ミリ秒になります。
Last Run - それが実行された最後の時間がどれだけの間タスクを実行したか
Task PC - これはこのタスクのプログラム・カウンタ(PC)エントリー・ポイント・アドレスです。もし、 C/ASMリスト・ビュー又は、raw[生の]プログラム・メモリを検査する場合、これはこのタスクが開始されるアドレスです。
Total Time - このタスクをマイクロコントローラが実行するのに費やした合計時間です。 ユーザーがそれらの#use rtos()プリプロセッサ・コマンドでSTATISTICSオプションを指定しない限り、 このフィールドは移入されません。
Low Time - このタスクを一度に実行するのに掛った最速タイム。ユーザーがそれらの#use rtos()プリプロセッサ・ コマンドでSTATISTICSオプションを指定しない限り、このフィールドは移入されません。
High Time - このタスクを一度に実行するのに掛った最も遅い時間。ユーザーがそれらの#use rtos()プリプロセッサ・コマンドで STATISTICSオプションを指定しない限り、このフィールドは移入されません。
SFR
デバッガー・ウィンドウ - SFR | スペシャル・ファイル・レジスター(SFR)の現在の値を示します。マイクロコントローラの 特殊制御レジスターはマイクロコントローラとペリフェラル・ステータスと制御のために リザーブされています。 |
Address - SFRの物理RAMアドレス
Name - そのSFRの名前, マイクロコントローラの製造者により与えられドキュメント化されています。
Value - そのSFRの現在の値。値は最後の停止/シングル・ステップ以後に値が変更されますと赤色で表示、 変更されていない場合は青色です。ユーザーはこのフィールド上でダブル-クリックすることで値を変更することが出来、 その時点でそれはマイクロコントローラに書き込まれます。
デバッグ構成
デバッガー・ウィンドウ - Configure | ユーザー・ツールバーの置かれたアイコンはここで追加、削除出来ます。 |
Compile Reload - TRUEの場合, マイクロコントローラはコンパイル成功後毎に再プログラムされます。 FALSEの場合, コンパイルの後に新しいプログラムをロードするためにマイクロコントローラを再プログラム しなければいけません。これはDebut Configuresウィンドウの()を使って行うことが出来ます。
Mouse over eval - TRUEの場合, デバッガはマウスが識別子/変数の上でホバーリングしていると識別子の 現在の値を表示するtooltips hintを提供します。これは識別子/変数の現在の値を取るために マイクロコントローラのRAMを読むことで行われます。
Timout Mouse over - FALSEの時、上記のMouse over evalはマウスが移動されている場合のみ消えます。
Mouse over radix - 上記Mouse over evalヒントの形式を設定。以下の値が選択可能:
- Decimal - 全ての数字が10進数で表示(基本10)
- Hexadecimal - 全ての数字が16進数で表示(基本16)
- Default - デバッガは10進数または16進数を使用する必要があるかどうかを決定するために表示されている 変数のデータ型(CHAR、INT8、フロート等)のを使用
Echo on monitor - TRUEの場合、ユーザーが何をモニターに入力したかのエコーがモニター画面上に反映されます。 (上記を参照して下さい)。さらに詳しい情報はマニュアルのMonitorセクションをご覧下さい。
Monitor font size - デバッガのモニター・ウィンドウのためのフォント・サイズのセット。 さらに詳しい情報はマニュアルのMonitorセクションをご覧下さい。
ICD F/W - ICD又は、プログラミング/デバッギング・ツールのファームウエア
Processor - デバッグされようとするマイクロコントローラ
Port - ICDプログラマー/デバッギング・ツールのCOM 又は、USBポート
Low voltage warning - TRUEの場合、プログラム設定(コンフィギュレーション・ビット)又は、 マイクロコントローラが3Vのプログラミングやデバッグと互換性がない場合にデバッガはユーザーに警告します。 例えば、いくつかのマイクロコントローラは完全に3Vで消去することが出来ません。
Halt peripherals - TRUEの場合、デバッガが停止/中止(例えば、シングル・ステップ中、 又は、ブレークポイントのヒットの後)する時ペリフェラルは停止/中止されます。 適切な設定はデバッグされるアプリケーションに依存します。 タイマーのデバッギングやプロセッサが停止している間に実行中のタイマーを中止のために ペリフェラルを無効にするのは有効な手段です。 モーターのPWM制御やFETのためのペリフェラルを無効しますとツールやマイクロコントローラに損傷を与えます。 ハイ状態で停止しFETが完全にそれの負荷を駆動させている可能性がありますので御注意下さい。 ある種のマイクロコントローラではこの機能をサポートしていません、そして、 ペリフェラルを強制的に停止又は、停止されている時に実行を強制しないで下さい。
Use external oscillator - TRUEの場合, デバッガはオシレータ・クロッキングが マイクロコントローラのクロックに固定されていることを前提としますのでデバッガは 停止、又は、シングル・ステップ毎の後にプロセッサ速度を再計算しようとはしません。 外部オシレータを使っている時の最適な速度はこれをTRUEにセットして下さい。 もし、内部発振器、又は、可変速度クロックを使用している場合、デバッガ・ツールがマイクロコントローラが 処理できる以上に速い通信を試みないようにこれをFALSEにセットして下さい。
Write to data EEPROM - TRUEの場合, デバッガは毎プログラムの後EEPROMをイレースし書き込みします。 各プログラムでEEPROMの内容を保持するにはFALSEにセットして下さい。 全てのマイクロコントローラがこの機能をサポートしているのでは有りません。