benage
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2006-12-25
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
阅读:1872回复:10

ISA 内存映射 驱动程序如何读共享内存?

楼主#
更多 发布于:2004-05-19 16:37
做了一块ISA卡,共享ram内存映射(0xd0000,64k Bytes),在dos下能运行了。在编制WinCE的驱动程序,驱动程序如何读共享内存?
把0xd0000赋给指针,用memcpy恐怕不行吧。HalTranslateBusAddress似乎也不行。

苦闷,请求支援。


aha_here
驱动小牛
驱动小牛
  • 注册日期2003-10-11
  • 最后登录2009-03-07
  • 粉丝0
  • 关注0
  • 积分10分
  • 威望1点
  • 贡献值0点
  • 好评度1点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2004-05-19 18:01
何谓“共享内存”?
[size=3][color=red]勤学好问[/color][/size] [img]http://www.driverdevelop.com/forum/avatar/aha_here_xiao_zu.gif[/img]
benage
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2006-12-25
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2004-05-20 09:24
ISA卡上的双端口ram,32k*16bit;现在两侧的dos程序和dso都可以读写。
benage
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2006-12-25
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
地板#
发布于:2004-05-20 09:25
ISA卡上的双端口ram,32k*16bit;现在两侧的dos程序和dsp都可以读写。
ziyun
驱动小牛
驱动小牛
  • 注册日期2003-07-28
  • 最后登录2009-05-31
  • 粉丝0
  • 关注0
  • 积分17分
  • 威望109点
  • 贡献值0点
  • 好评度20点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2004-05-21 15:24
用virtualalloccopy,参照lcd的驱动

或者用TransBusAddrToVirtual,参照msdn
benage
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2006-12-25
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
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);
  }
st_nudt
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2004-12-03
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
6楼#
发布于:2004-06-03 22:46
你好,我也遇到了同样的问题,不知道你现在解决了没有?可否给我发一份你的程序,一体研究一下
 shengtao-2002@163.com
benage
驱动牛犊
驱动牛犊
  • 注册日期2004-03-05
  • 最后登录2006-12-25
  • 粉丝0
  • 关注0
  • 积分40分
  • 威望4点
  • 贡献值0点
  • 好评度4点
  • 原创分0分
  • 专家分0分
7楼#
发布于:2004-06-04 11:07
转换的指针使用后,调用MmUnmapIoSpace
blue123
驱动中牛
驱动中牛
  • 注册日期2002-11-09
  • 最后登录2009-09-14
  • 粉丝0
  • 关注0
  • 积分91分
  • 威望11点
  • 贡献值0点
  • 好评度10点
  • 原创分0分
  • 专家分0分
8楼#
发布于:2004-06-09 11:25
主要是指针转化了,完了之后就没有什么问题了,和操作本地一样
努力!
z_yhy
驱动牛犊
驱动牛犊
  • 注册日期2003-10-13
  • 最后登录2005-01-10
  • 粉丝0
  • 关注0
  • 积分0分
  • 威望0点
  • 贡献值0点
  • 好评度0点
  • 原创分0分
  • 专家分0分
9楼#
发布于:2004-07-15 23:27
benage,你好,我正在做ce下的isa开发,能否将代码发给我参考一下,zgshou@hotmail.com。谢谢先!
wwei_wang
驱动大牛
驱动大牛
  • 注册日期2002-06-07
  • 最后登录2006-06-23
  • 粉丝0
  • 关注0
  • 积分77分
  • 威望9点
  • 贡献值0点
  • 好评度7点
  • 原创分0分
  • 专家分0分
10楼#
发布于:2004-08-10 10:11
benage,你好,我也正在做ce下驱动程序的开发,能否也将代码发给我一份,参考一下,共同提高!wwei_wang@163.com 谢谢先!
Come on, let us drive the world.
游客

返回顶部