阅读:1921回复:10
ISA 内存映射 驱动程序如何读共享内存?
做了一块ISA卡,共享ram内存映射(0xd0000,64k Bytes),在dos下能运行了。在编制WinCE的驱动程序,驱动程序如何读共享内存?
把0xd0000赋给指针,用memcpy恐怕不行吧。HalTranslateBusAddress似乎也不行。 苦闷,请求支援。 |
|
沙发#
发布于:2004-05-19 18:01
何谓“共享内存”?
|
|
|
板凳#
发布于:2004-05-20 09:24
ISA卡上的双端口ram,32k*16bit;现在两侧的dos程序和dso都可以读写。
|
|
地板#
发布于:2004-05-20 09:25
ISA卡上的双端口ram,32k*16bit;现在两侧的dos程序和dsp都可以读写。
|
|
地下室#
发布于:2004-05-21 15:24
用virtualalloccopy,参照lcd的驱动
或者用TransBusAddrToVirtual,参照msdn |
|
5楼#
发布于:2004-05-26 09:56
ziyun:请看看我的代码片断,在中断服务线程中的,有什么错误没有,我将以并给分。运行时,一开始正确,能读到数据,很快第一个TransBusAddrToVirtual会失败,返回rawbuf == 0x0;
说明:先取0xd0000 + 0xfffe处的一个偏移值,然后从64kB的中该偏移处读数据。 InAddr.HighPart = 0; InAddr.LowPart = 0xd0000 + 0xfffe; AddressSpace = 0; if(TransBusAddrToVirtual( Isa, 0, InAddr, sizeof(SHORT), &AddressSpace, &rawbuf)) { } offset = *rawbuf; InAddr.HighPart = 0; InAddr.LowPart = 0xd0000 +offset*2; AddressSpace = 0; if(TransBusAddrToVirtual( Isa, 0, InAddr, SR_PERBUF_SIZE, &AddressSpace, &rawbuf )) { memcpy(gdevExt.wfDataBuffer[j][gdevExt.wfWritePoint],rawbuf,SR_PERBUF_SIZE); } |
|
6楼#
发布于:2004-06-03 22:46
你好,我也遇到了同样的问题,不知道你现在解决了没有?可否给我发一份你的程序,一体研究一下
shengtao-2002@163.com |
|
7楼#
发布于:2004-06-04 11:07
转换的指针使用后,调用MmUnmapIoSpace
|
|
8楼#
发布于:2004-06-09 11:25
主要是指针转化了,完了之后就没有什么问题了,和操作本地一样
|
|
|
9楼#
发布于:2004-07-15 23:27
benage,你好,我正在做ce下的isa开发,能否将代码发给我参考一下,zgshou@hotmail.com。谢谢先!
|
|
10楼#
发布于:2004-08-10 10:11
benage,你好,我也正在做ce下驱动程序的开发,能否也将代码发给我一份,参考一下,共同提高!wwei_wang@163.com 谢谢先!
|
|
|