問題タブ [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 - カーネルプログラミングの学習
lLinuxカーネルプログラミングを学びたいです。
そのための出発点は何でしょうか?対象とするより単純な問題のいくつかは何でしょうか?
c++ - USB RNDIS デバイス ドライバーを移植するにはどうすればよいですか?
まず、私はこの種の仕事の初心者です。
XP/2000/Vista でのみ動作する一部のハードウェア用のUSB rndisデバイス ドライバーがあります。しかし、私はこれを CE または Linux に移植したいと考えており、ベンダーも開発者はそうすべきだと言っています。
要約すると、XP ドライバーと、ドライバーが持つインターフェイス/エンド ポイント構成があります。そして、私は関連する2つの質問があります:
IP 番号を使用してデバイスと通信するためにドライバーを作成する必要があるのはなぜですか? Windows はデフォルトでそれをサポートしていませんか?
その場合、ドライバを別の OS に移植するには何を知る必要がありますか? windriver を使用して構成を取得しましたが、次に何ができますか? デバイスについて他に知っておくべきことは何ですか?
linux-kernel - Linuxカーネルはどのようにしてドライバーファームウェアを探す場所を知るのですか?
Ubuntuでカスタムカーネルをコンパイルしていますが、カーネルがファームウェアを探す場所を認識していないように見えるという問題が発生しています。Ubuntu 8.04では、ファームウェアはドライバーモジュールと同じようにカーネルバージョンに関連付けられています。たとえば、kernel 2.6.24-24-genericは、カーネルモジュールを次の場所に格納します。
およびそのファームウェア:
「代替ビルド方法:昔ながらのDebianWay」に従って2.6.24-24-genericUbuntuカーネルをコンパイルすると、適切なモジュールディレクトリが取得され、Intelワイヤレスカード(ipw2200)などのファームウェアを必要とするデバイスを除くすべてのデバイスが機能します。モジュール)。
カーネルログは、たとえば、ipw2200がファームウェアをロードしようとすると、ファームウェアのロードを制御しているカーネルサブシステムがファームウェアを見つけられないことを示しています。
errno-base.hは、これを次のように定義しています。
(ENOENTを返す関数は、その前にマイナスを置きます。)
カーネルの名前が2.6.24-24-genericディレクトリを指すシンボリックリンクを/lib/firmwareに作成しようとしましたが、同じエラーが発生しました。このファームウェアは非GPLであり、Intelによって提供され、Ubuntuによってパックされています。特定のカーネルバージョンと実際に結びついているとは思いません。cmp
は、さまざまなディレクトリのバージョンが同一であることを示しています。
では、カーネルはどのようにしてファームウェアを探す場所を知るのでしょうか?
アップデート
私が抱えている問題に対するこの解決策を見つけましたが、Ubuntuが排除され/etc/hotplug.d
、ファームウェアがに保存されなくなったため、機能しなくなりました/usr/lib/hotplug/firmware
。
Update2
さらにいくつかの調査により、さらにいくつかの答えが見つかりました。のバージョン92まではudev
、プログラムfirmware_helper
はファームウェアがロードされる方法でした。93以降、udev
このプログラムは、私が知る限り同じ機能を提供するfirmware.shという名前のスクリプトに置き換えられました。これらは両方とも、ファームウェアパスをにハードコードします/lib/firmware
。Ubuntuはまだ/lib/udev/firmware_helper
バイナリを使用しているようです。
ファームウェアファイルの名前は、パスに連結されてファームウェアのロードに使用されるfirmware_helper
環境変数で渡されます。$FIRMWARE
/lib/firmware
ファームウェアをロードする実際の要求は、システムコールを介してドライバー(私の場合はipw2200)によって行われます。
これで、ドライバーが環境変数を呼び出して確認する間のどこかでrequest_firmware
、カーネルパッケージ名がファームウェア名の前に追加されます。firmware_helper
$FIRMWARE
それで、誰がそれをしているのですか?
c - ドライバーのコーディング方法
Linux OS でドライバを C でコーディングしたいのですが、非常に難しいと思います。始める方法や参考にする本についてのヒントを得ることができますか? ドライバは、USB ポートからグラフィックス カードまで使用できます!!
どこで本を探せばよいかは知っていますが、どのような基礎知識から始めればよいか知りたいです。ハードウェアの知識が必要ですか? また、私のような初心者に適した書籍はどれですか?
c - Linux:Cのハードディスクへの直接アクセス
HDへの生のアクセスを取得して、その場所が使用されているか、空き領域であるかを知るにはどうすればよいですか?ほんの一例ですが、ディスクデバイスを開いて読み取るだけで直接アクセスを取得できます。目標は、たとえば10.000バイトが使用されているかどうかを知ることです。
c - Linux オペレーティング システム クラスのコンテンツ
私は今学期にオペレーティング システム クラスの TA になります。ラボでは、特に Linux カーネルを扱います。
- このクラスで取り上げるべき最も重要な Linux カーネルの概念/コンポーネントは何だと思いますか?
- 取り残されていた研究で取り上げられたことを望みますか?
Linux カーネルまたは全体的なオペレーティング システムの設計に関する提案は大歓迎です。
linux - Linux カーネルのクロス コンパイルと VMware によるデバッグ
Ubuntu 8.04 ホストでコンパイルを行いながら、テスト用に vmware VM (vmware server 2.0 の下のゲストとして Ubuntu 9.04 ) で Linux カーネルとデバイス ドライバーの開発を行うことを検討しています。
VM の下でコンパイルを行うことによるパフォーマンスの低下は避けたいと考えています。
カーネルが明らかにそれ自体の外部にリンクしていないことはわかっているので、その点で問題はないはずですが、
- これを行うときに注意する必要がある特別な落とし穴はありますか?
- カーネルがクラッシュしたときでもコンピューターが稼働している以外に、このセットアップには他に利点がありますか?
- この種のセットアップを使用するためのガイドはありますか?
編集
ホスト上で GDB を使用して Workstation 6.0 を介して VMware でリモート デバッグを行うことについて、数多くのリファレンスを見てきました。これがServer 2.0などのVMWareの無料バージョンで機能するかどうかは誰にもわかりません。
linux-kernel - 複数のネットワーク カードに同じドライバ -- パフォーマンスのボトルネック?
複数の Intel ネットワーク カード (82571EB チップに基づく Intel EXPI9402PT) 用のドライバー e1000e を使用しています。問題は、複数のインターフェイスで最大速度 (1GB) を利用しようとすると、各インターフェイスの速度が低下し始めることです。
特定のパケットを送信するように設計されたカーネル空間に独自のドライバーがあります。次の方法でパケットを割り当てるだけです。
そして彼らはそれらを次のように送ります:
各インターフェイスには、ドライバーの独自のインスタンスがあります。
1 つのインターフェイスについては、120435948 バイト/秒が得られます。
2 つのインターフェイスの場合、61080233 バイト/秒と 60515294 バイト/秒が得られます。
3 つのインターフェイスの場合、28564020 バイト/秒、27111184 バイト/秒、27118907 バイト/秒が得られます。
原因は何ですか?hard_start_xmit 関数は再入可能ですか?
linux-kernel - カーネルデバッグ/USB ドライバー開発のための kvm と vmware
現在、gdb を使用したカーネル デバッグ用に vmware Server 2.0 をセットアップしています (このセットアップ ガイドを参照)。
だから私は尋ねます:カーネルデバッグ/ USBドライバー開発のためのkvm対vmware
それぞれの長所と短所は何ですか?
linux - カスタム ハードウェアを 1 つの入力に接続して、/proc のどこかにスイッチを持たせる最も簡単な方法は何ですか?
低電流の 3 ~ 12v の入力信号を使用して魔法のように動作するデバイスがあり、それを Linux ボックスに接続したいと考えています。これにはどのようなオプションがありますか? 低コストでおそらくユーザー空間のソリューションがあれば素晴らしいことです。