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