character-device

既存のデバイスノードに文字ドライバをロードできますか?
character-device

既存のデバイスノードに文字ドライバをロードできますか?

私はLinuxカーネルドライバのプログラミングを探しています。そして、次のようなアイデアを得ました。 既存のデバイスノードに文字ドライバをロードできますか(デバイスノードはmknodを使用して作成された可能性があります)。 #1をさらに拡張するには、キャラクタドライバがデバイスノードを作成し、他のキャラクタドライバがノードのメジャー/マイナー番号を使用して生成されたデバイスノードに登録してロードするために使用されるデバイスノードを作成できますか? すでに使用されている例はありますか? ...

Admin

文字デバイスファイルに書き込むと、list_delまたはlist_addが破損します。どうすれば解決できますか?
character-device

文字デバイスファイルに書き込むと、list_delまたはlist_addが破損します。どうすれば解決できますか?

LDD3をフォローしています。スカルモジュールの読み書き機能を実装しました。テスト書き込み機能を実行するたびに、echo hello > /dev/scull0list_add/list_delの破損とスタックトレースが発生します。 これは私のコードです。 #include <linux/module.h> #include <linux/init.h> #include <linux/moduleparam.h> #include <linux/stat.h> #include <linux/ty...

Admin

キャラクターデバイスファイルには何がありますか?
character-device

キャラクターデバイスファイルには何がありますか?

文字デバイスファイルは、カーネルデバイスドライバで定義できる文字やその他のファイル操作を無制限に読み書きできる特別なLinuxファイルです。 しかし、このファイルが実際に存在するのでしょうか?プレーンテキストファイルとして扱うと内容を読むことができますか?たとえば、大きな数字や素数? ソフトリンクにも同様のものがあります。 Linuxシステムでは、リンクは実際にはシステムへのパスですが、gitにコミットした後は、ソースディレクトリパスである文字列を含む「一般」テキストファイルのみが表示されます。 ...

Admin

/dev/にデバイスファイルを生成する現代的な方法は何ですか?
character-device

/dev/にデバイスファイルを生成する現代的な方法は何ですか?

長すぎます。 私のモジュールが最新の慣行に従うようにするには/dev/、シェルスクリプトでviaを介してデバイスを作成する必要がありますか、またはviaとC関数を介してモジュールソースコードから直接作成する必要がありますか?ある方法が他の方法に比べてどのような利点がありますか?mknodclass_createdevice_create 詳細 存在する第3章~のLinuxデバイスドライバ、第3版、45ページでは、register_chrdev_regionデバイス番号を知っている場合は、文字デバイスを登録する機能として使用されます。 ただし、今日使用していな...

Admin

chardevでcatをhead -c 5にパイプすると、chardevでhead -c 5を呼び出すよりもドライバの読み取りでより多くの呼び出しが発生するのはなぜですか?
character-device

chardevでcatをhead -c 5にパイプすると、chardevでhead -c 5を呼び出すよりもドライバの読み取りでより多くの呼び出しが発生するのはなぜですか?

