阅读:1361回复:7
KIoRange 读写8250寄存器问题??
我用Driver works 写一个串口的wdm驱动程序,用kIoRange来实现对寄存器的读写,但是当地址为0x3f8时(8250)为什么读出的寄存器都为0xff。但是我试过用同样的方法可以读8259 8254 都没有问题,唯独读写8250的时候不对。
请指点,谢谢!!!!!!!!! |
|
沙发#
发布于:2003-05-20 11:36
我们在干同样的事,但我没碰到这样的问题。我的KInterrupt连接后不能响应中断,我把贴跟在楼主后面,向大家一起参详。谢谢!
|
|
板凳#
发布于:2003-05-20 14:19
请问你初始化的时候是怎样?
我的是这样 status=m_IoPortRange.Initialize(0x3f8,TRUE,8,TRUE); if ( !NT_SUCCESS(status) ) return status; 然后 再IoContorl写 UCHAR data1 = m_IoPortRange.inb(5);//读线路状态寄存器 t <<\"date:\" << (UCHAR)data1<< EOL; 但是结果却是date:0xff 我写的有问题吗?? 在线等待!谢谢 |
|
地板#
发布于:2003-05-22 10:09
我的代码跟你的基本上差不多,但你好像没有初始化8250芯片本身啊!例如,速率等等。你可以使用KIoRange送些初始化的数据进去啊!一点愚见,希望能够奏效。
对了,另有一事相求。请问你的中断连接是怎样做的啊!我的代码好像不响应。我的QQ是88490835,可以方便我们联系啊! |
|
地下室#
发布于:2003-05-23 10:05
奇怪了,问题这样初始化,8250芯片的寄存器根本无法写和读。更不用提初始化8250的波特率和 线路控制器了
至于中断我没有用,可能帮不上太大的忙!qq 3332996 |
|
5楼#
发布于:2003-05-23 21:10
你再看看这个好吗!
Initialize( PCM_RESOURCE_LIST pTranslatedResourceList, PCM_RESOURCE_LIST pRawResourceList, ULONG Ordinal=0, BOOLEAN MapToSystemVirtual =TRUE ); 但是!!!!!!! MapToSystemVirtual A Boolean flag indicating whether or not the constructor should create a mapping of the address range to nonpaged system space. This is ignored if the peripheral address is mapped to the processor\'s I/O space. It is necessary to do the mapping if the driver is to read or write data to the device. 所以,status=m_IoPortRange.Initialize(0x3f8,TRUE,8) is OK!! |
|
6楼#
发布于:2003-05-23 21:12
你使用的这个也一样
NTSTATUS Initialize( ULONGLONG CpuPhysicalAddress, BOOLEAN InCpuIoSpace, ULONG Count, BOOLEAN MapToSystemVirtual=TRUE ); |
|
7楼#
发布于:2003-05-24 13:31
It is necessary to do the mapping if the driver is to read or write data to the device.
再说,写了true应该没什么错吧。 谢谢你的意见,我试一下! |
|