[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 メーリングリストの案内