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 ファイルを見つけることができませんでした)。 .
初心者の質問で申し訳ありませんが、アドバイスをいただければ幸いです。
前もって感謝します