SSブログ

H8マイコンにデバックモニタを入れる。HTERMでデバックをする 2。 [HEW & HTERM]

前回の続きです。実際にデバックモニタを使った開発を”簡単”に解説します。
HEWを起動して、新たにワークスペースを作成しても良いのですが、関連と言う事で前に作成したsampleワークスペースの中に新たにプロジェクトを作成して、そこにアプリケーションを構築しましょう。

では、sampleワークスペースを開いてください。
次にファイルメニューの「プロジェクト(P)」→「プロジェクトの挿入(I)」でウイザードを起動し、「新規プロジェクト」を選択して先に進みます。ここから先は最初にワークスペースを生成した手順と同じになりますので、差分だけ以下に紹介します。
hew_image_36.png 今回はHEAPメモリを使いませんので、チェックを外して置きます。
hew_image_37.png stdio.hを組み込みたい所ですが、ここはぐっと堪えて。
hew_image_38.png 割り込みを使用しないので、割り込みベクターのチェックは外して置きます。
hew_image_39.png ウイザードが最後まで完了したら、追加したプロジェクトファイル名.cと、先に作成したデバックモニタのMAP出力(作成したデバックモニタのReleaseフォルダーにある)を編集画面に開きます。

あとは「組み込みモニタのカスタマイズ方法」と同じ様にマクロをCソースに書き込みます。 図ではprintfは0x2706番地から、scanfは0x273a番地から開始している事が判ります。
hew_image_40.png 実に簡単なプログラムなので、図を見てこの通りに入力してください。

また、左のペインの「dbsct.c」に赤いバッテンが付いています。dbsct.cの上にマウスカーソルを持って行って、右クリックから「ビルドからの除外」を選べばこの様になりますので、除外しておきます。

さあ!これでビルドだ!とは行きません。次はセクションの設定を行います。

「ビルド(B)」→「H8S/H8300 Standard Toolchain...」でツールチェインのダイアログを開き、「最適化リンカ」のTABを開いて各項目を設定します。
hew_image_41.png 「入力」の項目です。エントリーポイントにチェックを入れて、”_main”と記述します。勿論これはmain関数の事を指し、main関数の先頭アドレスのラベルを入力しています。
hew_image_42.png 「出力」の項目です。ROM→RAMコピーを行わないので、ハイライトしている項目を選び、DセクションからRセクションへのコピーの項目を削除してしまいます。
hew_image_43.png 「セクション」の項目です。右の並びのボタンを使って編集や削除を行い、図の様に設定します。

最終的にはPセクションとCセクションだけになってしまいますが、これは先のプログラムがPセクション(コード)、Cセクション(文字定数)しか使わないからです。また、Pセクションの開始アドレスは、後ほど解説しますが、デバックモニタの”?”コマンドで出力したメモリマッピング情報のUSER領域の開始アドレスを示しています。

設定が完了したらビルドを行ってください。最初のビルドは少し時間が掛かります。エラーや警告が発生していなければ終了です。
hew_image_44.png 話が長くなったので、ここからは飛ばして解説します。

デバックモニタが書かれたターゲットと、HTERMを起動します。デバックモニタのクレジットを確認したら”?”コマンドを打って下さい。

USER Vectorの項目に着目します。本来はここは本当にユーザーの定義した割り込みベクターの配置アドレスなのですが、今回は一切割り込みを使用していないので、ここのアドレスにプログラムを転送する事とします。

次にF9ボタンで先にビルドしたロードモジュールを読み込みます。多分Debugフォルダー以下に出来ている、拡張子がabsのファイルです。読み込みが完了すれば、読み込み開始アドレスと終了アドレスが表示されています。

F5ボタンを押すと関数mainから実行が開始されます。
hew_image_45.png ロードモジュールを読み込んだ時にこの図の様なWindowも開いたと思いますが、この画面上でデバックが可能です。画面の左端をダブルクリックするとブレークポイントを設定できます。

黄色くハイライトされている行がPC(プログラムカウンタ)が示す行です。ステップ実行すれば一行づつ進みます。



という訳で実にお手軽なマイコンによるHello Worldでした。

もうご存知かと思いますが、ユーザーアプリケーションの転送はRAMに行われますので、一度電源を落としてしまうと再ロードが必要です。逆にFLASH ROMを使わないので幾らでも書き換えが可能です。
逆にRAMの容量の上限がユーザープログラムで作成できるサイズの上限でもあります。H8/TinyのRAM容量ではかなり苦しいですね。

普通、マイコンの開発では標準入出力がありません。なのでstdioの中の標準入出力を利用する関数を実際に動くようにするには、ユーザー側でそれを実現してやる必要があります。

しかしデバックモニタ上で動かす場合、既にデバックモニタが入出力のインタフェースとしてSCIを利用しているので、ここを標準入出力として使いましょう!と言うのが「組み込み型モニタのカスタマイズ」htmファイルの趣旨なのです。

デバック完了してオリジナルのアプリケーションをROM化する時は、自分で標準入出力を実現する必要があります。詳細はC/C++コンパイラマニュアルに書かれていますので、ご一読ください。



H8マイコン完全マニュアル

H8マイコン完全マニュアル

  • 作者: 藤沢 幸穂
  • 出版社/メーカー: オーム社
  • 発売日: 2000/12
  • メディア: 単行本



C言語でH8マイコンを使いこなす

C言語でH8マイコンを使いこなす

  • 作者: 鹿取 祐二
  • 出版社/メーカー: オーム社
  • 発売日: 2003/10
  • メディア: 単行本



nice!(0)  コメント(1)  トラックバック(0) 

nice! 0

コメント 1

mabo9288

参考にさせて頂きました、ありがとうございます。
by mabo9288 (2012-08-26 20:19) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

※ブログオーナーが承認したコメントのみ表示されます。

トラックバック 0

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。