4

Linux (カーネル 2.6.31) が組み込まれたシステムで作業しています。

内部は AT91SAM9G20 チップで、一部のピンは外部に転送されています。

今、私はそれらを GPIO 入力として使用したいと考えています。

ファイルシステムを介した GPIO の使用に関する gpio.txt のドキュメントを読みましたが、ここまでは非常にうまく機能しています。いくつかのスイッチを gpio ピンに接続しました。結果は/sys/class/gpio/gpioX/value. しかし今は、ビジー状態で待機することなく、変更に対応したいと考えています。(つまり、"Switch1 が押されました" をエコーし​​ます)。

ここで割り込みが必要だと思いますが、独自のカーネル ドライバーを作成しない限り、それらの使用方法を見つけることができませんでした。私は Linux と C に比較的慣れていないので (通常は Java でプログラミングします)、sysfs 経由でも割り込みを処理したいと考えています。しかし、私の問題は、GPIO ディレクトリに「エッジ」ファイルがないことです (これは、カーネル バージョン 2.6.33 以降のみであるためだと思います)。そうですか?「エッジ」の代わりにuevent、 で説明されていないファイルがありますgpio.txt

gpio.txt のドキュメントには、「gpio_keys」という標準カーネル ドライバーが記載されていました。これを私の問題に使用することは可能ですか?

ユーザー空間プログラムがカーネルタスクを操作できるようにするよりも、このドライバーを使用する方が良いと思います。独自のドライバーを作成するための多くのコードスニペットを見つけましたが、600 個のgpio.hファイルのどれを含めるか、ライブラリーを参照する方法を見つけることさえできませんでした (クロスコンパイラーは gpio.h ファイルを見つけることができませんでした)。 .

初心者の質問で申し訳ありませんが、アドバイスをいただければ幸いです。

前もって感謝します

4

1 に答える 1

0

これを行う方法の例については、これを参照してください。基本的に、欠けているのはselectまたはpollシステムコールの使用です。

于 2011-12-09T18:12:41.753 に答える