問題タブ [sysfs]
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 - ユーザー空間でGPIOによってI2Cを正常にシミュレートし、sysfsを使用している人はいますか?
2 つの gpio ピンを使用して I2C 通信をシミュレートしたいのですが、2 つの gpio ピンは既に/sys/devices/virtual/misc/gpio
ディレクトリにあり、問題なく動作します --- ピンに書き込むと、ピンの電圧変化を検出できます。
そして、I2C プロトコルを実装するコードを既に書いていますが、うまく動作しません。
/sys/devices/virtual/misc/gpio/mode
i2c-gpio、i2c-algo-bit、または i2c-dev モジュール/ドライバーのようなものを使用していません。時系列の制御を含め、 andディレクトリを読み書きするだけ/sys/devices/virtual/misc/gpio/pin
ですが、動作しないようです。
I2C には時系列の要求があり、Linux はリアルタイム システムではありません --- 特にユーザー空間から。この方法が実用的かどうかは疑問です。
誰かがそれを達成したとしたら?
linux - デバイスをカスタム sysfs クラスにリンクするにはどうすればよいですか?
いくつかのカスタム ハードウェア用のドライバーを作成しています。すべてのデバイスは、PCIe を介してホスト コンピューターに接続されます。便宜上、これらすべてのカスタム デバイスを sysfs クラスにまとめたいと思います (これは許容できることだと思いますか?)。残念ながら、LDD3 の情報はかなり古くなっているため、私がやろうとしていることを説明している最新のドキュメントを見つけるのに苦労しています。
カスタム クラスを作成するのは簡単です。
そして、プローブ呼び出しの中で、次のものにアクセスできますstruct dev
。
私の質問は次のとおりです。クラスと開発者を取得したので、2 つの間のリンクを作成するにはどうすればよいですか?
基本的には私が望むことを行いますdevice_create()
が、私はすでにstruct dev
理解しているので、再度呼び出すdevice_create
(つまり、新しいデバイスを作成する) べきではないということです。
もう少しトレースを行ったところ、次のようなことを行う呼び出し(残念ながらエクスポートされていません)device_add()
によって呼び出されることがわかりました。device_create()
device_add_class_symlinks()
必要なリンクを作成するためにドライバーで直接このようなことを試みましたが、struct subsys_private
(クラス構造体の「p」メンバー) がどこにも公開されていないため、コンパイルできませんか?
どんな助けでも大歓迎です!
linux - sysfs-pci ドライバーによる CompactPCI デバイスのマッピング
したがって、問題は次のように説明できます。
- 2 つの CompactPCI バス (一方に 6 つ、他方に 5 つ) を介して接続された 11 個の完全に等しい PCI デバイスを取得しました。
- sysfs ファイルシステムを介してデバイスのリソースにアクセスしようとしています (例:
/sys/class/pci_bus/0000:04/device/0000:04:0d.0/resource1
. 最初の 4 つのデバイスは、リソースへの読み取り/書き込みアクセスを問題なく許可しますが、次のようになります。 - 両方のバスの 5 番目と 6 番目のデバイスは機能しません。すべてのファイルが存在しますが、書き込まれた値に関係なく、すべての読み取り操作で大量の FF が返されるため、書き込みが成功したかどうかはわかりません。最初の 4 つのうちの 1 つが物理的に取り外されると、5 番目のデバイスが通常どおり動作し始めます。6 つのデバイスがあるバス上の 6 についても同様です。バスごとに 4 つのデバイスでしか動作しないようです。仕様によると、CompactPCI では、バス上で一度に 7 つの PCI デバイスを使用できることに注意してください。
- Windowsドライバー(私たちがアクセスできない人によってずっと前に開発されたもの)が問題なく動作するため、実際にはハードウェアの問題であるとは言えません。
lspci:
lspci -vv (11 個のデバイスすべてのバス番号以外は等しい):
本当にコードを表示する必要があるかどうかはわかりません。コードは可能な限り単純であるためです。ファイルが開かれ、mmap され、結果のポインターがそのファイルへの書き込みと読み取りに使用されます。
すべてのパスが正しく復元されています。それが最初に確認したことです。
dmesgには PCI に関するエラーはありません。
c - Cおよびsysfsライブラリを使用したシリアル通信Arduino-Raspberryの間違ったデータ
ArduinoとRaspberryを通信させようとしています。sysfs ライブラリと C-Arduino プログラムを使用する Raspberry の C プログラムがあります。
私がすること: Arduino は、私がラズベリーでプログラムをコンパイルして起動するよりも、既にコンパイル済みの (同じ Raspberry 上で) 独自のプログラムを搭載しています。
問題: 以下のコードからわかるように、1 つの Raspberry 入力の遅延で Raspberry のデータを取得します。
初めて必ずOFFXXになる
アルドゥイーノのコード:
そしてラズベリーコード:
USBケーブルとGPIOの両方にこの問題があります
編集:他の問題: OUTPUT が以前に初期化された最後の文字を覚えているのはなぜですか?
sysfs - sysfs 属性グループと対応するデバイスを dev/ に作成する
PCIe カード用の Linux デバイス ドライバーを作成しています。対応する sysfs エントリを作成するときに問題が発生しました。最初に、必要な属性グループを作成しました
そして、store() と show() 関数を追加しました。すべてが見事に機能し、要求されたクラスが作成されました
/sys/bus/pci/drivers//module/drivers/pci:/0000:01:00.0
/ /dev/ にエントリが自動作成されない問題が発生!!
私はネットを見て数時間を費やしましたが、私が見つけた唯一の解決策は使用することでした:
しかし、これにより /sysfs/devices/virtual/... に別のエントリが作成されます。これは見苦しく、まったく不要です。
私が望むのは、属性のセットと対応するエントリを /dev/ に持つことです
どうすればそれを達成できますか?これを行う例へのポインタでさえ非常に役に立ちます(私は運がなくても何時間も探しました:()
事前にどうもありがとう!!!
ロブ
回答:ドライバーのクラスを選択する際に愚かな間違いを犯しました。pciドライバーを適切にセットアップすると、これが解決しました。
linux - Linux デバイス モデルと /sys ファイルシステムの使用方法
Linuxドライバーの開発は初めてです。
従来、char デバイスを作成したい場合は、関数read
write
と関数を実装し、対応するioctl
で登録するだけで済みます。そして、そのデバイスファイルを作成するために使用します。次に、ユーザー空間で呼び出すと、カーネルによって対応する関数が呼び出されます。register_chrdev_region
Major device ID
mknod
Major device ID
read
write
open
しかし、今は、カーネル 2.6 で追加されたLinux device model
andを勉強しています。sys filesystem
Linux にはデバイスとドライバーを処理するための適切なデバイス モデルがあるため、可能であれば使用しないでくださいと言わ/dev filesystem
れました。これは私を混乱させました。
- /sys に char デバイスを作成するにはどうすればよいですか? より具体的には、のようにヌルデバイスを作成するにはどうすればよい
/dev/null
ですか? - ユーザー空間から char デバイス ドライバー関数を呼び出すにはどうすればよいですか?
- でデバイスファイルを作成する
udev
のがベースだと聞きました。なんで?「できれば使わないでください」と言われたのに、なぜでファイルを作成するのですか?sys filesystem
/dev
/dev filesystem
udev
/sys
/dev
- のファイルには、または
sys
のような概念がありますchar device file
かblock device
? - では
/dev
、open
write
ユーザー空間から、最終的にfile operation structure
私が定義した の関数にマップされます。次に、 でファイルを開いたり書き込んだりすると、どの関数が呼び出されます/ssy
か?
linux - sysfs なしで Linux でクロックソースを確認するには?
一般的なLinux OSの場合、コマンドでクロックソースを表示できることを知っています
cat /sys/devices/system/clocksource/clocksource0/available_clocksource
ただし、カーネル バージョン 2.6.27.7 の Linux システムがあり、内部に /sys/ フォルダーがありません。次に、どのクロックソースが使用されているかを確認するにはどうすればよいですか?
ありがとうございます。
linux - XInput2 デバイスを sysfs ノードにマップする
によって報告された XInput2 デバイスをXIQueryDevice
適切なsysfs
ノードに変換するにはどうすればよいですか? デバイスは、evdev
入力ドライバーによって処理される汎用 HID デバイスです。
デバイスの を取得できることはわかってname
います。Xorg.0.log
を見て、このデバイスが追加されたときの適切なログ メッセージを見つけようとすることができるかもしれません/dev/input/event*
。それに関連するデバイス ノードが記載されていることを期待しています。または、 内のすべての入力イベントをsysfs
調べて、その名前のイベントを探し、その名前が一意であり、XInput を介して報告されたものと同一であることを期待します。しかし、これらのいずれよりもクリーンなソリューションがあることを願っています。