~からインスピレーションを得るこのブログ投稿、私はLinuxデバイスドライバの作業をしています(彼らから学んでいます)。 readドライバ関連フィールドは、file_operations次の機能で初期化されます。 static ssize_t mychardev_read(struct file *file, char __user *buf, size_t count, loff_t *offset) { uint8_t *data = "Hello from the kernel world!\n"; size_t datalen = s...

Admin

#includeと#includeの違いは何ですかそして#include?
character-device

#includeと#includeの違いは何ですかそして#include?

IOCTLを使用して温度センサー用のデバイスドライバコードを書く必要がありました。私のコードをどこで使うべきかについての手がかりを得ることを願ってここに掲載されています。 ...

Admin

Linuxカーネルでキューの内容を印刷する際に問題があります。
character-device

Linuxカーネルでキューの内容を印刷する際に問題があります。

コンテキスト:次のワークセット{A、B、C、D、E}を考えてみましょう。 (A):マイデバイスドライバ機能でread()ドライババッファが空の場合は、呼び出しスレッドをキューに追加します。wqbuf より具体的には、呼び出しスレッドは以下を介してキューに追加されます。 wait_event_interruptible(wq, strlen(buf) > 0) (B):同様に、ドライバ機能によって渡されたコマンドがあり、ドライバのフラグがある場合は、ioctl()呼び出しスレッドを同じキューに追加します。wqioctlMY_IOCTL_Xis_f...

Admin

Linux カーネル Register_chdev 戻り値
character-device

Linux カーネル Register_chdev 戻り値

この動画新しいキャラクターデバイスを生成するRaspberry Pi Linuxカーネルモジュールの例を示します。カーネルAPIを使用してくださいregister_chdev。動画のコメント(直接リンクを生成できません)での戻り値に関して、作成者register_chdevは次のように言います。 戻り値がゼロでない場合、そのデバイス番号はすでに使用されています。戻り値の上位12ビットはプライマリデバイス番号、下位20ビットはマイナーデバイス番号です。 「デバイス番号が既に使用中です」とは、「カーネルモジュールでランダムに選択されたゼロ以外の主要なデバイス...

Admin

文字デバイスをバイナリファイルとして開いて読み込む方法は?
character-device

文字デバイスをバイナリファイルとして開いて読み込む方法は?

私はUSBを使用しており、/dev/bus/usb/00x/00yにあるUSBデバイス記述子の内容を読みたいです。これは文字デバイスです。 私はfopenを使って "rb"パラメータを持つバイナリファイルとして開きます。ただし、ファイルサイズを取得するために「find」と「tell」を実行すると、0バイトのサイズが返されます。バイナリファイルに読み込む方法はありますか? void ReadUsbDeviceDescriptor( const char* path ) { FILE* usb_fd = NULL; size_t lSize = ...

Admin

キャラクターデバイス用MITM/エージェント
character-device

キャラクターデバイス用MITM/エージェント

私キャラクターデバイスファイル、 /dev/X としましょう。 /dev/X 内外のすべての相互作用をキャプチャしたいと思います。 このファイルに対して一種のMITM /プロキシを作成する方法を探しています。 編集する: Xが何であるかについては、AndroidのFMインターフェースです。したがって、/ dev / fmは文字デバイスファイルです。 究極の目標は、このファイルに送信されたすべてのコマンドを傍受することです。 ...

Admin

文字デバイスはブロックI / Oのみを処理できますか?
character-device

文字デバイスはブロックI / Oのみを処理できますか?

次の(仮説)デバイスを考えてみましょう。クエリに1秒かかり、現在の時刻を返す時計。読み込み操作のみをサポートする文字デバイスドライバを作成します。 私は読み取り結果をキャッシュできないので、このようなデバイスでは非ブロック読み取りは意味がないと思います。同意しますか? ブロック読み取りのみを処理することは許可されていますか?それでは、非ブロック読み取りはどのエラーコードを返すべきですか?それとも別の方法で非ブロック操作をサポートしていないと指定する必要がありますか? 実際のデバイス用の文字デバイスドライバを実装する前に、この点をよりよく理解したいと思いま...

Admin

TTYとserial_coreの関係は何ですか?
character-device

TTYとserial_coreの関係は何ですか?

通常、許可されているよりも多くのファイル操作(開く、書き込みなどではない)を許可するUART用の新しい文字デバイスファイルを作成する必要があります。 私は組み込みのメインラインLinuxカーネル(v 5.4)を使用しています。 UARTドライバを見始め、多くのことを見つけました。 まず、ttyファイルがたくさんあります。私はttyがTeletypewriterの略であることを知っています。ハードウェア部品ではないかと思います。 その後、UARTの割り込みを処理するプロセッサ用の特定のドライバがあります。 その後、serial_core.cに書かれたuart...

Admin

/dev/i2c-1と/dev/memがクラッシュしていますか?
character-device

/dev/i2c-1と/dev/memがクラッシュしていますか?

モーションセンサーと超音波センサーの両方を処理する必要があるプログラムを作成しました。私は40本のGPIOピンを備えたJetson Nanoを使用しています。最初はI2Cインタフェースを使用しているため、linux-intern libi2c-libraryを使用して/ dev / i2c-1にアクセスし、もう1つは/ dev / memを使用して16進値をピンに直接書き込みます。 これで個別に実行すると正常に動作しますが、コードファイルに結合しようとすると競合が発生します。 I2Cセンサーで不明なエラーが発生して停止します。同時に使用時に衝突の可能性がある...

Admin