(toppers-users 1525) Re: TOPPERS/FI4 の割り込みサービスルーチンについて

Kominami Yasuo NBC00224 @ nifty.com
2004年 7月 7日 (水) 12:26:45 JST


小南です。

On Wed, 7 Jul 2004 10:35:29 +0900 (JST)
倉本 雅史 <mkuramoto_1967 @ yahoo.co.jp> wrote:

> 倉本です。
> 
> --- Kominami Yasuo <NBC00224 @ nifty.com> からのメッセージ

> > 倉本さんは割込みハンドラと割り込みサービスルーチンを混
> 同されている
> > のではないかと思いました。
> 
> 確かにそうかもしれません。
> 別のITRON実装だと何も考えずにacre_isrで割り込みベクタを
> 設定して使えていたもので。(^_^;
> 
> > 今回倉本さんがなさりたいのは、割込みハンドラの定義と割
> 込みサービス

** Cut quoted 2 lines by the mail filter. **
	(略)

> 理想を言うと、移植性の高くなるacre_isrの方が私にとっては
> よいです。
> 
> 小南さんのご指摘でμITRON4.0仕様 Ver4.02.00を読み直した
> ところ、割り込みハンドラも割り込みサービスルーチンも、結
> 局は実装定義になっているようです。
> 
> TOPPERS/FI4では、この両者をどう定義、実装しているのでし
> ょうか?
> 

** Cut quoted 3 lines by the mail filter. **

TOPPERS/FI4はこの4月にリリースされたばかりで、このMLでも
FI4に関する質問は倉本さんが初めてです。

私自身もまだ最新リリースを入手して調べはじめたばかりであり、FI4での
プログラミングもまだしていません。
現在のFI4のリリースに含まれるドキュメントは、未完成と言うよりも間違っ
たバージョンのものが紛れこんでいるのではないかと思えるぐらいであり、
倉本さんのおっしゃるように、問題の部分の説明はありません。

したがって以下は推測ですので、それを承知の上で聞いて下さい。

kernel/interrupt.cを見る限り、割込みハンドラはJSP
と同じだと思います。
割込みサービスは、特別な割込みハンドラから起動されます。
割込みサービスは、この割込みハンドラが登録されている割込みに対してしか
登録できません。
この割込みハンドラは依存部で定義されており、これをdef_inhで登録
するのは汎用性があるとはいえません。

ATT_ISRで静的に定義するときには内部でこの割込みハンドラが登録さ
れます。

したがって、割込みサービスルーチンはATT_ISRで静的に登録すること
を基本とし、プログラム実行中に必要になった時に限り、(a)cre_isr
で、(すでに割込みサービスルーチンを登録した割込みに対して)割込みサー
ビスルーチンを「追加する」とするとした方がいいのではないでしょうか。

これはμITRON4.02仕様の範囲内であり、他の実装でも成り立つと思
います。

----------- 
小南 靖雄
ykominami @ nifty.com
(NBC00224 @ nifty.com)