写在前面:这篇文章纯粹是用google翻译来的,方便不E文水准和我差不多的童鞋,如有不通顺的地方还请自己琢磨
原文地址http://www.keil.com/support/docs/814.htm
症状
我的项目包括访问I使用绝对内存地址的变量。在调试的μVision生成以下错误每当我试图写变量:
***错误65:访问冲突在0x00000004:没有“写”权限
我已指定该存储区的连接,但我仍然收到此错误。
原因
当的μVision调试加载一个可执行程序,它创建使用来自该程序的程序和数据段的存储映像。代码段被标记为可执行的同时数据段被标记为读/写。所有其他的内存是未映射的,因此,没有标明任何类型的访问。
在调试的μVision检查所有的内存访问是在你的C程序中定义的对象进行的。对于任何访问这是一个定义的C对象外,在调试的μVision产生 错误65:访问冲突 的消息。
默认情况下,调试程序只允许存储器访问有效的数据对象。这对查找未初始化或不正确初始化的指针,例如有用的。通常情况下,有一个编程错误,当您尝试访问意想不到的位置。
解析度
启用绝对内存访问使用存储区域 MAP 调试命令或 调试-内存映射 对话框。定义所有的内存范围,你的程序被允许访问。确保每个范围以符合您的实际硬件设置权限(读,写,执行)。
你可以把所需的映射命令到可以下进入调试器INI文件 项目-目标>选项- >调试- >初始化文件。例如,一个这样的文件的内容可以是:
MAP 0xF800,0xF8FF读写//允许IO空间R / W访问