阅读:1234回复:7
关于PCI的两个问题
请问:
1。从设备和主设备究竟该如何区分? 是不是谁先发起通信谁就是主设备。 主设备是不是都有独立MCU以及存储器。 例如网卡,应该属于从设备吗?到底应该怎么样区分呢? 2。在一次Burst传送的开始,PCI总线上跑的是地址,那这个“地址”究竟是谁的地址?是不是PCI 设备存储器空间的地址?如果PCI设备没有存储器的话,这个地址线跑的是什么地址?反之,如果是数据是从PCI设备流向主机,那地址线上跑的是否就是内存的地址。希望那位前辈可以解答一下我的困惑。我看了不少的书,但缺乏实践,所以几个小的问题但是很关键的问题怎么也搞不清楚。在此我先谢谢了。 |
|
沙发#
发布于:2004-07-27 14:06
1.主设备就是可以独占总线的设备
从设备就是不可以独占总线的设备 8139是主设备,8029是从设备,他们都是网卡芯片 2.burst开始后总线上跑的是数据不是地址。如果你做过硬件译码的话,就会知道地址本身是跟内存或者存储器之类的东西是无关的 |
|
|
板凳#
发布于:2004-07-28 09:20
十分感谢您的回复。您的释疑无异于是雪中送炭。
我想请您说的稍微详细一下, 1)PCI总线是共享总线,而您所说的“独占总线”的设备就是主设备,那您所说的“独占”和PCI总线的“共享”之间是一个什么样的关系呢?就我所知,任何的PCI设备都是分时共享总线的,那这样说的话,它们岂不都成了从设备? 2)burst开始后,总线上跑的是数据,那地址什么时候出现呢?我看PCI协议上讲的都是先跑地址,后跑数据。您还说,“地址本身与内存以及存储器之类的东西无关”,那地址线上究竟究竟跑的什么数据呢?我最近研究的一个PCI设备,它的地址线上跑的好象都是PCI设备片上积存器选通信号之类的东西。请您给我再解释一下好吗?我太愚钝了,怎么也弄不明白。先谢谢您了。也希望看到帖子的同行们给我些提示。 |
|
地板#
发布于:2004-07-28 22:29
1:所谓的主设备,是可以从Local端访问读写PCI总线.而从设备,是只能透过PCI总线访问Local端.
2:首先一个burst后,总线上先跑的是地址,这个地址就是你数据的流向地址.例如Memory,或者是IO的地址.然后再是数据. |
|
|
地下室#
发布于:2004-07-29 09:40
实际上PCI总线的地址是与CPU寻址有关的,一般32位的CPU有32根地址线,PCI总线的地址线同样是32根(9030,9054……),PCI总线上的地址应该是与CPU的地址对应的。这样设备就知道CPU是不是在访问自己了,这是在CPU操控下的情况,在DMA传输时PCI总线上的地址应该是实际物理内存的地址,这样主设备就可以将数据放到指定的内存区域了。
以上是个人理解,也许有错误,请高手指出。 下面针对楼主的问题: 实际上所谓的寄存器选通信号就是当出现某个地址时操作某个寄存器,这时可以算是和存储器有些关系,但是地址只不过是一个约定而已,当某个地址出现时你可以不操作任何存储器,只是启动一次数据转换,或者改变一下某根IO线的状态……。 |
|
|
5楼#
发布于:2004-07-29 13:11
想请教,究竟什么是“local”端?是不是就是PCI总线异于CPU的另一端?请给我举一个具体的例子,具体的某个PCI设备,主设备也好,从设备也好。谢谢了。
|
|
6楼#
发布于:2004-07-29 17:29
local(本地总线)是相对于PCI总线说的,PCI总线是属于整个微机系统的总线,而本地总线是指你自己的设备上的那部分总线
具体的例子,看9030的数据手册吧 |
|
|
7楼#
发布于:2004-07-30 15:00
用户被禁言,该主题自动屏蔽! |
|