PCI/PCIe 设备上有配置空间(配置寄存器),用来表明自己"需要多大的地址空间"。
注意,这是 PCI/PCIe 地址空间。
主机上的程序访问 PCI/PCIe 设备,读出配置信息。
分配地址空间:注意,分配的是 PCI/PCIe 地址空间。
把地址空间首地址写入设备。
假设 CPU 发出的 addr_cpu,是用来访问 PCI 设备的,转换关系为:
addr_pci = addr_cpu + offset
在 PCI/PCIe 控制器中,有某个寄存器,有来保存 offset 值。
示例代码如下:
volatile unsigned int *p = addr_cpu;
unsigned int val;
*p = val; /* 写, 硬件会把addr_cpu转换为addr_pci去写PCI/PCIe设备 */
val = *p; /* 读, 硬件会把addr_cpu转换为addr_pci去读PCI/PCIe设备 */
| 本文参考 百问网-韦东山驱动大全 |
全部0条评论
快来发表一下你的评论吧 !