阅读:1426回复:0
我已经被搞的死去活来了,搞pci的帮一下小弟。
情况如下:用pci9052做一记数板,开机一切正常,dos下可用plxmon正确读写eep,windows下用windrive也可以正确识别卡,驱动安装也正常,可以分配正确的资源,pci这一侧我想应该是正常的。
但是local端的读写,不管怎样都不能正确读写,用示波器看地址信号的产生都是正常的(译码正确)。 local端是这么接的,lad0-lad7数据线挂两个8253, LBE0#,LBE1#,LA2,LA3挂cpld做译码产生两个8253片选, RD#,WR#挂cpld译码并且直接接到8253做读写信号。(cpld还做其他信号的处理,暂时未加这些处理部分) LRDYI#接地 LCLK,BCLO用50 ou电阻连起 LHOLD用电阻下拉 NOWS#下拉 CHRDY上拉 MODE下拉 其余local脚全部留空 读写方式为io读写 总共需分配16个io地址0x00-0x0f 本来设计是isa方式的,后来注意到了isa方式是8M的时钟,我这里用了33M,所以改成非ISA方式了 eep内容如下 eep 0 905210b5 echo PCIIDR; Device ID, Vendor ID eep 4 06800002 echo PCICCR; Class Code eep 8 905210b5 echo Subsystem ID, Subsystem Vendor ID eep c 00000100 echo Maximum Latency, Minimum Grant, Int Pin, Int Routing eep 10 00000000 echo LAS0RR; Local Address Space 0 Range eep 14 fffffff1 echo LAS1RR; Local Address Space 1 Range eep 18 00000000 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 00000000 echo LAS0BA; Local Address Space 0 Base Address (Re-Map) eep 28 00000001 echo LAS1BA; Local Address Space 1 Base Address (Re-Map) eep 2c 00000000 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 00000000 echo LAS0BRD; Local Address Space 0 Bus Region Descriptors eep 3c 00000022 echo LAS1BRD; Local Address Space 1 Bus Region Descriptors eep 40 00000000echo 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 00000000 echo CS0BASE; Chip Select 0 Base eep 50 00000009 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 00000000 echo INTCSR; Interrupt Control/Status eep 60 00454012 echo CNTRL; User I/O, EEPROM, Init Control 分配的资源为BAR0 0xfa000000-0xfa00007f BAR1 0xd000-0xd07f BAR3 0xd400-0xd40f 请帮忙分析一下会是什么原因,是不是由于时钟太快要在CNTRL里设置相应的延时和保持? |
|