阅读:1647回复:5
wince5.0下直接读写内存
想在wince5.0下直接读写内存,往指定的空间读写数据,该怎么实现,忘达人们给点建议!!谢谢!!
我在CSDN上也发过帖,没解决 :( http://community.csdn.net/Expert/topic/5752/5752579.xml?temp=.2259943 |
|
沙发#
发布于:2007-09-13 21:33
在config.bib中单独划分该部分内存为保留区,然后在做
bRet = VirtualCopy((LPVOID)lpv,(LPVOID)(PHYSADDR>>8), SIZE, PAGE_READWRITE | PAGE_NOCACHE | PAGE_PHYSICAL); PHYSADDR这个你是什么? |
|
板凳#
发布于: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 |
|
地板#
发布于:2007-09-15 18:20
在config.bib中把你想保留的这段SDRAM空间不要指定给任何区域(NK或RAM),或者设成RESERVED就行了,就像你这一段:
DRVGLOB 80058000 00001000 RESERVED |
|
|
地下室#
发布于:2007-09-21 10:56
Thanks!
我用MmMapIoSpace 函数 直接映射想要访问的地址,可以正常读写,但是只是在应用程序中实现的,定制的系统也是全内核模式,我担心这样没有中断,多个程序访问同一地址的话会出错!! 但我在流驱动里怎么就不能用MmMapIoSpace 函数实现呢,流驱动是工作在什么模式下?流驱动要自己去写中断代码吗? |
|
5楼#
发布于:2007-09-22 10:41
驱动里也一样可以用这个函数,看看可能那个参数给的不对吧.我的驱动里都是用这个函数的.
如果需要,可以在驱动里实现IST来处理中断.但这与你访问内存似乎没有关系,不知道你具体是怎样的需求? |
|
|