
ユーザー空間で簡単なPIO PCIボードと通信するためにドライバを作成しようとしています。
まず、サンプルキャラクタードライバーを作成しました。メモリ内の単純なテキスト文字列です。読み書き用のデバイスファイルが作成されます。わかりやすい。
次に、別のドライバを作成し、PCIボードにドライバを正常に登録しました。カーネルメッセージでは、すべてが正しく機能していることがわかります。lspci -v
コマンドは、私のテストドライバを使用しているドライバとしてマークします。
私の質問:ユーザースペースからPIO PCIドライバにどのようにアクセスしますか?
また、「デバイス番号」と読み書きファイルを持つように文字デバイスを作成し、デフォルトで両方のプロジェクトをマージする必要がありますか?pci_driver
構造に読み書き機能がないため、これは論理的なステップのように見えます。
そうですか?
答え1
良い本があります。Linuxデバイスドライバ以下で無料で利用可能:
数年が経過したため、一部のコンテンツが若干変更された可能性がありますが、コアコンテンツはまだ役に立ちます。
一般に、運転者は文字装置を登録しようとすることができる。デバイスは動的に割り当てられた主要なデバイス番号を受け取ります。その後、そのメジャー番号を使用してdevから文字デバイスファイルを作成できます。ドライバは標準のファイルワークセット(たとえば、、、、、などopen()
)をサポートします。ユーザー空間プロセスは文字デバイスファイルを使用し、これらのファイル操作を使用してドライバと対話します。ドライバの実装は、これらのタスク(およびその依存関係)を物理デバイスとの相互作用に変換します。ioctl()
read()
write()
open()