- 论坛徽章:
- 0
|
也就是说:IO空间和配置空间并不相同,而且IO空间还可能会没有?
另外,配置空间有些寄存器是不 ...
wucongdonglai 发表于 2011-01-27 17:12 ![]()
IO空间和配置空间并不相同,而且IO空间还可能会没有?
re:如果你配置空间的BAR配置的是memory空间,设备的寄存器(非配置空间的内容,而是你操作这个硬件需要的其他寄存器)就映射到memory空间了啊
配置空间有些寄存器是不是只读的,比如写入厂商ID的?
re:是,系统就是初始化时遍历到pci设备时 根据device id/ventor id找到相应的驱动代码来初始化这个pci设备
有些寄存器是可读可写的,比如基地址寄存器?
pci配置空间主要也就是配置下基地址寄存器还有中断啥的,通过pci_read_config_word,pci_write_config_word等函数来访问和操作配置空间,
配置空间配置完成后, 这个设备的寄存器(非配置空间内容,比如网卡的mac寄存器等)就通过基地址寄存器配置的映射地址映射到memory或者io
空间了,此时你就可以像访问内存一样访问 设备的寄存器去初始化和管理设备了,同时注意此时读写寄存器时,尽量加上volatile,防止被优化。
建议你先大概看下pci设备规范,再去linux底下找个pci设备的代码看下,比如e1000的网卡驱动。 |
|