我想读取位于地址 302H 中的值。目的是从硬件(104pc 堆栈的一部分)读取输入。当我运行以下代码时出现此错误:setOutput.exe 中 0x004134b9 处未处理的异常:0xC0000005:访问冲突读取位置 0x00000302。
#include <stdlib.h>
#define PORTBASE 0x302
int _tmain(int argc, char *argv[])
{
int value;
int volatile * port = (int *) PORTBASE;
printf("port = %d\n", port);
value = *port;
printf("port value = %d\n", value);
}
编辑:
我在 widows xp 下运行这个。我能在板上找到的唯一文档在 下面
编辑:
从您下面的回答中,我可以看出我需要为开发板编写一个驱动程序。有人可以为我指出有关如何执行此操作的资源吗?
最佳答案
要在Windows下直接访问物理内存,需要开发驱动程序。我建议你阅读 Virtual Address Space看看为什么。简短的故事:您从用户模式进程中看到的内存地址与物理内存地址无关,并且硬件所在的地址受到操作系统的保护,以防止用户模式应用程序搞砸事情。
关于c++ - 如何读取 C++ 中硬编码地址的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5158220/