YellowIDE7専用
イエロースコープはじめの一歩
前提条件
●イエローソフトのCPUボードの場合 このマニュアルはイエローソフトの各CPUボード用「はじめの一歩」の続編です。イエロースコープの使い方を簡単 に説明しています。このマニュアルを読む前に各CPUボード用「はじめの一歩」を読んで、サンプルプログラムが正常 に動作することを確認しておいて下さい。詳細に関しては「イエロースコープ スタートアップガイド」を参照して ください。 また、そのサンプルプロジェクトのプロジェクトをYellowIDEで開いた状態にしておいて下さい。 このマニュアルは各CPUボードすべてに共通です。ですから、個別のCPUボードの事情については記していません。 たとえば、フラッシュROMへの書き込み操作についてはそれぞれのCPUボードで手順が異なります。このマニュアルで は、単に、「フラッシュROMに書き込んで下さい」と記しているだけです。具体的な手順に関しては、各CPUボード用 の「はじめの一歩」をご覧下さい。 書き込んだプログラムを実行する方法も同様です。 サンプルプログラムの内容も各CPUボードによって異なります。したがって、ここで掲載されているサンプルプログ ラムは一つの例であって、それぞれのCPUボードのサンプルプログラムと異なります。 ●他社製、および自作のCPUボードの場合 このマニュアルはイエローソフトのCPUボード専用に書かれたものです。しかしながら、応用を広げ、柔軟に解釈し ていただければ他のCPUボードユーザでも読み進めることができます。その際、以下のことに注意して下さい。 ① スタートアップルーチンおよびイエロースコープのモニタが作成済みであることが必要です。スタートアップル ーチン、モニタの作成方法に関してはCコンパイラ付属の「プログラマーズマニュアル」をご覧下さい。 ② サンプルプログラムはYellowIDE7をインストールしたフォルダのSampleフォルダに各CPU別にあります。すべての CPUで用意しているわけではありません。ここにない場合は近いCPUを選んで必要ならば修正して使用して下さい。 ③ 作成したプログラムをターゲットのCPUのフラッシュROMに書き込み、それを動作させる手順を理解していること が前提です。このマニュアルではそれらの手順を説明していません。イエロースコープのデバッグ方式
イエロースコープのデバッグ方式は次の3つがあります。 ① シミュレーションモード ② リモートデバッグモード ③ ROMデバッグモード シミュレーションモードはパソコン単体でデバッグするモードですが、内蔵周辺機能などハード的なデバッグはで きないためその使用方法はかなり限定的です。したがって、このマニュアルでは説明していません。 リモートデバッグモードはプログラムをRAMへダウンロードしてRAM上で動作させるモードで、イエロースコープの 最も一般的なデバッグモードです。ただし、プログラムをRAMへ格納するため、プログラムを格納できるだけのRAM容 量が必要です。内蔵RAMだけでは足りないので、外部RAMを持たないCPUボードでは使用できません。(RLL機能を利用す れば使用できます。RLL機能についてはYellowIDEのヘルプをご覧下さい) リモートデバッグモードを使用するには、あらかじめ「モニタ」と呼ばれるソフトウェアをターゲットのフラッシ ュROMに組み込んでおく必要があります。このモニタの動作によりイエロースコープでデバッグすることができます。 ROMデバッグモードは、プログラムをROMに書き込んでROM上で動作させます。したがって、外部RAMを持たないCPU ボードでも動作可能です。ただし、使用できるブレークポイントの数に制限があり、また毎回フラッシュ書き込みの 手間が発生するため、リモートデバッグモードよりはデバッグ効率は落ちます。しかし、完成プログラムは最終的に ROMで動作するわけですから、ROMデバッグモードはより現実に近いデバッグと言えます。リモートデバッグモードでのデバッグ
注意!! 外部RAMを持たないCPUボードの場合は、次項の「RLL機能を利用したリモートデバッグモードでのデバッグ」 をごらんください。 ●モニタの書き込み まず最初にモニタと呼ばれるプログラムをターゲットのフラッシュROMに書き込みます。リモートデバッグ中はこの モニタが動作してイエロースコープと通信します。 フラッシュROMライタを起動します。YellowIDEのメニューの(ツール)→(フラッシュROMライタ(ファイル指定)) でフラッシュROMライタFWRITE2を起動します。 CPUボードをフラッシュROM書き込みモード(ブートモード)にします。FWRITE2の(書込み)ボタンをクリックします。 最初のファイルが転送された後、書き込むファイルを問い合わせるダイアログが開きます。ここで、モニタのファイ ルを指定します。ただし、USBボードシリーズでUSBではなくRS232C使用する場合、書き込みファイルが異なるため、 各CPUボードはじめの一歩の「RS232Cインターフェースを利用したデバッグ、およびフラッシュROMへの書き込み」参 照してください。 モニタのファイルはYellowIDEをインストールしたフォルダの中のREM-MONフォルダの中の各CPUボードごとのフォ ルダの中にあります。 書き込みがすんだら、CPUボードのフラッシュROM書き込みモードを解除します。(プログラムを動作させる通常の モードにします。) ●モニタの動作チェック 次に簡単なモニタのチェックを行います。対象となるCPUボードはシリアルまた外付けUSBチップを使用したボード です。YellowIDEのメニューの(ターミナル)→(表示)でターミナルウインドウを開き、CPUボードをリセットしま す。そうすると画面に"Aソ"と表示されるので、リターンキーを押します。画面に"チ?"と表示されれば正常です。 次にCPU内蔵USBを使用したボードの場合について説明します。ターミナル画面を閉じ、プロジェクトウインドウの [設定]ボタンをクリックし、プロジェクトの設定ウインドウを開いてください。赤丸の部分がチェックされているか 確認してください。チェックした後に、この画面を閉じ、再度ターミナル画面を開きます。正しいターミナル画面は下記のようになり ます。 この画面が開いたら、「ターゲットリセット」ボタンを押し、「CPUをリセットしてください」との画面が開きま すので、CPUボードのリセットボタンを押してからOKボタンを押してください。そして、リターンキーを押してみ てください。上記の画面のように"チ?"と表示されれば正常です。 次にターミナルウインドウを閉じ、次にYellowIDEのプロジェクトウインドウの[object]から以下のようにリモート デバッグを選んで下さい。 リモートデバッグを選んだら、実行ボタン(青い三角のボタン)をクリックするとイエロースコープが起動します。 ●イエロースコープの起動と初期設定 イエロースコープを起動したら、最初エラーがでる場合がありますが、無視して(OK)ボタンをクリックします。 起動したら、イエロースコープの(設定)->(システム設定)を開きます。 ここで通信ポートを選択します。(ポート設定)のボタンをクリックすると通信設定を変更できますが、変更しな いで下さい。通信設定を変更するにはモニタの変更が必要だからです。COMポートだけ選んで(OK)をクリックします。 これで初期設定は終了です。それではイエロースコープで動作させてみます。まず[F11]キーを何度か押し続けて下 さい。プログラムが一行ずつ実行されるのが分かると思います。
次に実行ログウインドウを開きます。イエロースコープのメニューの(表示)→(ログ)で白色のウインドウを開き ます。次に、[F5]キーを押して下さい。プログラムが連続して動作します。それと同時に実行ログウインドウに"Hello" が一定間隔で表示されていきます。 イエロースコープのメニューの(デバッグ)→(中断)でプログラムを止めて下さい。 次に割込み関数の中をトレースしてみます。割込み関数timerの中の適当な文のところの行をクリックしてカーソル を点滅させて下さい。ここで[F9]キーを押します。行の色が変わります。これがブレークポイントです。プログラム がここを通過すると、停止します。 [F5]キーを押して下さい、プログラムがこのブレークポイントで停止するのが分かります。行のラインの色が変わ ったら停止の合図です。ここで[F11]キーを押せば再びトレースできます。 以上でリモートデバッグの説明は終わりです。もっと詳しくはイエロースコープのマニュアルをご覧下さい。尚、 上記の画面で__break__というのがありますが、これは次に説明するROMデバッグの際に使用します。
RLL機能を利用したリモートデバッグモードでのデバッグ
RLL機能は、プログラムの一部(ライブラリやデバッグ済みの関数など)をモニタと一緒にあらかじめ、ROMに書き 込んでおく機能です。これにより、プログラムのダウンロード時間を短縮できます。また、転送するプログラムサイ ズが小さくなりますから、外部RAMを持たないターゲットシステムでリモートデバッグできる余地があります。 ●RLLリモートデバッグモード設定 YellowIDEのプロジェクトウインドウの[object]から右図のようにリモートデバッグを選んで下さい。そして、RLL 機能を使うには、モニタのプロジェクトを左図のようにサブプロジェクトとして開いておく必要があります。 YellowIDEのメニューの(ファイル)→(サブプロジェクトを開く)で、モニタのプロジェクトを開きます。 モニタのプロジェクトはYellowIDEをインストールしたフォルダの中のREM-MONフォルダの中の各CPUボードごとの フォルダの中にあります。 次にプロジェクトウインドウの(設定)ボタンをクリックして、プロジェクトの設定画面を開き、RLLのタグをクリ ックします。「ROMリンクライブラリを使用する」をチェックしてください。 ●メイクとモニタの書き込み まず、メイン側のプロジェクトをメイクまたは再構築してください。その後、サブプロジェクトウインドウの(メイ ク)ボタンをクリックし、サブプロジェクトをメイクします。 次に、サブプロジェクトウインドウの(実行)ボタンをクリックしてください。フラッシュROMライタが起動されま す。 次にCPUボードをフラッシュROM書き込みモード(ブートモード)にします。FWRITE2の(書込み)ボタンをクリックし ます。書き込みがすんだら、CPUボードのフラッシュROM書き込みモードを解除します。(プログラムを動作させる通 常のモードにします。) 以後の操作は、前項の「リモートデバッグモードでのデバッグ」の●モニタの動作チェック(P2)からと同じですの で前項を読んでください。 補足 メインのプロジェクトウインドウから、サブプロジェクトウインドウにファイルを移動すると(マウスでドラッグ& ドロップする)そのファイル内のプログラムはモニタと一緒にROMに書き込まれます。(ただし例外もある)詳しくはROMデバッグモードでのデバッグ(対応CPUのみ)
外部RAMがない場合などは、このROMデバッグモードが有効です。プログラムをROMに書き込んだ状態でデバッグしま す。リモートデバッグと違いモニタを予め書き込んでおく必要はありません。モニタはユーザのプログラムとリンク されて一緒のROMに書き込まれます。YellowIDEのプロジェクトウインドウで[object]をROM化(ROMデバッグ)にします。 ここでメイクをする前に割込み関数timerの中身を見て下さい。__break__と書かれた行があります。これが何のた めにあるか説明します。 ROMデバッグの場合は、イエロースコープで任意の位置に設定できるブレークポイントの数に制限があります。多く のCPUの場合は1個から4個です。H8/300Hの場合は一個も設定できません。 これではデバッグできないので、プログラムをメイクする前に__break__をソースプログラム中に書き込んでおきま す。これはYellowIDEの[F7]キーで行います。ソースプログラム中にカーソルを合わせ[F7]キーを押して下さい。 __break__が挿入されます。もう一度押すと__break__が消えます。これはROMブレイクポイントと呼ばれ、ブレイクす るしないはデバッグ時に指定できますが、移動ができないブレイクポイントです。移動するためには、イエロースコ ープを終了し、ソースファイルで位置を修正し、再メイク、再フラッシュROM書き込みを行う必要があります。 また、任意に設定可能なブレイクポイントの個数に関しては「イエロースコープ オンラインヘルプ モニタ作成 ―モニタライブラリ-ROMデバッグライブラリ」参照してください。 次にメイクして、このプログラムをフラッシュROMに書き込みます。実行ボタン(青い三角のボタン)をクリックして 下さい。メイク終了後、フラッシュROMライタが起動します。CPUボードをフラッシュROM書き込みモード(ブートモー ド)にして書き込んで下さい。 フラッシュROMへの書き込みが終了したら、CPUボードを通常の動作モードに戻し、リセット後、 をクリックし イエロースコープを起動して下さい。●イエロースコープの起動と初期設定 イエロースコープを起動したら、最初エラーがでる場合がありますが、無視して(OK)ボタンをクリックします。 起動したら、イエロースコープの(設定)->(システム設定)を開きます。 ここで通信ポートを選択します。(ポート設定)のボタンをクリックすると通信設定を変更できますが、変更しな いで下さい。通信設定を変更するにはモニタの変更が必要だからです。COMポートだけ選んで(OK)をクリックします。 これで初期設定は終了です。それではイエロースコープで動作させてみます。まず[F11]キーを何度か押し続けて下 さい。プログラムが一行ずつ実行されるのが分かると思います。 次に実行ログウインドウを開きます。イエロースコープのメニューの(表示)→(ログ)で白色のウインドウを開き ます。次に、[F5]キーを押して下さい。プログラムが連続して動作します。それと同時に実行ログウインドウに"Hello" が一定間隔で表示されていきます。 イエロースコープのメニューの(デバッグ)→(中断)でプログラムを止めて下さい。
さて、ここで先ほどの__break__の行に話を戻します。イエロースコープから見ると__break__の行が水色で表示さ れているのが分かります。水色はまだ正式にブレークポイントとして設定されていない印です。あくまでもブレーク ポイントを設定できるという意味です。__break__の行にカーソルを合わせ[F9]キーを押して下さい。これで色が水色 から茶色に変わります。ここで初めてブレークポイントの設定がされました。 [F5]キーでプログラムを実行させてみて下さい。ブレークポイントの下の行でプログラムが止まります。 なお、割込み関数内で記述されている_trace_ei()というのは、H8/300H系CPU専用命令で、他のCPUの場合はありま せん。ROMデバッグ時に割込み関数内でトレースできるようにするための初期化関数です。H8/300H系CPUの場合は割込 み関数の先頭で必ず記述して下さい。(リモートデバッグの場合は必要ありません。またH8TinyやH8S、SHの場合も必 要ありません) また、H8/300H系のROMデバッグでは、デバッガが16ビットタイマーのチャンネル0を使用しますから、 ユーザのプログラムはこのタイマーを利用できません。これも覚えておいて下さい。 ROMデバッグモードはリモートデバッグに比べて制約が多いです。特にH8/300Hは多いです。しかしROMデバッグは実 際のプログラムの動作に非常に近いのでもっとも確実なデバッグ方式です。また外部RAMがなくても、あるいは機器に 組み込んだままデバッグできるすぐれた長所もあります。リモートデバッグ、ROMデバッグのそれぞれの長所、短所を 良く理解して、使い分けてご利用下さい。
イエロースコープの便利な機能
●カーソル実行 ブレークポイントを設定し、プログラムを走らせそこで停止させる一連の操作をワンアクションでできます。プロ グラムのカーソルの位置まで実行し、そこで停止させます。プログラムを停めたい文の位置でマウスをクリックしカ ーソルを点滅させます。マウスを右クリックしメニューから「カーソル実行を選びます」 H8/300H系のROMデバッグではこの操作はできません。他のCPUの場合も他にブレークポイントを設定している場合は できない場合があります。 ●簡単に変数の値を見る 変数の値を見たい場合は、その変数にマウスカーソルを合わせます。変数の値が表示されます。 ●ウオッチウインドウ たくさんの変数の値が見たい場合はウオッチウインドウを利用します。イエロースコープのメニューの(表示)→ (ウオッチ)で開きます。 (追加)ボタンをクリックし、見たい変数名を入力します。16進数で表示させたい場合は先頭に%xをつけます。なお、●ステップ実行 [F11]キーでトレース動作できますが、関数の中を実行しないで、関数呼び出しの行まで実行したい場合は[F10]キ ーを押して下さい。これをステップ実行と言います。 ●メモリ編集ウインドウ メモリの内容を見たい場合は、メニューの(表示)→(メモリ)を開きます。アドレスに番地を入力し、型を選択 します(下図のアドレス200000は例です。実際のCPUボードのメモリマップに合った番地を入力して下さい)。 ●I/Oウオッチウインドウ 内蔵周辺機能のIOレジスタの内容を見たい場合は、メニューの(表示)→(IOウオッチを開きます) (追加)ボタンをクリックします。 変数名にレジスタ名称を、アドレス、型、表示形式を選択入力して下さい。 ウオッチウインドウ、メモリ編集ウインドウ、IOウオッチウインドウは、プログラム停止時に値が更新されます。 プログラム動作中にリアルタイムで更新はされません。