阅读:1838回复:11
问9054的寄存器
我不太理解地址影射这个概念,谁能大致解释一下??
我在本地侧需要64k的空间,将来需要dma传输数据到此,请问怎样配置几个寄存器 1. 局部地址空间0范围寄存器(LAS0RR). 是不是在这个寄存器中写入一个数据FFFF0000H,来确定64k的范围? 2。局部地址空间0局部基址寄存器(LAS0BA)。这个寄存器中的基址,是LOCAL侧输出地址的开始地址? 最不理解的是,该寄存器的值被重新影射到PCI地址空间,什么意思啊?? 3。这个时候,PCIBAR2起的又是什么作用?? 请清楚的大虾一定给个回答,50分相送,先谢谢了 |
|
最新喜欢:HuYugu... |
沙发#
发布于:2004-06-25 00:31
地址影射:pci bus端的地址和local bus的地址是不一样的。pci io accelerater(eg.pci9054)连接pci bus 和local bus,它访问pci bus 的时候或者其他设备通过pci bus访问它的时候用物理地址(pci bus端的地址);它访问local bus的时候用local
bus的地址。其它设备通过pci bus访问local bus和local bus 上的设备访问pci bus的时候,pci io accelerater就要把物理地址转换为local bus 的地址,这就是地址映射。 1。是的 2。local bus的基址,根据LAS0RR替换Pci bus端地址,变物理地址为local bus 的地址。(例如:pci地址e8000111,LAS0RR为FFFF0000,LAS0BA为20000001,local端的地址就是20000111),具体每一位看芯片资料。 3。PCIBAR2是分配给设备的物理地址空间的基址(pci bus端的地址) |
|
|
板凳#
发布于:2004-06-25 10:38
谢谢founder123,等一下加分
我的qq:182172185,能不能仔细聊聊?? |
|
地板#
发布于:2004-06-25 11:57
我现在的目的:需要在PC内存中开辟2M的空间预存数据,然后用DMA的方式将数据传到lcoal侧的64k空间,有如下以问:
1。2M的存储空间是不是通过PCIBAR0来开辟? 2。是我对你上边精彩回答的理解,看对不对。 LASOBA目的是规定LOCAL地址信号的最开始位置(如:LASOBA的值为10000001,则LOCAL的最开始地址是从10000000算起,和PCI侧无关),理解对不?? 3. PCIBAR2则是把这64K的局部空间影射到PC的内存空间,在PC的内存空间开辟出一块64K大小的区域,以后对内存这个区域进行访问,就相当于对64K局部空间的访问,这样理解对不? 还有一点,在内存中开辟的64K空间,是不是可以不占用实际的PC的内存(若我的实际内存为256M,这64K不在这256M之内,而是4G内存空间中的其它部分)??PCIBAR2的值是不是由系统自动分配?? 真的好感谢!!谢谢!! |
|
地下室#
发布于:2004-06-25 13:37
1.不对。。。
需要驱动申请连续内存,然后把内存的物理地址给DMA的pci端寄存器。 |
|
5楼#
发布于:2004-06-25 14:47
suiyi兄,你意思说,申请需要驱动来完成,放到那个寄存器中??具体点,好嘛??
那,用PCIBAR0申请的地址,是来干什么的?? |
|
6楼#
发布于:2004-06-25 14:50
那我理解的第2条,和第三条对吗??
|
|
7楼#
发布于:2004-06-25 16:26
把地址放到dmapadr0中啊,这是一个和dma有关的寄存器
pcibar0是在读写9054的寄存器中用的 2。3应该是对的 |
|
8楼#
发布于:2004-06-27 10:39
谢谢SUIYI兄
我再仔细看看DATASHEET,有问题多交流阿 |
|
9楼#
发布于:2004-06-28 14:45
现在又有一个小问题:
1。 PCIBAR0、PCIBAR1、PCIBAR2、PCIBAR3这些pci端的基址寄存器的值,它们的值是有BIOS分配的,还是可以自己设定,或者是两者都可以? 2。 局部地址空间影射到pci地址空间,是不是可以不占用实际的物理内存(若机子上有实际的256M内存,它们不占用这256M,而是4G中的其它内存空间)?? 它是一定不占用,还是可能不占用?? 3。如果需要一块实际的存在的内存,是不是一定要由驱动程序来申请?? 希望谁知道的话,给个回答。 |
|
10楼#
发布于:2004-07-14 21:51
现在又有一个小问题:
1。 PCIBAR0、PCIBAR1、PCIBAR2、PCIBAR3这些pci端的基址寄存器的值,它们的值是有BIOS分配的,还是可以自己设定,或者是两者都可以? 答:是的。可以由BIOS分配或者通过PCI总线写这些寄存器。EEPROM是无法访问这几个寄存器的。最好还是由BIOS分配,以免造成地址冲突,系统分配了地址后会把基地址写进这些寄存器,你只要读出这些寄存器的值就可以得到PCI基地址了。 2。 局部地址空间影射到pci地址空间,是不是可以不占用实际的物理内存(若机子上有实际的256M内存,它们不占用这256M,而是4G中的其它内存空间)?? 它是一定不占用,还是可能不占用?? 答:如果系统分配空间,一般不会占用实际的物理内存的,4G的内存空间足够大了,怎么分也不会重叠啊。 3。如果需要一块实际的存在的内存,是不是一定要由驱动程序来申请?? 答:应该是的。 上面是我的理解,对不对还有待于证实。 |
|
11楼#
发布于:2004-07-15 16:52
谢谢dejean,现在对9054的整个概念比较清楚了
|
|