marcch
驱动牛犊
驱动牛犊
  • 注册日期2007-06-22
  • 最后登录2009-02-02
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望16点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
阅读:1580回复:5

wince5.0下直接读写内存

楼主#
更多 发布于:2007-09-13 17:29
想在wince5.0下直接读写内存,往指定的空间读写数据,该怎么实现,忘达人们给点建议!!谢谢!!
我在CSDN上也发过帖,没解决 :(
http://community.csdn.net/Expert/topic/5752/5752579.xml?temp=.2259943
wenzai
驱动中牛
驱动中牛
  • 注册日期2002-04-16
  • 最后登录2011-03-04
  • 粉丝0
  • 关注0
  • 积分14分
  • 威望424点
  • 贡献值0点
  • 好评度309点
  • 原创分0分
  • 专家分0分
沙发#
发布于:2007-09-13 21:33
在config.bib中单独划分该部分内存为保留区,然后在做

bRet = VirtualCopy((LPVOID)lpv,(LPVOID)(PHYSADDR>>8), SIZE, PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL);

PHYSADDR这个你是什么?
marcch
驱动牛犊
驱动牛犊
  • 注册日期2007-06-22
  • 最后登录2009-02-02
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望16点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
板凳#
发布于:2007-09-14 10:07
谢谢楼上的热心回复!
我定义 PHYSADDR  为:     #define PHYSADDR  (0x88000000)
要在config.bib中划分保留区,那么也就是跟我定义的 PHYSADDR 相关,是吗?  
在config.bib中怎么划分保留区呢,取名是随意的吗?我的confog文件为:

MEMORY

;   Name     Start     Size      Type
;   -------  --------  --------  ----
    BLDR     80000000  00058000  RESERVED
    DRVGLOB  80058000  00001000  RESERVED
   NK       80059000  02000000  RAMIMAGE ; 32 MB
   RAM      82059000  01EA7000  RAM      ; 47.56 MB
  GDIRAM     83f00000  00100000     RESERVED ; use for gdi
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
地板#
发布于:2007-09-15 18:20
在config.bib中把你想保留的这段SDRAM空间不要指定给任何区域(NK或RAM),或者设成RESERVED就行了,就像你这一段:

 DRVGLOB  80058000  00001000  RESERVED
学海无涯
marcch
驱动牛犊
驱动牛犊
  • 注册日期2007-06-22
  • 最后登录2009-02-02
  • 粉丝0
  • 关注0
  • 积分41分
  • 威望16点
  • 贡献值0点
  • 好评度5点
  • 原创分0分
  • 专家分0分
地下室#
发布于:2007-09-21 10:56
Thanks!
我用MmMapIoSpace 函数 直接映射想要访问的地址,可以正常读写,但是只是在应用程序中实现的,定制的系统也是全内核模式,我担心这样没有中断,多个程序访问同一地址的话会出错!!

但我在流驱动里怎么就不能用MmMapIoSpace 函数实现呢,流驱动是工作在什么模式下?流驱动要自己去写中断代码吗?
microsun
论坛版主
论坛版主
  • 注册日期2002-11-11
  • 最后登录2014-07-18
  • 粉丝0
  • 关注0
  • 积分1052分
  • 威望1159点
  • 贡献值0点
  • 好评度848点
  • 原创分0分
  • 专家分0分
5楼#
发布于:2007-09-22 10:41
驱动里也一样可以用这个函数,看看可能那个参数给的不对吧.我的驱动里都是用这个函数的.

如果需要,可以在驱动里实现IST来处理中断.但这与你访问内存似乎没有关系,不知道你具体是怎样的需求?
学海无涯
游客

返回顶部