問題タブ [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.

0 投票する
2 に答える
2116 参照

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と、問題を再現するサンプルカーネルモジュールの両方を含めました。

おっと -

モジュール-

助けてくれてありがとう。私はこれについて数日間頭を悩ませてきました、そしてどんな提案にもオープンです。

0 投票する
1 に答える
3045 参照

linux-device-driver - LinuxでI2Cドライバーモジュールを最適に実装する場合

現在、Linuxを実行している組み込みシステム内でI2Cバスに接続されている2つのデバイスを扱っています。最初のデバイスであるカメラに既存のドライバーを使用しています。2番目のデバイスについては、2番目のデバイスと通信できるユーザースペースプログラムを正常に実装しました。これまでのところ、両方のデバイスは幸せに共存しているようです。ただし、ほとんどすべてのI2Cデバイスには独自のドライバモジュールがあります。したがって、私はドライバーモジュールの利点は何であるか疑問に思っています。次のスレッドを見てみました...

Linuxカーネルモジュールはいつ作成する必要がありますか?

...しかし結論はありません。

したがって、ユーザースペースの実装よりもI2Cドライバーモジュールを作成することの利点は何でしょうか。

よろしく、ステファン

0 投票する
2 に答える
9023 参照

linux - Linuxカーネル/ドライバー開発の新機能

最近、Linuxを実行している組み込みデバイスのドライバーの開発を始めました。

今まで私はLinuxの内部についてしか読んでいませんでした。
ドライバー開発の経験がないので、最初の一歩を踏み出すのは少し難しいと感じています。

  • カーネルのソースコード(v2.6.32)をダウンロードしました。
  • Linuxデバイスドライバー(3e)を読んだ(読み飛ばした)
  • StackOverflowで関連する投稿をいくつか読みました。
  • Linuxには「モノリシック」アプローチがあることを理解しています。
  • カーネルを構築しました(menuconfigなどに既存のドライバーが含まれています)
  • kconfigファイルとmakefileファイルの基本を知っているので、問題はないはずです。


誰かがカーネルソースコードのさまざまなディレクトリの構造(つまり、相互リンク)を説明できますか?

言い換えると、ソースコードファイルが与えられた
場合、関連するコードについて他のどのファイルが参照するか

(「#include」-sは部分的なアイデアを提供します)

誰かが私がより良いアイデアを得るのを手伝ってくれませんか?
どんな助けでも大歓迎です

ありがとうございました。

0 投票する
3 に答える
12752 参照

linux-kernel - Linux (ioctl) のカーネル空間からユーザー空間のコールバック関数を呼び出すことは可能ですか?

ユーザー空間アプリケーションが関数へのポインターをカーネル空間ドライバーに送信できるように、Linux で ioctl インターフェイスを拡張することは可能ですか?

特に、ユーザーが制御できる方法でストリームを処理する方法を考えていますが、カーネルで実行しています。これらの操作をカーネル モジュールにアタッチすることもできますが、開発中にカーネルをいじる必要がないため、開発がはるかに簡単になります。

より具体的には、これは次のプロセスになります。

  1. データはドライバーによってバッファーに読み取られます。
  2. データは、これらのユーザー定義関数によって適切に処理されます。
  3. おそらくいくつかのハードウェアブロックを使用して、さらに処理が行われます。
  4. データはユーザー空間アプリケーションによって使用されます。
0 投票する
1 に答える
2430 参照

linux-device-driver - ISR としてドライバー コードに関数を登録する方法

Linuxカーネル開発に関する以前の質問から得たフィードバックに続いて、

私は、既存のドライバーと比較し、そのコードから大幅に「借用」することによって (Linux カーネル v2.6.32 で) ドライバーを作成しました。ドライバーは正常に登録されています。init() と probe() は正常に動作しています。周辺機器のレジスタにもアクセスできます。:-)

しかし、私はIRQ/ISRについて少しぼんやりしています。周辺機器は入力デバイスであり、GPIO ピンで割り込みを発生させます。

現在の状態から先に進み、IRQ を処理して ISR 関数を実行するにはどうすればよいですか?

0 投票する
4 に答える
2724 参照

linux - Linux ドライバーでサスペンド時にコールバックを登録するにはどうすればよいですか?

Linux ドライバーを作成しています。システムがスリープ状態になったときに呼び出されるコールバック関数を登録したいと考えています。これを行うためのAPIは何ですか?

ありがとう。

0 投票する
6 に答える
78609 参照

linux - /dev/inputX をキャプチャする Linux キーボード イベント

キーボードイベントをキャプチャしようとしていました。たとえば、キーロガーを最初から掘り下げたいとします。2時間の戦いの後、私は次のことを見つけました

しかし、私がしようとしたとき

出力がありませんでした

もう少し検索した後、おそらくXorgの何かがそれをブロックしていると考えています。

それで、これ以上の情報は?? そして最後に、そのファイルから入力を読み取るにはどうすればよいですか?? または、キーボードイベントをキャプチャする他の方法はありますか??

0 投票する
1 に答える
250 参照

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しましたが、それを参照しているソースファイルは表示されませんでした。グーグルで検索したところ、結果が返されませんでした。誰か助けてもらえますか?

0 投票する
1 に答える
695 参照

linux-kernel - Linux デバイス ドライバーは、DMA が device_remove() 関数で終了するのを待つことができますか?

PCI デバイス用の Linux デバイス ドライバーを作成しました。このデバイスは DMA 操作を実行します。DMA 操作の実行中にプログラムがクラッシュすると、問題が発生します。

実際、クラッシュすると、device_remove()関数はシステムによって呼び出されます (呼び出されたかのようclose()に)。この関数は、PCI デバイスが使用するメモリ領域をクリーンアップし、割り当てられたメモリを正しく解放します。つまり、通常の状況では正しく機能します。

ただし、DMA が実行されている場合、実際に終了すると、解放されたデバイス データにアクセスできなくなるため、DMA のクリーンアップを実行できなくなります。簡単な解決策は、close() 関数で待機することです。(これは私の理解ですが、DMA関数の最後の部分が実行されることはありませんか?)

DMA がデバイス ドライバのdevice_remove()(別名) 関数で実際に終了するのを嘆くのは良い考えですか? close()この問題に対処する他の手段はありますか?

0 投票する
1 に答える
762 参照

linux - フレームバッファが利用できません

2.6.31-14-generic #48-Ubuntu でフレームバッファを使用するアプリケーションを実行しようとしています。

次のエラーを取り除くには、フレームバッファ デバイスをインストールするだけです。

私はグーグルで検索し、Grub2でそれを行うことを示すいくつかのリソースを見つけましたが、それらをシームレスにフォローしましたが、何も得られませんでした.

何か案は?

ありがとう