2017-10-09 12 views
0

PCIカードは、それに関連付けられたメモリをいくつか持つことができます(メモリ空間にマッピングされるか、IO空間にマップされます)。PCIカードに信号を送る方法は?

ここで、PCIイーサネットカードを使用していて、メモリマップされたIOを使用しているとします。イーサネットカードには、データを送信するバッファとしてのメモリと、イーサネットドライバがワイヤーを下にデータを送信する、それを行うには、イーサネットカードを尋ねることができます。

ここでは、イーサネットカードのマップされたメモリの一部が「コマンドレジスタ」であるとします。たとえば、このコマンドレジスタに文字列"send it"を書き込むと、イーサネットカードはバッファにワイヤを送ります。

私の質問は、イーサネットカードが制御レジスタのメモリが書き込まれたことをどのように知っていますか?イーサネットカードが制御レジスタのメモリ内容をポーリングするか、制御レジスタのメモリアドレスが書き込まれるたびにイーサネットカードに信号を自動的に送信するためのメカニズムがあります(割り込みのようなものですが反対方向に)?

+1

https://en.wikipedia.org/wiki/Conventional_PCI#PCI_command_codesも参照してください。 – xmojmr

答えて

2

PCIカードのメモリマップドIOのアドレス範囲は、PCIデバイスのベースアドレスレジスタ(BAR)によって制御されます。 CPUがBARの範囲内のメモリアドレスにアクセスすると、メモリアクセスはメモリにルーティングされるのではなく、デバイスに(書き込み操作の場合はデータとともに)直接ルーティングされます。 PCIデバイスがメモリアクセスを受信すると、PCIデバイスは、指定された制御レジスタを直ちに更新する。 MMIOアクセスが読み出し動作の場合、デバイスはCPUに適切な値で応答します。

0

MMIOでは、IN命令とOUT命令の代わりにロード命令とストア命令を使用できますが、メモリアクセスだけでなく、コマンドも表示されます。

これは、メモリマップデバイスメモリだけでなく、MM IOの理由です。

関連する問題