brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
阅读:1934回复:14

pci的多个配置空间

楼主#
更多 发布于:2002-07-16 16:34
我们的pci卡(s5933芯片)在2000设备管理器中看有3个配置空间,两个io,一个memory,可我对第一个io空间操作就可以传送数据,那大家说说另外两个空间可能是怎么回事呢?
打一枪……换个地方……再打一枪……
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2002-07-16 17:04
另外两个空间固件程序使用了,如果它及硬件对你不提供那两个空间的接口,那你对它没法操作,也不必操作。
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2002-07-16 17:13
另外两个空间固件程序使用了,如果它及硬件对你不提供那两个空间的接口,那你对它没法操作,也不必操作。


所谓固件程序,指的是什么程序?是不是CPLD的程序还是……?
我怎么知道应该对那个空间进行操作呢?
打一枪……换个地方……再打一枪……
blue
驱动大牛
驱动大牛
  • 注册日期2001-04-25
  • 最后登录2010-10-15
  • 粉丝0
  • 关注0
  • 积分55分
  • 威望12点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2002-07-16 20:15
固件程序指的是硬件上的程序,如DSP程序;
>>>>我怎么知道应该对那个空间进行操作呢?
向你们的硬件工程师索要。
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2002-07-17 08:55
固件程序指的是硬件上的程序,如DSP程序;
   ******** 那针对5933来说,就是芯片的Add-on端的程序了?
>>>>我怎么知道应该对那个空间进行操作呢?
向你们的硬件工程师索要。

*********斑竹的意思是在驱动中还是要对另外两个空间进行操作了?一般是什么操作呢?我们的板子是5933芯片,用外部扩展ROM,地址线和数据线作为外设判断是否从5933fifo中取数的依据,但板子数据线上的内容总是一个定值。虽然从rom中读取数据是成功的,但读取只产生一个脉冲,数据线电平仍然恢复到那个定值,并不锁定在读出的值。斑竹认为什么原因?

问的很杂乱,请斑竹多费心,分一定大大的给 :)
打一枪……换个地方……再打一枪……
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2002-07-17 15:12
brucezh兄:
    配置了3个空间,一个是5933的内部寄存器(中断控制器,主控状态寄存器之类,共16个,也就是64字节的空间,这是必须的) ,另外2个,是add on空间,在配置空间中谁写在前面谁的ptnum[1:0]就=2b\'00。对于passthru访问,写个状态机还是有些难度的,但似乎您用的是FIFO方式,采用FIFO方式时,RD#、WR#需为高电平,反之采用passthru访问,wrfifo#、rdfifo#必须为高电平。可能您的问题就在这儿。
 
 
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2002-07-18 16:06
是用fifo方式。怎样使RD#WR#为高电平呢?在驱动程序中操作还是硬件操作?
我现在的问题是数据线(与扩展ROM相连)上电平不能保持上次读操作产生的值(但数据可以读出到MCSR寄存器来)。
打一枪……换个地方……再打一枪……
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2002-07-18 16:49
在CPLD中处理,或直接将它们的引脚接地,我现在有事,暂时退出
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2002-07-19 13:13
不是说必须为高电平吗?怎么又要接地?我们板子上是经上拉电阻接电源。
打一枪……换个地方……再打一枪……
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2002-07-19 21:44
你说得对,是我的疏忽,是应该接高电平,对于CPLD或FPGA,注意设置,引脚如果不用,可能是低电平(OD输出),所以即使不用也要明确在CPLD或FPGA中接成无效,对于RD#或WR#接高。
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2002-07-22 13:27
mengzi老大,
我们的板子外设通过对外部扩展ROM的地址线和数据线上的数据判断何时执行哪种操作。可是我发现如果把地址线按照约定设置好,再写约定的数据,地址线上的值锁定在我写入的值,可数据线上的值一直是个定值(用示波器测量)。这是什么问题?

注:扩展ROM用的写选通接在cpld的一个数据引脚,读选通用作扩展ROM的片选。
打一枪……换个地方……再打一枪……
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
11楼#
发布于:2002-07-24 00:52
您能再说详细一点吗?你不是说用的是FIFO吗,应该是DMA方式,怎么又有地址线,是不是说配置PCI的并行扩展ROM,还是PASSTHRU方式?
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
12楼#
发布于:2002-07-24 12:13
是外设的cpld通过对扩展rom的地址线和数据线上的值以及fifo状态来决定执行何种操作,这些操作有读fifo、写fifo,设锁相环。比如当地址线高三位是某种情况,数据线上的值又满足要求,而fifo又非空,就读出fifo……
锁相环的数值也要通过扩展rom的数据线传过来,当地址线高三位符合一定要求时,把数据线上的值取出来作为锁相环的值。这里扩展rom的写选通是接在cpld上的。扩展rom的地址线高三位和数据线也接在cpld上(当然同时也接在扩展rom上)。
问题是扩展rom数据线上的值不会改变。我向一个地址写数据或从一个地址读出数据,虽然数据是被写到线上或读到5933mcsr寄存器中了,可数据线测量值却维持在一个定值。是什么把数据线电平拉回来的呢?
(以上说的地址都是指扩展rom地址空间的地址)

另外,还有个关于缓冲区拷贝的问题,也麻烦看一下,一定给分。
[url]http://www.driverdevelop.com/forum/viewthread.php?tid=18184  [/url]
打一枪……换个地方……再打一枪……
brucezh
驱动老牛
驱动老牛
  • 注册日期2002-01-30
  • 最后登录2007-02-01
  • 粉丝0
  • 关注0
  • 积分2分
  • 威望1点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
13楼#
发布于:2002-07-25 17:07
问题解决了,结果就是――没有问题。5933只是在读周期和写周期内访问扩展rom的数据线,过后就释放控制权,此时如果没有其他器件对其操作,则状态未知。如果需要锁存,只能由外部器件进行。
大家一定要与自己的硬件工程师加强沟通。我们的硬件工程师告诉我需要数据线上保持一个电平值!
 :(
打一枪……换个地方……再打一枪……
mengzi
驱动牛犊
驱动牛犊
  • 注册日期2001-08-02
  • 最后登录2004-05-25
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
14楼#
发布于:2002-07-26 20:30
你说得很对,你用的原来是add on的PASSTHRU方式,add on接口还有fifo方式(既可以是DMA也可以是仅作为ADD ON和PCI的缓冲)和mail方式,这两种方式都是缓冲型方式,即数据可以先存放在这里然后再取,而对于PASSTHRU方式,就只能是在规定的时间内并按一定的时序取。
游客

返回顶部