At Mon, 17 Jan 2005 00:18:54 +0900, Ktw wrote: > > ktwです。 > > 今、CPUのマニュアルを見ながら、リンカースクリプトの.vectorセクションに > 割り込みベクターをズラズラと書いていて思ったのですが。 > gdbでRAM上のコードをデバッグする際の割り込みの扱いはどうなるのでしょうか? > 現在、stubとしてredbootを使用しether-net経由でgdbを使っています。 > stub側でもなんらかの割り込みを使っていると思うのですが、 > リンカースクリプト内に割り込みベクタを記述することによって、 > 元々stubで使用している割り込みベクタを上書きしてしまうのではないか?と疑問が湧きました。 > > また、内蔵FLASH-ROMの書き換え回数を極力少なくする為にRAM上にコードを転送したいのですが、 > コード本体はRAM上に置けても、割り込みベクターが毎回転送されることによって、 > 結局、FLASH-ROMの書き込みが発生してしまうのではないでしょうか? > どなたかお教え頂ければ幸いです。 内蔵RAM上ににジャンプテーブルがあるので、そこを書き換えることになります。 具体的には0xfffd20 + ベクタ番号 X 4 のアドレスに jmp @inthandler の命令 コードを書き込むと、そのベクタ番号の割り込みが発生した時に inthandler へ ジャンプするようになっています。 戻る時は素直に rte です。 このへん、いいサンプルがあればいいんですが…TOPPERS/JSPのスタートアップは どうかなあ? あと、0xfffd20は違ってるかもしれないので、実機でベクタテーブルをダンプして 確認してください。 #ということを http://sourceforge.jp/projects/ecos-h8/ のフォーラムににも #書いた記憶があります。 #ちゃんとまとめていないのが悪いんですが。 -- Yoshinori Sato <ysato@xxxxxxxxxxxxxxxxxxxx>