[Armadillo:07840] Re: Armadillo-420のGPIOの割り込み応答時間について

Takenoshita Koyo email@hidden
2012年 1月 24日 (火) 17:20:48 JST


竹之下です。

GPIOの反応速度を厳密に測定するのは、難しいですね。
そもそも、Linuxの場合、リアルタイムOSではないので、反応速度が
一定ではありません。

処理としては、以下のルートを通ります。

0. アプリがpoll()またはselect()で割り込み待ちに入る
1. 割り込み発生
2. カーネルの割り込みハンドラが呼ばれる
linux-2.6.26-at/drivers/gpio/gpiolib.c::gpio_sysfs_irq()
 -> schedule_work() してすぐ終了
3. shceduleされたタスクが呼ばれる
linux-2.6.26-at/drivers/gpio/gpiolib.c::gpio_notify_sysfs()
 -> linux-2.6.26-at/fs/sysfs/file.c::sysfs_notify_dirent()
  -> wake_up_interruptible()
4. アプリがpoll()またはselect()から抜ける

遅延が発生する要因としては、以下の箇所があります。

A. 1. と 2. の間
割り込みハンドラ内で長い時間処理を行うような、行儀の悪ドライバが
いた場合、割り込みが発生してから、割り込みハンドラが呼ばれるまでに
遅延が発生する可能性があります。

B. 2. と 3. の間、3. と 4. の間
ここで、優先度の高いプロセスが他にある場合、そのプロセスが実行されるので、
遅延が発生する可能性があります。
オーダーとしては、10msec単位です。
(この間、他の割り込みが発生した場合、そちらの処理に時間を取られます)

影響としては、B.(プロセススイッチ)の影響が大きいと思います。
対策としては、速い反応速度が必要なプロセスの優先度を上げてください。

具体的な回答ができず申し訳ありません。

(2012年01月20日 17:34), 岸本 考史 wrote:
> 初めまして、岸本と申します。
> 
> Armadillo-420のGPIO sysfsを使った割り込みについて、
> 応答時間を知りたいのですが、どなたか教えていただけないでしょうか?
> 計算方法などございましたら、教えていただけると幸いです。
> 
> 以上。宜しくお願い致します。
> 
> _______________________________________________
> armadillo mailing list
> email@hidden
> http://lists.atmark-techno.com/cgi-bin/mailman/listinfo/armadillo
> 


-- 
Koyo Takenoshita




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