[H8-ML(2833)] Re:H8/3067Fモニターデバッガソフトモード5の各エリアの意味がわかりません
From: "Masanobu Suzuki" <signas@xxxxxxxxxxxxxxx>
Date: 2003年02月22日(土)11時49分56秒
> このAKI-H8 3067Fに付属していたモニターデバッガソフトの冊子にあったんですが
> H'200000〜ユーザーベクトルエリア
> H'200100〜ユーザーエリア
> H'FFEF20〜内蔵RAMエリアとなっております。
>
> このユーザーベクトルエリアとユーザーエリアと内蔵RAMエリアの違いがよくわ
か
> りません。

ユーザーベクトルエリア、ユーザーエリアは外部RAMです。内蔵RAMもRAMですから
この3者は全てRAMであるという点に注意してください。

つまり、このエリアは随時書き換えできると言うことになります。

1)ユーザー(プログラム&ワーク)エリア

ユーザーが作ったプログラムを配置するエリアのことです。
しかし、この部分はRAMですから電源を投入したままでは、まだ何も書かれていま
せ
ん。そこで、このエリアに「あなたが作ったプログラム」を「モニタプログラム」が
ダウン
ロードしてくれます。(ダウンロードはあなたがモニタに転送を指示します)

このエリアは普通十分な大きさ(メモリ空間)を与えますから、通常はユーザーの
プログラム部分と、そのワーク領域(変数や配列など)も同居させます。

ワークエリアとして内臓RAMエリアを使ってはいけない(できない)ことはありませ
んが、
このエリアは小さいためモニタが自分が動くために必要ですから、好ましくありませ
ん。

2)内臓RAMエリア

モニタもそれ自体一つのソフトですから、ワークエリアを必要とします。
それほど大きな領域を使わないので普通この内臓RAM(4Kバイト)を使います。
但し、モニタが全て使う訳ではないのでユーザーが使える領域は多少残っています。

3)ユーザーベクトルエリア

意味としては、「ユーザーが定義する仮想の割り込みベクタテーブル・エリア」のこ
とです。
割り込みを使わなければ定義する必要はありません。仮想という点に注意してくださ
い。
このエリアも前述のようにRAMですから、電源投入後、モニタを使ってこのテーブル
を
配置します。(普通はプログラムの一部としてロードされます)

このテーブルにおかれるベクタアドレスは、CPUで本来定義されている割り込みベク
タ
テーブル(マニュアル参照)とちょうど H'200000分 オフセットしています。

例えばタイマ割り込みを使うとします。タイマが割り込みを発生すると、先ずCPU
で決め
られている割り込みベクタテーブルに飛びます。この飛び先のアドレスは変更できま
せん。
どうしてもそこへ飛びます。
次にCPUはこの飛び先に書かれている命令を実行します。
通常はこの部分には、「あなたが作った」割り込み関数の先頭アドレスへジャンプす
るよう
に書かれています。

しかし、ユーザーが割り込み関数を追加・削除しようとすると、関数のジャンプ先が
変わり
ますからこのエリアをその都度書き換えなければなりません。(このエリアはROMで
すから。)
割り込み関数をいじらなくても、一般の関数を変更しても割り込み関数の先頭アドレ
スは
その度に変わりますから、やはり同様に書き換えなければなりません。

そこで、ROMであるこのエリアにはユーザーベクトルエリアに単純にジャンプするよ
うに書か
れています。こうすればユーザーの割り込み関数のアドレスが変更されても、その
ユーザー
べクトルエリアの内容を変更すれば良いことになり、システム側(モニタ側)はユー
ザーの
影響を受けないことになります。

このように本来ROM側で固定された割り込み先を、そこが叩かれたら全てRAMの所定の
エリアに飛ばしてしまうやり方になります。ちょうど転送電話のようなものと思えば
良いかも。
但し、割り込みが2重化されていますから、厳密に言うと応答性に差がでます。


鈴木

スレッド概略
[2831(R)](起点)
 └[表示中]


投稿順に移動
[←前の記事へ(P)]
[→次の記事へ(N)]


リスト表示へ
[このスレッド(T)]
[本記事の前後(L)]