一、硬件结构
图中的Processor是CPU,addr cpu是cpu的内存空间,cpu发出地址可以到达cache,内存DRAM,或者GPIO,再或者PCI设备,再访问PCI设备时需要经过Bridge桥,将addr cpu转换成addr PCI。但是PCI总线上挂载了很多设备,这些设备是怎样响应的呢?
cpu会去扫描这些PCI设备,每个设备都有配置寄存器,都这个配置寄存器我可以知道,这是哪类设备,是网卡,还是串口,我可以知道申请的资源,想申请多大的空间;当我知道你需要多大的空间之后,我就会在内存中分配相应的地址空间,然后将这块空间的地址范围及地址写入配置寄存器。
当我的PCI设备插到PCI总线的卡槽上时,我会声明我需要多大的空间,驱动来初始化时会来扫描这些设备,就会执行上面的步骤。
当桥把CPU地址转换成PCI地址后,如果这个pci地址属于PCI dev1,这个PCIdev1就会响应。
二、信号定义 Signal Definition
1.地址线与数据线
地址线和数据线是复用的,区分是用FRAME信号区分的,如下图:
FRAME为低电平是传输ADDRESS,高电平传输DATA。
规格书的描述(PCI3.0规范)
一开始的地址PCI总线上的设备都还没有自己的地址空间,那么怎样去选中某一个PCI设备呢?
BUS0和BUS1都是PCI总线,可以使用AD线来选择对应的设备。