私はデバイスドライバのプログラミングに非常に興味があります。LDD3を読み始めました。
「デバイスドライバープログラマーになるには、特定のデバイスをよく理解する必要があります」
「特定のデバイスを理解する」の意味を教えてもらえますか。デバイスドライバを作成する前に知っておくべきことは何ですか。
ありがとう
私はデバイスドライバのプログラミングに非常に興味があります。LDD3を読み始めました。
「デバイスドライバープログラマーになるには、特定のデバイスをよく理解する必要があります」
「特定のデバイスを理解する」の意味を教えてもらえますか。デバイスドライバを作成する前に知っておくべきことは何ですか。
ありがとう
これは、ソフトウェアとハードウェアを組み合わせた基本的なリストです。
The Operating System driver API
The processor architecture as it relates to hardware interfacing
The 'bus' structure that interfaces the device hardware to the processor
Interrupt Handling
Dma Control
Processor Caching
Processor MMU control
OS Semaphores and scheduling
Data/Byte Alignment
Assembly language when needed
Control of Instruction Execution Order and Optimization
Consideration of performance issues
IO およびメモリ マップド ハードウェアとは何ですか?
http://www.cs.nmsu.edu/~pfeiffer/classes/473/notes/io.html
このリンクでは、Linux デバイス ドライバーでの一般的なハードウェア アクセスについて説明しています。
http://www.linuxforu.com/2011/06/generic-hardware-access-in-linux/
これは特に USB ハードウェアに関するものです
http://www.beyondlogic.org/usbnutshell/usb2.shtml
デバイス ドライバ開発者を決して失望させない lwn.net を確認してください。
最後になりましたが、CPU、メモリ、カメラ、PCI など、すべてが揃っています。
-
こんにちは、私が学んだことを皆さんと共有できることをとてもうれしく思います。
はい、デバイス ドライバー プログラマーになりたい場合は、デバイスを知ることが基本的な必要条件です。また、他のソフトウェア プラットフォームでのデバイス ドライバーの経験はありますが、Linux デバイス ドライバー プログラマー、またはそれ以上になりたいと思っています。
あなたがそれと接触したいのは、あなたのために何かをしてもらいたいからです。
通常、最初に知っておくべきことは、それができることです。UART や SPI を介してイーサネット フレームを送信しないことは明らかですよね?
ストレージデバイス、フラッシュ、SDカード、ハードディスクなど、世界にはさまざまな種類のデバイスが存在します。通信デバイス、ネットワーク カード、Wi-Fi。相互接続バス、PCI-express; いくつありますか。
次に気になるのは、目標を達成するためにどうすればよいかということです。デバイスにアクセスして読み取り、または書き込みを行うために、通常はプロセッサにコントローラが組み込まれています。ここで言う「プロセッサ」とは、PC デスクトップや組み込みシステム領域に関係なく、さまざまな種類のコントローラが統合されたコアを意味します。
コントローラーは、コントローラーの背後にあるデバイスで作業するために直面するインターフェイスです。コントローラーを介して、デバイスにやりたいことをさせることができます。コントローラには、ソフトウェアが触れることができる最も深いポイントであるレジスタがあります。その先にはハードウェアがあります。あなたはデバイス ドライバー プログラマーなので、物事を成し遂げるためにハードウェア エンジニアとコミュニケーションを取ることは非常に一般的です。
レジスタの詳細に進むと、デバイスに何をしたいのかを伝えるために使用される制御レジスタ、デバイスで進行中の操作のステータスを反映するために使用されるステータスレジスタ、そのデバイスで割り込みがサポートされている場合、いくつかのレジスタもあります。割り込みに対処するため。
データ レジスタもあるのを忘れがちです。データ レジスタは、送信または書き込み、またはユーザーが読み取るデータを格納するために使用されます。具体的な実装に応じて、送信または書き込みされる上位ユーザーからのデータを格納するために使用されるレジスターと、ユーザーによって読み取られる外部からのデータを保持するために使用されるレジスターは同じ場合もあれば、そうでない場合もあります。
通常、誰かに何かをしてもらいたい場合は、まず彼に何かを提供する必要があります。何かをしたい人は誰でも、彼へのインプットが必要ですよね?
要約すると、
アクション (読み取り、書き込み、またはその他) + データ (与える、または要求する) + ステータス (進行状況)
できること
それはどのように行うのか、コマンドセルの組み立て方、時系列は?
一般的に目標を達成するために提供する必要が
あるもの、提供する必要があるものは次の 2 種類です。
あなたが求める場合、あなたが求めるものをどこに保管するか。
あなたが与えるなら、あなたが与えるものはどこにありますか
操作、ポーリング、または割り込みの進行状況をどのように反映するか
さて、私があなたと共有したいのはそれだけです。
ありがとう。