[Suzaku:01833] Re: Linuxの割り込みでハンドラがリソースを占有

mizo email@hidden
2010年 7月 7日 (水) 10:25:44 JST


溝渕です。

Nobuaki Sugishima wrote:
> Linuxで割り込みに関するデバイスドライバが不調です。
> 
> まずEDKの段階では割り込みは正常に動作しています。割り込み源は繰り返し 
> 10Hzのタイマーです。

追加した割り込みは、SILのタイマ割り込みを参考に追加したものですか?独自
に追加したものですか?

SILを参考にした場合は、ISR(Interrupt Status Register)に割り込み要因を書
き込み、割り込みを止める処理を行なわなければなりません。

これは、bbootのソースから確認することができます。

int timer_interrupt_handler(void * baseaddr_p)
{
	Xuint32 IntrStatus;

	IntrStatus = OPB_SIL00_mReadReg(XPAR_OPB_SIL00_0_BASEADDR,
					OPB_SIL00_INTR_ISR_OFFSET);
	slot();
	OPB_SIL00_mWriteReg(XPAR_OPB_SIL00_0_BASEADDR, OPB_SIL00_INTR_ISR_OFFSET,
			    IntrStatus);

	return 0;
}

上記コードでは、

1. OPB_SIL00_mReadReg()で割り込み要因を読み込む
2. OPB_SIL00_mWriteReg()で割り込み要因をISRに書き込む

という処理を行なっています。この処理を行なわなければ、割り込みが入りっぱ
なしになります。

以上ご確認ください。




suzaku メーリングリストの案内