SSブログ

インタフェースのSH2おまけ 7 デバックモニタを作ったぞ [RX&SH&H8]

その前に、
このボードって動作モードが固定されているんですね。
つまり、モード2に固定されているために、シングルチップモードは諦めないといけない。RAMは要らないからポートが沢山欲しい人には、向かないですね。

で、デバックモニタはとりあえずRAM無し+printf+scanf版を作りました。
このブログの左のダウンロードのところから落とせます。が!
お約束の下記のページの同意書をよく読んで、納得できないと利用できません。
http://japan.renesas.com/fmwk.jsp?cnt=sample_program.htm&fp=/support/seminar/child_folder/&dscl=disclaimer1.html&title=%E3%82%B5%E3%83%B3%E3%83%97%E3%83%AB%E3%83%97%E3%83%AD%E3%82%B0%E3%83%A9%E3%83%A0

ワークスペースごと置いてあります。ただ、私が使っているSHCはバージョン7なので、InterfaceのCD-ROMに収録されているバージョン9で利用した場合、最初にバージョン変更をするか聞いてきますので、そのままバージョンを9に上げてしまってください。バージョン7のツールチェインを持っていない人がほとんどだろうから。

ワークスペースの中に、「printf_test」と言うプロジェクトが有りますので、これを参照していただければ、デバックモニタ付属printf、scanf機能の使い方が判ると思います。ただし、SHC以外の方は、まともに使えないと思う。


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

nice! 1

コメント 6

宮前

デバックモニタをダウンロードさせてもらい、書き込んだところ動作しました。
(オープニングメッセージが出た)
LEDチカチカをデバックモニタ配下で動かそうと元のサイズを見ると結構大きいです。
昔(3664や3048で使用した)のように、スターアップルーチンとベクターテーブル(いずれもASM)
とCのメイン、XXX.SUBの形式で生成するのがあればコンパクトになりいいのですが、SH2のサンプル何処かにありませんかね。
by 宮前 (2006-04-29 14:53) 

hamayan

ベクターテーブルも、スタートアップルーチンも、Cでやったからといって、ASMと比べて特に極端に大きくなる理由はないでしょう。
ただ、HEWのウイザードで作成するベクターテーブルは、使わない物まで書いてあるので、不必要な物を削除すれば良いのです。

ところでLEDチカチカって割り込み使うんですか?。
割り込み使わないならベクターテーブル自体が要らなくなりますね。また、Cの初期化処理も必要無ければ、main関数に入る前の処理自体も削除できます。
mainだけ作って、エントリーポイントを指定して、デバッカーにロードして、GOコマンドで動きます。
by hamayan (2006-04-29 15:56) 

宮前

LEDチカチカで割り込みは使いませんが、いすれ使用する予定なので。
HEWの正統的な使い方は、もともと避けていたので使いこなせていません。
by 宮前 (2006-04-29 21:26) 

hamayan

割り込みベクターと、割り込み関数は、こんな感じで書けば良いでしょう。
void PowerOnReset(void);
void ManualReset(void);
void abort(void);
void CMI0_Int(void);
void main(void);

/*ベクターテーブル*/
#pragma section VECT
void (*const VEC_TBL[])(void) =
{
PowerOnReset, /*Vector 0 Power On Reset Vector*/
(void *)0, /*Vector 1 Power On Reset SP*/
ManualReset, /*Vector 2 Manual Reset Vector*/
(void *)0, /*Vector 3 Manual Reset SP*/
abort, /*Vector 4 一般不当命令*/
(void *)0, /*Vector 5 システム予約*/
abort, /*Vector 6 スロット不当命令*/
(void *)0, /*Vector 7 システム予約*/
(void *)0, /*Vector 8 システム予約*/
/* ・ */
/* ・ */
/* ・ */
CMI0_Int, /*Vector 144 CMT CMI0割り込み*/
};

void PowerOnReset(void)
{
/*初期化処理云々*/

main(); /*main*/
/*最後に無限ループ*/
while(1) ;
}

void ManualReset(void)
{
/*初期化処理云々*/

PowerOnReset();
}

#pragma interrupt( CMI0_Int )
void CMI0_Int(void)
{
/*CMT0タイマー割り込み処理*/
}

コンパイルすると出来るセクションCVECTを、リンカーの設定で適当なアドレス、たとえばROM化するなら0から、デバックモニタの仮想ベクタに置くならUSER領域をしていすれば良いのです。この辺はH8の設定と変わらないので、ブログではなくddo.jpの方のHEWだかHTERMの記事に書いて置いたような気がします。
by hamayan (2006-04-29 22:09) 

宮前

お手数かけます。 時間見て、挑戦してみます。
by 宮前 (2006-04-30 06:42) 

宮前

試してみました。おかげさまで、何とか動くようになりました。 割り込みはこれからです。HEWとはもう少し仲良くしたほうがよさそうです。

トラ技2001年6月号(特集SH-2入門)の3章(p224付近)にスターアップのサンプルソース(当時日立コンパイラベース)が書いてありました。
これを使用しても、RAMで動くようになりました。こちらは割り込み処理もOKです。 デバックモニターに組み込んだ、print処理もOKなのでこれで一安心です。
by 宮前 (2006-05-05 10:51) 

コメントを書く

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

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

トラックバック 0

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