几个搞了好久才明白的pci驱动基本知识点
发布网友
发布时间:2022-04-21 22:20
我来回答
共1个回答
热心网友
时间:2022-07-19 09:52
1、pci芯片的配置寄存器分为pci配置寄存器pci configuration registers和局部配置寄存器local configuration registers。这个我看pci9054 databook时一直以为local configuration registers是说dsp上的寄存器。。。太久没做事情了,这个英文和中文都断点了。。。
2、6个pci bar(0-5),其中bar2-5对应4个局部空间0-3,再加上外部rom,pci总线可以访问5个局部地址空间。一个4个寄存器集合定义了每个空间和空间的特性:
pci bar
局部范围local range
局部基地址local base address
局部总线区域描述符local bus region descriptor(指定了局部总线特性,如总线宽度,猝发,预取,和几个等待状态)
3、seeprom不能访问pci bar,seeprom可访问局部配置寄存器,bar是主机bios动态分配的。
4、PCI初始化软件:PCI主机总线初始化软件通过写PCI Base Address Register写全1然后,读回一个值来决定请求的地址空间。PCI9054在不需要的地址位返回0,来指定请求的地址空间。PCI软件(不是驱动,也不是应用程序,是pci的系统软件)通过编程PCI Base Address Register来映射局部地址空间到PCI地址空间。
例如:一个IMB局部地址空间02300000h到023FFFFFH被LLPCI总线的PCI地址78900000h到789FFFFFH来访问。
1. 在SEEPROM按如下方式设置范围和Local Base Address Register
范围=FFF00000h(1MB,译码高PCI地址的高12位)
局部地址(重映射)=023xxxxxh(对于PCI到局部的局部基地址访问)
2. PCI初始化软件写全1到PCI基地址寄存器,然后读取返回值。PCI9052返回一个FFF00000H。PCI软件写PCI基地址寄存器:
PCI基地址=789xxxxxh(PCI基地址用来访问局部地址空间)
5、pci是小端