【嵌入式-汇编】access violation at C:0x003D : no ‘execute/read‘ permission

说明:一般情况下,在keil中配置好ld.map链接文件就不会出现这种情况!除非代码里访问了超过当前arm板的地址!

在进行keil仿真测试的时候,当点击运行时出现*** error 65: access violation at C:0x003D : no ‘execute/read’ permission类似这样的情况,这是因为0x003D开始的地址没有执行/读的权限,因此要设置。另外一种情况,你的起始地址不是从0x0000H开始,如果说你的地址是从0x0000H开始的,那么就不用执行下面的步骤,因为一般都可以的直接运行的。
解决方法:
点击“Debug”,出现以下窗口,
【嵌入式-汇编】access violation at C:0x003D : no ‘execute/read‘ permission_第1张图片
然后点击Memory Map…,弹出以下窗口,
【嵌入式-汇编】access violation at C:0x003D : no ‘execute/read‘ permission_第2张图片
在Map Range中填写程序运行所用的地址空间,可以在如下图所示的窗口中查看
【嵌入式-汇编】access violation at C:0x003D : no ‘execute/read‘ permission_第3张图片
那么填写的方式如下图:
【嵌入式-汇编】access violation at C:0x003D : no ‘execute/read‘ permission_第4张图片
其中,Read、Wirte和Execute一定要勾选,点击Map Range之后Close即可,那么程序就可以运行了。
注:Map Range中间的地址间隔以英文格式的逗号隔开,地址范围可以设置的比所用的地址范围大。
这个解决方式我是基于keil u5版本截图演示的,其他版本差不多,找到相应的窗口即可解决。

你可能感兴趣的:(汇编,c语言,开发语言)