阅读:1934回复:14
pci的多个配置空间
我们的pci卡(s5933芯片)在2000设备管理器中看有3个配置空间,两个io,一个memory,可我对第一个io空间操作就可以传送数据,那大家说说另外两个空间可能是怎么回事呢?
|
|
|
沙发#
发布于:2002-07-16 17:04
另外两个空间固件程序使用了,如果它及硬件对你不提供那两个空间的接口,那你对它没法操作,也不必操作。
|
|
板凳#
发布于:2002-07-16 17:13
另外两个空间固件程序使用了,如果它及硬件对你不提供那两个空间的接口,那你对它没法操作,也不必操作。 所谓固件程序,指的是什么程序?是不是CPLD的程序还是……? 我怎么知道应该对那个空间进行操作呢? |
|
|
地板#
发布于:2002-07-16 20:15
固件程序指的是硬件上的程序,如DSP程序;
>>>>我怎么知道应该对那个空间进行操作呢? 向你们的硬件工程师索要。 |
|
地下室#
发布于:2002-07-17 08:55
固件程序指的是硬件上的程序,如DSP程序; *********斑竹的意思是在驱动中还是要对另外两个空间进行操作了?一般是什么操作呢?我们的板子是5933芯片,用外部扩展ROM,地址线和数据线作为外设判断是否从5933fifo中取数的依据,但板子数据线上的内容总是一个定值。虽然从rom中读取数据是成功的,但读取只产生一个脉冲,数据线电平仍然恢复到那个定值,并不锁定在读出的值。斑竹认为什么原因? 问的很杂乱,请斑竹多费心,分一定大大的给 :) |
|
|
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#必须为高电平。可能您的问题就在这儿。 |
|
6楼#
发布于:2002-07-18 16:06
是用fifo方式。怎样使RD#WR#为高电平呢?在驱动程序中操作还是硬件操作?
我现在的问题是数据线(与扩展ROM相连)上电平不能保持上次读操作产生的值(但数据可以读出到MCSR寄存器来)。 |
|
|
7楼#
发布于:2002-07-18 16:49
在CPLD中处理,或直接将它们的引脚接地,我现在有事,暂时退出
|
|
8楼#
发布于:2002-07-19 13:13
不是说必须为高电平吗?怎么又要接地?我们板子上是经上拉电阻接电源。
|
|
|
9楼#
发布于:2002-07-19 21:44
你说得对,是我的疏忽,是应该接高电平,对于CPLD或FPGA,注意设置,引脚如果不用,可能是低电平(OD输出),所以即使不用也要明确在CPLD或FPGA中接成无效,对于RD#或WR#接高。
|
|
10楼#
发布于:2002-07-22 13:27
mengzi老大,
我们的板子外设通过对外部扩展ROM的地址线和数据线上的数据判断何时执行哪种操作。可是我发现如果把地址线按照约定设置好,再写约定的数据,地址线上的值锁定在我写入的值,可数据线上的值一直是个定值(用示波器测量)。这是什么问题? 注:扩展ROM用的写选通接在cpld的一个数据引脚,读选通用作扩展ROM的片选。 |
|
|
11楼#
发布于:2002-07-24 00:52
您能再说详细一点吗?你不是说用的是FIFO吗,应该是DMA方式,怎么又有地址线,是不是说配置PCI的并行扩展ROM,还是PASSTHRU方式?
|
|
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] |
|
|
13楼#
发布于:2002-07-25 17:07
问题解决了,结果就是――没有问题。5933只是在读周期和写周期内访问扩展rom的数据线,过后就释放控制权,此时如果没有其他器件对其操作,则状态未知。如果需要锁存,只能由外部器件进行。
大家一定要与自己的硬件工程师加强沟通。我们的硬件工程师告诉我需要数据线上保持一个电平值! :( |
|
|
14楼#
发布于:2002-07-26 20:30
你说得很对,你用的原来是add on的PASSTHRU方式,add on接口还有fifo方式(既可以是DMA也可以是仅作为ADD ON和PCI的缓冲)和mail方式,这两种方式都是缓冲型方式,即数据可以先存放在这里然后再取,而对于PASSTHRU方式,就只能是在规定的时间内并按一定的时序取。
|
|