dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1838回复:11

问9054的寄存器

楼主#
更多 发布于:2004-06-24 18:03
我不太理解地址影射这个概念,谁能大致解释一下??

我在本地侧需要64k的空间,将来需要dma传输数据到此,请问怎样配置几个寄存器
1. 局部地址空间0范围寄存器(LAS0RR). 是不是在这个寄存器中写入一个数据FFFF0000H,来确定64k的范围?
2。局部地址空间0局部基址寄存器(LAS0BA)。这个寄存器中的基址,是LOCAL侧输出地址的开始地址? 最不理解的是,该寄存器的值被重新影射到PCI地址空间,什么意思啊??

3。这个时候,PCIBAR2起的又是什么作用??

请清楚的大虾一定给个回答,50分相送,先谢谢了

最新喜欢:

HuYuguangHuYugu...
founder123
驱动牛犊
驱动牛犊
  • 注册日期2003-10-20
  • 最后登录2005-06-15
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
沙发#
发布于: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端的地址)
好好学习,天天向上! 回答的好,请给分分!
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-06-25 10:38
谢谢founder123,等一下加分
我的qq:182172185,能不能仔细聊聊??
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地板#
发布于: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的值是不是由系统自动分配??

真的好感谢!!谢谢!!
suiyi
驱动牛犊
驱动牛犊
  • 注册日期2003-10-22
  • 最后登录2006-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-06-25 13:37
1.不对。。。
  需要驱动申请连续内存,然后把内存的物理地址给DMA的pci端寄存器。
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2004-06-25 14:47
suiyi兄,你意思说,申请需要驱动来完成,放到那个寄存器中??具体点,好嘛??

那,用PCIBAR0申请的地址,是来干什么的??
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-25 14:50
那我理解的第2条,和第三条对吗??
suiyi
驱动牛犊
驱动牛犊
  • 注册日期2003-10-22
  • 最后登录2006-08-26
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-25 16:26
把地址放到dmapadr0中啊,这是一个和dma有关的寄存器
pcibar0是在读写9054的寄存器中用的
2。3应该是对的
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-27 10:39
谢谢SUIYI兄
我再仔细看看DATASHEET,有问题多交流阿
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-06-28 14:45
现在又有一个小问题:
1。 PCIBAR0、PCIBAR1、PCIBAR2、PCIBAR3这些pci端的基址寄存器的值,它们的值是有BIOS分配的,还是可以自己设定,或者是两者都可以?
2。 局部地址空间影射到pci地址空间,是不是可以不占用实际的物理内存(若机子上有实际的256M内存,它们不占用这256M,而是4G中的其它内存空间)?? 它是一定不占用,还是可能不占用??

3。如果需要一块实际的存在的内存,是不是一定要由驱动程序来申请??

希望谁知道的话,给个回答。
dejean
驱动牛犊
驱动牛犊
  • 注册日期2004-05-10
  • 最后登录2006-04-28
  • 粉丝0
  • 关注0
  • 积分1分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
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。如果需要一块实际的存在的内存,是不是一定要由驱动程序来申请??
答:应该是的。

上面是我的理解,对不对还有待于证实。
dreamtown
驱动小牛
驱动小牛
  • 注册日期2004-05-12
  • 最后登录2006-01-16
  • 粉丝0
  • 关注0
  • 积分26分
  • 威望5点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2004-07-15 16:52
谢谢dejean,现在对9054的整个概念比较清楚了
游客

返回顶部