阅读:1703回复:3
9054如何写基址寄存器
看到过这样的话:
PCI配置寄存器提供了6个基地址寄存器,其中BASE0和BASE1用来访问其他配置寄存器的基地址,BASE0是其他配置寄存器映射到PCI端内存的基地址,BASE1是其他寄存器映射到PCI端I/O的基地址。可以通过PCI端内存和PCI端I/O来访问LOCAL配置寄存器与其他3种寄存器。 BASE2~5四个空间提供了访问本地端所接的4个芯片(当然可以少于4个),它们将本地端的芯片通过本地端地址(LOCAL配置寄存器中设)翻译成PCI的地址,也就是将本地的芯片映射到系统的内存或 I/O口。 是不是可以这样理解: 1。通过base0和base1,我们可以访问pci桥片(如9054)上的其他寄存器?若真是如此,如何访问呢????? 2。当有一个芯片(或说是一段空间)的基地址写到了某个基址寄存器后,我们就可以通过此基址+偏移地址访问此段空间了?若是如此,那这个基地址该如何写到某个基址寄存器(比如base2)呢??是不是要用到base0和base1呢???? |
|
沙发#
发布于:2007-08-21 11:43
除非你要在可编程器件(比如FPGA)里实现一个PCI桥片模块,否则不用关心寄存器的具体工作过程。PCI9054会自动完成对各种寄存器的访问并且根据应用改写相应寄存器值。
你要实现的功能是通过编写PCI BUS端和LOCAL BUS端的程序完成的。 举个例子,如果想从主机写一个数到PCI设备上,那么在主机PCI总线上插入PCI卡,安装PCI9054 SDK里的对应驱动程序(或者自己写一个驱动),再写一个应用程序,可以调用PLX API函数"PlxMemoryWrite"完成这次写操作。这时PCI9054的本地总线端会发出你在PlxMemoryWrite函数中指定的地址和数据,PCI卡的本地CPU完成对地址的译码,数据就存入本地存储空间。 这个过程中PCI9054操作了很多内部寄存器才把PCI BUS上的地址数据信息“翻译”到LOCAL BUS上,但是这些操作对用户“透明”,不用具体关心。 |
|
板凳#
发布于:2007-08-22 13:49
|
|
地板#
发布于:2007-12-01 16:57
基地址是不用分配的,pc机会自动分配的,我们只需分配它的使用空间,根据自己需要的空间,比如你后面加fpga。用plx的那个软件可以自动生成配置文件
qq78234813 |
|