問題タブ [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.
usb - Linux で USB 大容量ストレージ シミュレータを開発するにはどうすればよいですか?
USBのプログラミングは初めてです。Linux で USB 大容量記憶装置用のシミュレーターを開発したいと考えています。リンクを共有していただければ幸いです。
io - 長さゼロで write() を呼び出すとどうなりますか?
Linux 関数のかなり高いレベルでは、write()
長さ 0 のバッファーへの書き込み要求を除外します。これは理にかなっています。実行すべき作業がないと判断するためだけに、OS がレイヤーを掘り下げて時間を無駄にしたいと思う人がいるでしょうか?
ええと...私。
これは、Linux カーネルの I2C 書き込み確認ポーリングに関連しています。また、ハンドシェイクが間違っている場合、アドレス (データの前にバスで送信される) がエラーを返す場合、ビットバンされた I2C ドライバーが潜在的に有用な戻りコードを返すという発見。
アドレスの後にダミーデータを送信できますが、私が使用しているデバイスでは送信できません。(たぶん私は読んでみます...)。
問題は、カーネルがゼロ (0) の長さの書き込みを許可した場合、どのような地獄が解き放たれるかということです。
eclipse - Linux usb-hid : libhid ライブラリを eclipse(C++) または netbeans IDE またはネイティブ input.h または hiddev.h に追加しますか?
libhidに問題があります。
Linuxでusb-hidにアクセスする2ウェイ4があることがわかりました
1) input.hやhiddev.hなどの Linux のデフォルト ライブラリと ...
2) libhid の使用
libhid がややこしいので、input.h を使用しようとしましたが、その 2 に問題があります。
ubuntu から自分のデバイスに関する情報を取得する方法がわかりません
open() を使用してデバイスを開きます
次に、ioctl で情報を取得します
しかし、それは私に間違ったベンダーと製品IDを与えます
次に、libhidを使用しようとしましたが、Eclipseまたはnetbeansでlibhid(または他のライブラリ)を使用する方法を知っていました
eclipse や netbeans などの IDE をコンパイルした方法、またはターミナルと gcc を使用してコードをコンパイルした方法を教えてください。または ioctl() および open() を使用する方法は?
私のコード例全体:
linux - Open Firmware Device Trees の概要/リファレンス マニュアル
組み込み PowerPC ボード用のドライバーをセットアップしようとしていますが、現在これを行う正しい方法は、OpenFirmware Device Tree データ構造 (.dts ファイルからコンパイルされた .dtb ファイル) を使用することです。ツリーの作成は非常に簡単ですが、デバイス ドライバーにそのノードとその中のデータを見つけるにはどうすればよいでしょうか? 私はこれに関する適切な参考文献を見つけることができず、「Linux Device Drivers」のような本は x86 の領域に深く入り込みすぎており、主に Power Architecture ベースのマシンに関連するデバイス ツリー (Linux カーネルの arch powerpc用語)。
linux - Linux 用の char デバイス ドライバーの書き方を学ぶにはどうすればよいですか?
Linux で char デバイス ドライバを作成するにはどうすればよいですか?
git - 外部のロード可能なモジュールのgitcommithash
Linuxソースツリーの外部で(標準的な方法で)Linuxカーネルモジュールを開発しており、モジュールのロード中に出力されるバージョン文字列にドライバーのgitcommitハッシュを自動的に含めようとしています。Makefileは、コマンドを使用してgitハッシュを計算します
しかし、これはLinuxツリーのgitハッシュを取得し、私のドライバーは取得しません。コマンドを実行するときに特定のディレクトリを調べるようにgitに指示できますか、あるいは、この問題に取り組むためのより良い方法がありますか?
これはgit1.5.4.5とLinux2.6.28を使用しています
multithreading - Linuxでのカーネルスレッド間の通信
app / PCIドライバーをvxWorksからLinuxに移植していますが、可能であれば同じアーキテクチャを維持したいと思います。現在のドライバーには、メッセージキューを使用して相互に通信する2つのタスク(スレッド)があります。カーネルスレッド間で通信するメカニズムはありますか?メッセージキューは、バッファアドレスとサイズ情報を渡すために使用されているため、タスクはDMAを使用して大量のデータを移動できます。
linux - Linux カーネルのコンパイル エラー
Linux カーネルをコンパイルしようとしましたが、エラーが発生しました。一番上の Makefile を実行しているときに、次のエラーが発生します:-
ビルドする前に、make oldconfig を使用して構成しました
エラーログのファイルは、構成中に生成されるはずだったようです。しかし、どういうわけかそれらは生成されていないため、エラーが発生します。ネットを検索しましたが、まだエラーを修正できません。私はカーネルプログラミングに非常に慣れていません。どんな助けでも大歓迎です。
ありがとう。
linux - The Linux Kernel Module Programmers Guide の chardev.c の例の問題
lkmpgからchardev.c の例をコンパイルして実行したところ、デバイスへの書き込み時に予期しないエラーが発生しました。
モジュール書き込み関数は次のようになります。
無効な操作の予想されるエラーが発生せず、エラーが /var/log/messages に出力されます。
問題なくデバイスから読み取ることができ、期待される結果を受け取ります。
デバイス /dev/chardev は、次を使用して手動で作成されます。
どうしたんだ?
- 編集 -
どうやら、デバイスを作成するために mknod すると、最終的に次の権限が付与されます。
私がやっsudo chmod a+w /dev/chardev
た後、ドライバーは期待どおりに動作しました。
しかし、人々はこれを行うのは正しくないと言っています。
正しい行動方針とその理由は何ですか?
linux-kernel - 外部カーネル モジュールの ctags を実行する (または別の関連プロジェクトからタグを取得する)
「外部」モジュール (デバイス ドライバー) を構築しています。つまり、Linux カーネル ソース ツリーではなく、別の無関係なソース ツリーにあります。
ctags を使用して、ヘッダー ファイルを介してカーネルから取り込まれる変数/関数の宣言と定義を参照したいと考えています。
たとえば、私が持っていると仮定します:
カーネルに対して実行make tags
した後、モジュールに対して ctags を実行して、別のディレクトリ ツリー (この場合は Linux カーネル ソース) 内の実質的に別のプロジェクトからタグを取得するにはどうすればよいですか?