阅读:1435回复:10
PCI9052中CS的问题
设定的CS0和CS1有什么讲究吗?我的CS0的地址设定在LOCAL SPACE 1中,LS1是IO访问的,但现在对CS0的地址范围内的地址写,CS0没有反应,这是怎么回事?谢谢。
|
|
|
沙发#
发布于:2004-02-18 22:41
没有朋友了解这个基本问题吗?我从DATASHEET上看的是CS0所在的地址范围一定要在LOCAL SPACE内,不管是哪个LS,现在由EEPROM确定的,PCI给板卡分配的空间是LSA1是0xe400-0xe4ff,CS0BASE是0xe405,请问这样设置有问题吗?
我现在的情况就是向0xe404或附近其它的地址写数,CS0没有任何变化,请问这是什么情况,万分感谢,已经困扰了我近一周了。 |
|
|
板凳#
发布于:2004-02-20 14:39
我现在上班,完上回去我给你设定。ok
|
|
|
地板#
发布于:2004-02-20 14:48
好,谢谢您,晚上我一直在线等着您的消息,谢谢。
|
|
|
地下室#
发布于:2004-02-20 19:14
你还得看看书,本地地址空间0,1,2,3分别有4个寄存器来设定(如本地空间0由LAS0RR,LAS0BA,LAS0BRD,CS0BASE设定。)
你一会儿LSA1,一会儿CS0当然不行了。我给你一个设定这4个寄存器的文档。 |
|
|
5楼#
发布于:2004-02-20 22:47
不行啊,我按下面这个样子写入EEPROM:eep 0 905010b5 echo PCIIDR; Device ID, Vendor ID
eep 4 06800002 echo PCICCR; Class Code eep 8 905010b5 echo Subsystem ID, Subsystem Vendor ID eep c 00000100 echo Maximum Latency, Minimum Grant, Int Pin, Int Routing eep 10 fffe0000 echo LAS0RR; Local Address Space 0 Range eep 14 ffffff01 echo LAS1RR; Local Address Space 1 Range eep 18 fffffff1 echo LAS2RR; Local Address Space 2 Range eep 1c 00000000 echo LAS3RR; Local Address Space 3 Range eep 20 00000000 echo EROMRR; Expansion ROM Range eep 24 00000001 echo LAS0BA; Local Address Space 0 Base Address (Re-Map) eep 28 000f0001 echo LAS1BA; Local Address Space 1 Base Address (Re-Map) eep 2c 000ffff1 echo LAS2BA; Local Address Space 2 Base Address (Re-Map) eep 30 00000000 echo LAS3BA; Local Address Space 3 Base Address (Re-Map) eep 34 00000000 echo EROMBA; Expansion ROM Base Address (Re-Map) eep 38 000000a2 echo LAS0BRD; Local Address Space 0 Bus Region Descriptors eep 3c 00400022 echo LAS1BRD; Local Address Space 1 Bus Region Descriptors eep 40 00400022 echo LAS2BRD; Local Address Space 2 Bus Region Descriptors eep 44 00000000 echo LAS3BRD; Local Address Space 3 Bus Region Descriptors eep 48 00000000 echo EROMBRD; Expansion ROM Bus Region Descriptors eep 4c 00010001 echo CS0BASE; Chip Select 0 Base eep 50 000f0081 echo CS1BASE; Chip Select 1 Base eep 54 00000000 echo CS2BASE; Chip Select 2 Base eep 58 00000000 echo CS3BASE; Chip Select 3 Base eep 5c 00000039 echo INTCSR; Interrupt Control/Status eep 60 00200003 echo CNTRL; User I/O, EEPROM, Init Control 往CS1的地址范围内的0Xf00f9写数,但CS1还是没有变化。 |
|
|
6楼#
发布于:2004-02-21 12:27
好了,有几点不明白,现在全说了吧:
1、9052的说明中明确写着CS0跟任意一个LAS没有直接的关系,但为什么CS0跟LSA0、CS1跟LSA1一定要有您所说的那个关系呢? 2、我按我上面的那个EEPROM编程,发现无论我LSA1BA设定什么值,计算机分配给的空间都是0xe400-0xe4ff,这是怎么回事?按说我的LSA1BA设定的是0xF0001的话,分配的空间至少要在0xF0001之上啊,不太明白。 3、按照上面的,我向0xe400-0xe4ff中的任何地址中写数,出现的情况是:CS1变低(终于低了,老天),但同时死机,也就是说,CS1一直为低了,而CS0没有变低,说明应该是向此地址写数影响到CS1变低的,但为什么会死机就不懂了。 4、说明:0xe400在我修改EEPROM之前计算机就分配的这个地址,但现在还是这个地址,计算机同时还分配的地址有0xe000-0xe00f,0xe800-0xe80f。 谢谢。 |
|
|
7楼#
发布于:2004-02-21 16:22
1.CS0跟LSA0、CS1跟LSA1有关系的
2.0xe400-0xe4ff是pc虚拟内存地址,0xF0001使本地地址,两个概念,两则只有空间一样大小。 你的本地空间0LAS0RR,LAS0BA,CS0BASE配置是对的,不知你本地空间0连的是什么东东,故不能确定LAS0BRD。 |
|
|
8楼#
发布于:2004-02-21 16:50
BADDR0:dffeff80
BADDR1:e801 BADDR2:dffc0000 BADDR3:e401 BADDR4:e001 BADDR5:0 我现在只是想向CS1对应的地址中送数,然后CS1出现正常的低电平,请问应该在程序里向什么地址送数呢? 下面是我套用了windriver中的程序的写数据的函数,您看应该写什么值呢? P9050_WriteSpaceDWord(hPlx, P9050_ADDR_SPACE1, 0x001, temp);//向CS1写数 [编辑 - 2/21/04 by jj_pp] |
|
|
9楼#
发布于:2004-02-21 17:20
0x001,为偏移地址。temp为值。
|
|
|
10楼#
发布于:2004-02-21 17:46
不懂您的意思,我的意思是您告诉我,如果我向CS1写数的话,应该写什么地址,那段函数中的变量是我加进去的,但我不知道它的值对不对,按照我上面说的内容,出现的情况是CS1变低,但是死机了。
|
|
|