SSブログ

T-SH2MB用デバックモニタ上のユーザーアプリの作成 [RX&SH&H8]

ユーザープログラムの作成

デバックモニタでは、ユーザープログラムのロード、メモリダンプ、メモリフィル、逆アセンブル、ソースレベルデバック、周辺I/Oの操作、ブレークポイントの設定、ステップ実行、変数watchなど等が出来るわけですが、実行中の変数やメモリの内容を見る事はできません。
必然的にユーザープログラムの中に、変数やメモリの内容を出力する、いわゆるprintfデバックも併用する事になるでしょう。

実は「LOWER.C」の中では、デバックモニタで開いたSCI1を入出力とする低レベル入出力関数”write”と”read”が用意されており、これを使って標準入出力を実現しています。
もっとも利用頻度が高いであろう”printf”と”scanf”がライブラリからモニターにリンクされますので、デバッカー上のユーザープログラムからこれら関数を利用可能となっています。

※ただし、ユーザープログラムにリンクされる訳ではないので、いくらユーザープログラムのソースコードの中に「stdio.h」をインクルードしても、ビルドの段階でリンカーに怒られてしまいます。
結局リンカーは”printf”や”scanf”が一体何処に在るのか判らん!と怒っているのですから、デバックモニタに組み込まれた”printf”や”scanf”の位置を教えてあげる事で解決できます。
以下の一文をstdio.hの代わりに記述します。

#define  scanf   ((int (*)(const char *,...))0x0000581c)
#define  printf  ((int (*)(const char *,...))0x000057e0)



では早速ユーザーアプリケーションを作成してみます。ソースコードはこれです(;^_^ A フキフキ。
#define  printf  ((int (*)(const char *,...))0x000057e0)

void main(void)
{
  printf( "Hello World\n" );

  while( 1 ) ;
}

プロジェクト生成する時のパラメータを書いて置きます。
1.いきなり”main”関数からスタートさせる為に、リンカーのエントリーポイントは”_main”を指定して置きます。

2.セクションは"P"と"C"のみで構いません。

3.このプログラムのスタックポインタも指定しないで置きます。その場合、デバックモニタが適当な値をスタックポインタに設定します。

4."D"セクションの初期化も、"B"セクションのゼロクリアも、"D"セクション"R"セクション間コピーも、必要在りませんね。「dbsct.c」はリンクしなくても構いません。

5.ロードアドレスは、USERセクションが開始する0xFFFFE160として置きます。

デバックモニタ上で実行させた結果が以下です。

※以上、デバックモニタ上で動作するユーザープログラムの作成終了!。

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

SuperHで学ぶμITRON仕様OS―リアルタイムOSの動作原理と実装法がわかる!

  • 作者: 鹿取 祐二
  • 出版社/メーカー: 電波新聞社
  • 発売日: 2005/12
  • メディア: 単行本


英語版?

32‐bit SuperH Microcomputers

32‐bit SuperH Microcomputers

  • 作者: Yukiho Fujisawa
  • 出版社/メーカー: オーム社
  • 発売日: 2005/02
  • メディア: 単行本


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

nice! 0

コメント 0

コメントを書く

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

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

トラックバック 0

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