問題タブ [linux-device-driver]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
linux - Linux 2.6.26でエッジトリガー割り込みを登録できないのはなぜですか?
初めてのポスターですので、バカを許してください。
2.6.22から2.6.26へのMPC83xx用に構築されたLinuxカーネルへのカスタムCPLDドライバーの移植に取り組んでおり、予期しないエラーが発生しています。ドライバーは.22カーネルでは正常に動作しますが、request_irqへの呼び出しで.26カーネルがチョークします。行動に変化があった理由、さらにはそれを解決するために私が何をする必要があるのかを誰かが知っていますか?
で呼び出されるkernel/irq / manage.cへの呼び出しへのOopsのソースを追跡しましたがdesc->chip->enable(irq)
、arch / powerpc /sysdev/setup_irq()
での呼び出しで有効にする関数ポインターがクリアされているようです。ipic_set_irq_type()
ipic.c。残念ながら、理由はわかりません。
Oopsと、問題を再現するサンプルカーネルモジュールの両方を含めました。
おっと -
モジュール-
助けてくれてありがとう。私はこれについて数日間頭を悩ませてきました、そしてどんな提案にもオープンです。
linux-device-driver - LinuxでI2Cドライバーモジュールを最適に実装する場合
現在、Linuxを実行している組み込みシステム内でI2Cバスに接続されている2つのデバイスを扱っています。最初のデバイスであるカメラに既存のドライバーを使用しています。2番目のデバイスについては、2番目のデバイスと通信できるユーザースペースプログラムを正常に実装しました。これまでのところ、両方のデバイスは幸せに共存しているようです。ただし、ほとんどすべてのI2Cデバイスには独自のドライバモジュールがあります。したがって、私はドライバーモジュールの利点は何であるか疑問に思っています。次のスレッドを見てみました...
Linuxカーネルモジュールはいつ作成する必要がありますか?
...しかし結論はありません。
したがって、ユーザースペースの実装よりもI2Cドライバーモジュールを作成することの利点は何でしょうか。
よろしく、ステファン
linux - Linuxカーネル/ドライバー開発の新機能
最近、Linuxを実行している組み込みデバイスのドライバーの開発を始めました。
今まで私はLinuxの内部についてしか読んでいませんでした。
ドライバー開発の経験がないので、最初の一歩を踏み出すのは少し難しいと感じています。
- カーネルのソースコード(v2.6.32)をダウンロードしました。
- Linuxデバイスドライバー(3e)を読んだ(読み飛ばした)
- StackOverflowで関連する投稿をいくつか読みました。
- Linuxには「モノリシック」アプローチがあることを理解しています。
- カーネルを構築しました(menuconfigなどに既存のドライバーが含まれています)
- kconfigファイルとmakefileファイルの基本を知っているので、問題はないはずです。
誰かがカーネルソースコードのさまざまなディレクトリの構造(つまり、相互リンク)を説明できますか?言い換えると、ソースコードファイルが与えられた
場合、関連するコードについて他のどのファイルが参照するか(「#include」-sは部分的なアイデアを提供します)
誰かが私がより良いアイデアを得るのを手伝ってくれませんか?
どんな助けでも大歓迎です
ありがとうございました。
linux-kernel - Linux (ioctl) のカーネル空間からユーザー空間のコールバック関数を呼び出すことは可能ですか?
ユーザー空間アプリケーションが関数へのポインターをカーネル空間ドライバーに送信できるように、Linux で ioctl インターフェイスを拡張することは可能ですか?
特に、ユーザーが制御できる方法でストリームを処理する方法を考えていますが、カーネルで実行しています。これらの操作をカーネル モジュールにアタッチすることもできますが、開発中にカーネルをいじる必要がないため、開発がはるかに簡単になります。
より具体的には、これは次のプロセスになります。
- データはドライバーによってバッファーに読み取られます。
- データは、これらのユーザー定義関数によって適切に処理されます。
- おそらくいくつかのハードウェアブロックを使用して、さらに処理が行われます。
- データはユーザー空間アプリケーションによって使用されます。
linux-device-driver - ISR としてドライバー コードに関数を登録する方法
Linuxカーネル開発に関する以前の質問から得たフィードバックに続いて、
私は、既存のドライバーと比較し、そのコードから大幅に「借用」することによって (Linux カーネル v2.6.32 で) ドライバーを作成しました。ドライバーは正常に登録されています。init() と probe() は正常に動作しています。周辺機器のレジスタにもアクセスできます。:-)
しかし、私はIRQ/ISRについて少しぼんやりしています。周辺機器は入力デバイスであり、GPIO ピンで割り込みを発生させます。
現在の状態から先に進み、IRQ を処理して ISR 関数を実行するにはどうすればよいですか?
linux - Linux ドライバーでサスペンド時にコールバックを登録するにはどうすればよいですか?
Linux ドライバーを作成しています。システムがスリープ状態になったときに呼び出されるコールバック関数を登録したいと考えています。これを行うためのAPIは何ですか?
ありがとう。
linux - /dev/inputX をキャプチャする Linux キーボード イベント
キーボードイベントをキャプチャしようとしていました。たとえば、キーロガーを最初から掘り下げたいとします。2時間の戦いの後、私は次のことを見つけました
しかし、私がしようとしたとき
出力がありませんでした
もう少し検索した後、おそらくXorgの何かがそれをブロックしていると考えています。
それで、これ以上の情報は?? そして最後に、そのファイルから入力を読み取るにはどうすればよいですか?? または、キーボードイベントをキャプチャする他の方法はありますか??
networking - Depmod-rt73モジュールの未解決のシンボル
2.4.37.9カーネルを搭載したRedHatLinux 7.1マシンにワイヤレスネットワークカード(D-Link DWL-G510)用のLinuxドライバーをインストールしようとしています。sourceforgeサイトからシリアルモンキードライバーをダウンロードし、モジュールを正常にコンパイルできました。ただし、「make install」を実行すると、makeスクリプトは「depmod-a」コマンドを実行し、「/ lib / modules / 2.4.37.9 / extra/rt73.oの未解決のシンボル」というメッセージが表示されます。
次に、「depmod -e」コマンドを実行して未解決のシンボルを表示すると、次の情報が表示されます。
request_firmware_Rsmp_38ce5074
release_firmware_Rsmp_33934162
上記の情報をgrepしましたが、それを参照しているソースファイルは表示されませんでした。グーグルで検索したところ、結果が返されませんでした。誰か助けてもらえますか?
linux-kernel - Linux デバイス ドライバーは、DMA が device_remove() 関数で終了するのを待つことができますか?
PCI デバイス用の Linux デバイス ドライバーを作成しました。このデバイスは DMA 操作を実行します。DMA 操作の実行中にプログラムがクラッシュすると、問題が発生します。
実際、クラッシュすると、device_remove()
関数はシステムによって呼び出されます (呼び出されたかのようclose()
に)。この関数は、PCI デバイスが使用するメモリ領域をクリーンアップし、割り当てられたメモリを正しく解放します。つまり、通常の状況では正しく機能します。
ただし、DMA が実行されている場合、実際に終了すると、解放されたデバイス データにアクセスできなくなるため、DMA のクリーンアップを実行できなくなります。簡単な解決策は、close() 関数で待機することです。(これは私の理解ですが、DMA関数の最後の部分が実行されることはありませんか?)
DMA がデバイス ドライバのdevice_remove()
(別名) 関数で実際に終了するのを嘆くのは良い考えですか? close()
この問題に対処する他の手段はありますか?
linux - フレームバッファが利用できません
2.6.31-14-generic #48-Ubuntu でフレームバッファを使用するアプリケーションを実行しようとしています。
次のエラーを取り除くには、フレームバッファ デバイスをインストールするだけです。
私はグーグルで検索し、Grub2でそれを行うことを示すいくつかのリソースを見つけましたが、それらをシームレスにフォローしましたが、何も得られませんでした.
何か案は?
ありがとう