Intel I225のレジスタマップとPCIeのBase Address Register(BAR)の関係について調査します。
また、OpenBSDのソースコード(if_igc.c)を解析し、I225のレジスタ操作の実装についても詳しく調べます。
調査結果がまとまり次第、お知らせします。
I225のレジスタマップ概要: Intel I225 EthernetコントローラはPCI Expressデバイスとして実装されており、主要なレジスタ群はPCI構成空間のBase Address Register (BAR0)によって指し示されるメモリ空間にメモリマップされています (/usr/src/sys/dev/pci/if_igc.c)。BAR0に割り当てられた物理メモリアドレス領域(デバイスのレジスタマップ)は、デバイス制御・ステータス、送受信制御、割り込み制御、DMAリングバッファ設定など多数のレジスタで構成されています。OpenBSDドライバではpci_mapreg_map関数を用いてこのBAR0領域(オフセット0x10)をカーネル仮想空間にマッピングし (/usr/src/sys/dev/pci/if_igc.c)、bus_space経由で読み書きアクセスします。例えばIGC_READ_REG/IGC_WRITE_REGマクロにより、bus_space_read_4/bus_space_write_4を用いてメモリマップされたレジスタにアクセスしています ([src/sys/dev/pci/if_igc.h at c