[Armadillo:04173] Re: a-220 gpioctrlによる割り込み制御

Takenoshita Koyo email@hidden
2009年 4月 3日 (金) 19:00:33 JST


竹之下です。

> 先日の質問ですが、私の実験方法に問題がありました。
>
> (前回)
> GPIO0のピンに対してinput/outputを行っていたため、CPUとGPIO用レジスタ間だ
> けのやりとりになっていました。
> 
> (今回)
> GPIO0とGPIO1のピンをジャンパでショートさせる。
> GPIO0のピンにinputで割り込みを登録し、GPIO1のピンにoutputでlow/highを出
> 力させる。
> GPIO1の出力がGPIO0の入力になり、GPIO0がlow/highのedgeを検知することで割
> り込み処理が発生した。
とのことですが、GPIOのデバイスドライバにも一部問題がありました。

[armadillo ~]# gpioctrl --set=gpio0 --mode=input --type=rising-edge --debounce --handler="echo interrupted"
というコマンドを実行したとき、起動直後の一回目だけウェイトせずにすぐ戻ってきてしまいます。

二回目以降は、期待した通り、GPIOピンのレベル変化が無い間はウェイトし、
立ち上がりエッジが入った時に割り込みが入り戻ってきます。
この現象は、"--debounce"を指定しない場合は発生しません。

修正パッチを添付します。

以下のようにカーネルのソースコードに適用して、カーネルイメージを再構築してください。
[PC ~]$ ls
linux-2.6.12.3-a9-17 linux-2.6.12.3-a9-17-fix-gpio-irq.patch 
[PC ~]$ cd linux-2.6.12.3-a9-17
[PC ~]$ patch -p1 < ../linux-2.6.12.3-a9-17-fix-gpio-irq.patch


ご報告いただきまして、ありがとうございました。

-- 
Koyo Takenoshita
-------------- next part --------------
テキスト形式以外の添付ファイルを保管しました...
ファイル名: linux-2.6.12.3-a9-17-fix-gpio-irq.patch
型:         text/x-patch
サイズ:     1186 バイト
説明:       無し
URL:        <http://lists.atmark-techno.com/pipermail/armadillo/attachments/20090403/b037654f/attachment.bin>


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