阅读:1441回复:2
PCI9052问题综合讨论区
Little/Big Endian Mode有什么用,为什么?
因为有些系统的字节排列顺序正好和Intel体系不同,顺序相反.所以就保留了这种方式 对于16、32、64位的总线 Intel的标准是Little Endian Mode,例如 0x12345678,Little Endian Mode放在32位总线上为 D31-D24:0x12 D23-D16:0x34 D15-D8:0x56 D7-D0:0x78 Motorola 的标准是Big Endian Mode,例如 0x12345678,Big Endian Mode放在32位总线上为 D31-D24:0x78 D23-D16:0x56 D15-D8:0x34 D7-D0:0x12 PCI总线是Little Endian Mode. -------------------------------------------------------------------- 资料上说9052内部有2个寄存器:PCI Configuration Registers(0h-3ch),和Local Configuration Registers(0h-50h)。 后者怎么访问?是占用PCI Base Address 2/3的地址空间吗? 根据你在 CNTRL(b12,b13)的设置,local register 将被内存映射/ io 映射到主机的 pci 空间中.你在获得其基地址/ io 端口号之后,就可以访问了.内存映射方式你需要将物理地址转换为线性地址. 那么io访问的地址是不是就在在pci config中的14h: PCI Base Address 1 中的内容? of course ----------------------------------------------------------------------- 怎么将PCI9054与TMS320C31的地址线相连? 我的PCI054工作于C模式、LOCAL BUS接的是TI的TMS320C31,数据线为32位,地址线24位,请问: 1、在此情况下,我的LOCAL BUS的地址线A1、A0应由什么信号提供? 2、PCI054的片选信号该怎么接?本地C31的存储地址和计算机的地址什么关系? 2、我只是要C31读取计算机发来的数据、c31向计算机发出数据,此时我的电路板是否是作为目标版? 1、如果是32位访问,应该不用这两条地址线吧。如果16位或者8位,LOCAL BUS的地址线A1、A0可由信号LBE[3:0] 得到的。 2、PCI9054有片选信号?没太注意哦!至于本地C31的存储地址和计算机的地址的映射关系,应该与驱动程序的处理有关吧?你自己设计硬件时只要把板上的地址规划好就行了,我觉得。 3、你所说的“只是要C31读取计算机发来的数据、c31向计算机发出数据,此时我的电路板是否是作为目标版”好象不太清楚哦! 一般来说,如果是通用PCI卡,我觉得还 PCI做主方式,DSP做从方式比较恰当,也比较简单,这样是可以实现数据的双向传递的(用PCI target读和写,但需要加一些消息传递的机制)。如果DSP本身要做主方式,而PCI只工作在从方式,好象想象起来要困难一些。 不过要是还没满足你的要求的话,就只好设计双向的了,这样的接口更麻烦哦! ----------------------------------------------------------- 如果我对自己做的PCI板(9054)进行数据的读取时,应如何进行,它的地址空间我应如何配置???? 如果你使用的是win98,先在pci卡上的eeprom中写入pci配置空间数据,从中指明要申请的i/o范围,即需几个i/o空间,每个i/o空间需多少个连续的i/o地址.要注意的是写0的是有效的,比如需16个i/o地址,则应写F0.将卡装在电脑上,启动后,WIN98会自动找到你的卡,让你装入驱动程序,最重要的一点你的驱动程序必须响应系统的PNP_NEW_NODE 消息.驱动程序装完后,系统会跟据你PCI卡上的请求分给你相应的IO地址.但是你若对PCI卡的I/O地址进行操作,你必须先获得I/O基地址. 方法有好几种: 1.使用0XFC8,0XFC地址. 2.采用节点遍历,从0节点开始直到你找到VENDORID和DEVICEID符合要求. |
|
|
沙发#
发布于:2002-12-25 18:32
希望大家把一些开发过程中经常遇到的问题贴上来。
方便新入门PCI开发的人能省点时间 资源共享啊 |
|
|
板凳#
发布于:2003-02-10 19:03
好主意,不过要贴到“硬件开发”那就好了。
|
|