[H8-ML(2491)] Re: 初めましてでTrap教えて
From: Yoshinori Sato <qzb04471@xxxxxxxxxxx>
Date: 2002年11月28日(木)00時20分39秒
At Wed, 27 Nov 2002 16:01:29 +0900,
館野雄治 wrote:
> 
> たろすけです。
> 
> > 蛇足ですけど・・・
> > TRAPはRTOSに使うと非常に便利です。
> > 通常RTOSでタスクディスパッチャが動くタイミングとして
> > タイマーを使いますが、ユーザータスクでディスパッチしたいときなんかは
> > TRAPを使用します。つまりシステムコールですね。
> > こうすると、タイマー割り込みと同じレベル(ソフトウェア割り込み)で
> > カーネルに制御を渡すことができます。
> 
> 私の場合はフラグを落さない要因の割り込みを許可する事でディスパッチャを起
> 動してます。trapを使えればスマートだったんでしょうけどtrapでは割り込み禁
> 止状態でもtrapされてしまって遅延ディスパッチが実現できないようだったもの
> で...
> # それともtrapもマスクされるのかなぁ...試したわけじゃないからアレだけど。

コメント部分に返事をするのもなんですが…
割り込み禁止でもtrapされます。

UI bit使ってなければ、こんな感じで逃げられると思いますが。
trap_entry:
	push.w	r0
	mov.w	@sp,r0
	bpl	int_enabled
	pop.w	r0
	rte
int_enabled:
;割り込み許可でtrap実行

> 
> trap使うにしても実際の割り込みを使うにしても、ディスパッチャを割り込みハ
> ンドラにしておくとスタックを切替えるだけでコンテキストスイッチができるの
> でアセンブラ部分が少なく済んでいいんですけどね。

そうですね。
私もそれ以外の方法は使った事ないです。

-- 
Yoshinori Sato
<qzb04471@xxxxxxxxxxx>
スレッド概略
[2470(R)](起点)
 └[2484(U)]
   └[表示中]
     └[2492(1)]


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


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