阅读:2432回复:17
EVC应用程序直接内存读写问题?
#define phyAddress 0x20000000
LPVOID pMyVm; DWORD cbSize=0x40000; if(!(pMyVm= VirtualAlloc(0,cbSize,MEM_RESERVE,PAGE_READWRITE))) { AfxMessageBox(_T("错误!")); } else { VirtualCopy( (LPVOID)pMyVm, (LPVOID)phyAddress, Size, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL); 在这儿进行读写pMyVm所指内存 发现并没有操作0x20000000所在存储器的片选 请问什么原因? VirtualFree((PVOID)pMyVm, 0, MEM_RELEASE); pMyVm = NULL; //AfxMessageBox(_T("正确!")); } |
|
论坛版主
|
沙发#
发布于:2005-02-05 13:17
0x20000000这个地址是不是物理地址?我指的是芯片手册上某个片选的地址,如果是按帮助的,要左移8位吧,如果不对改用静态映射虚拟地址,在OEMADDRESSTABLE里面找0x20000000映射到哪儿。找找上几个月的帖子,N个讨论这个问题的
|
|
板凳#
发布于:2005-02-05 13:18
#define phyAddress 0x20000000 VirtualCopy( (LPVOID)pMyVm, (LPVOID)phyAddress, Size, PAGE_READWRITE|PAGE_NOCACHE|PAGE_PHYSICAL);中phyAddress的值应该还要除以256吧。 |
|
|
论坛版主
|
地板#
发布于:2005-02-05 13:30
对头对头,右移,写错了哈:)
|
|
地下室#
发布于:2005-02-05 13:42
圣人也有笔误的时候,呵呵
|
|
|
论坛版主
|
5楼#
发布于:2005-02-05 13:55
不是笔误,是记错了,不,准确地说是回忆错了,没记:))我认罪
|
|
6楼#
发布于:2005-02-05 14:05
大哥,怎么搞的?老毛病又犯了?跟兄弟们谦虚啥子?:))
|
|
|
论坛版主
|
7楼#
发布于:2005-02-05 14:09
HAHA,没办法,缺点太多
|
|
8楼#
发布于:2005-02-05 14:22
大哥,注意没有,你的帖子数马上到四位数了,加油啊:)
|
|
|
论坛版主
|
9楼#
发布于:2005-02-05 14:27
!HAHA,真的喔,厉害,唐僧嘛,说话,跟吃饭一样,生理需要!兄弟儿,有时间再摆,GOOD LUCK!
|
|
10楼#
发布于:2005-02-05 14:33
好啊!另外,恭喜大哥又添两颗痘:)))
|
|
|
11楼#
发布于:2005-02-05 14:55
右移8位,问题依然存在
我用的是cirruslogic9315 |
|
12楼#
发布于:2005-02-05 16:35
右移8位,问题依然存在 如果是这样,有可能是下面的物理地址有问题,你检查一下 #define phyAddress 0x20000000 |
|
|
13楼#
发布于:2005-02-06 10:25
我已经自己解决了。
是因为编译优化造成的。 谢谢各位。 |
|
14楼#
发布于:2005-02-08 12:02
我已经自己解决了。 那是把编译优化去掉了还是怎么修改的?说来听听也好帮助帮助后来的朋友 |
|
|
15楼#
发布于:2005-02-24 09:39
那最后你是怎么改的呢,究竟有没有右移8位啊,还是按原来那样做的啊?
|
|
16楼#
发布于:2005-02-24 13:22
这里很热闹啊:))
|
|
|
17楼#
发布于:2009-04-22 18:28
|
|