摘要:STM32F407VG工程进入软件仿真时,出现*** error 65: access violation at 0x0000000C : no 'read' permission错误。当点击RUN按钮时会重复提示*** error 65: access violation at 0x00000000 : no 'execute/read' permission的错误。


解决步骤:
1. Option->Debug->Use_Simulator->CPU.DLL的Parameter,改为-REMAP。现象:依然错误,当时内存地址已经改变:*** error 65: access violation at 0x40023800 : no 'read' permission
2. Option->Debug->Use_Simulator->Initialization_File,打开并新建一个.ini文件,里面写上map 0x40000000,0x400FFFFF read write保存即可(MAP不区分大小写,注意read和write中间是空格不是逗号)
3. 再进入Debugger就可以了
4. 或者,可以省略第二步,进入Debugger之后再设置map:Debug->Memory_map,手动输入0x40000000,0x400FFFFF(输入框上面有个示例是0x4000FFFF,但是这个地址值不够大,我们要大一点的0x400FFFFF)。步骤2和4的区别在于:每次退出Debugger后,步骤4的设置都会丢失,会比较麻烦,所以一般只用步骤2的方法
5. 貌似不能通过更改设置中的DLL和它的参数来修正STM32F4的这个错误。因为在keil的安装目录下的\ARM\BIN里面没有相应的DLL文件(通过“文件说明”项来查看文件的使用说明~)


参考:
1. amobbs帖子四楼:

前两天我也遇到这个问题,一起总结在这里:
1. 目标平台:stm32f107VCT6,使用Keil MDK4.72
进入仿真后直接出现第一个错误:*** error 65: access violation at 0x0000000C : no 'read' permission
读权限不够。ISP调试没有问题,只有软件仿真才出现error。
查了半天相关的内容解决不掉,很沮丧,大家都是用simulator状态下debug的memory map来解决访问权限不足的问题,这不能解决我的问题
但是后来思考了一下发现问题不在这里。
2. 在仿真时候查看反汇编窗口发现0x0000_0000的地方开始存储器的内容都是0x0000。这个被解释成机器指令就是 MOV R0,R0(实际上这里正常情况下不是可执行的代码
区,因此也不应该将0x0000解释为MOV R0,R0)。原本这些位置应该存放的是[参考《CM3权威指南》第三章]MSP初值(0x0000_0000 ~ 0x0000_0003),复位向量
(0x0000_0004 ~ 0x0000_0007),紧接着后面是一些异常中断向量表。其中复位向量是指示CM3内核在复位后应该从哪个地址取指的非常重要的一个值,而现在这个值是
0x0000_0000,也就是说机器在复位后时设置MSP为0x0000_0000中的值后,从0x0000_0000取出指令解释并执行。这样程序会执行MOV R0,R0。
3. 出现的第一个Error是:access violation at 0x0000000C : no 'read' permission。0x0000_000C是硬Fault的异常向量入口地址。仿真时点击工具栏 -> Periphral ->Core Periphral
-> Fault Reports,发现有两个Fault:Usage Faults的INVSTATE和Hard Faults的FORCED。查询《CM3权威指南》,INVSTATE位挂起的原因是加载到PC中的跳转地址值是偶数。
机器在这个地址取值的时候应该(这里我不确定)还在执行F107的启动文件(.asm),由于STM32的指令地址的最低位必须是1(CM3的Thumb-2 ISA支持16位和32位寻址,因此地址的LSB
理论上是没有用的,CM3在正常情况下将PC的LSB置为1来表示执行Thumb指令)。
出现Usage Faults后,应该是由于一些CM3寄存器复位值的问题(我没有去验证过),又触发了硬Faults的FORCED位。这样Faults Reports中的位就解释通了。
4. 随后Google了半天,发现Keil官方论坛中提出的解决方案与我的问题相符(官方论坛的/22994/)。在Options for Target -> Debug -> “Simulator section” -> CPU DLL
中应该设置-REMAP,这样才会将0x0800_0000的Flash映射到0x0000_0000的地址上。
5. 这样,一开始0x0000_000C的Error解决了,运行出现了楼主的错误:*** error 65: access violation at 0x40021000 : no 'read' permission
现在出现的问题才是大部分人遇到的问题,CM3对存储器定义了4种属性,读写执行缓冲等等[参考《CM3权威指南》第五章],这时只要在仿真时点 Debug -> Memory map,将适当长度的
存储器赋予所需的权限就可以进行F107的仿真了。
楼主链接中提到的:自己写simulation DLL,恐怕对处理器细节没有很好把握的话估计很难用到了,毕竟有硬件平台还是用硬件平台调试,Flash的烧写算法比这个CPU DLL的仿真靠谱。

  1. Keil错误的官方解析
  2. YouTube视频


“*** error 65: access violation at 0x0000000C : no 'read' permission”错误的解决相关推荐

  1. 解决 *** error 65: access violation at 0x0000000C : no 'read' permission

        今天调试win7 下 MDK 调试 tq2440 的跑马灯程序出现*** error 65: access violation at 0x0000000C : no 'read' permis ...

  2. keil软件仿真*** error 65: access violation at 0x0000000C : no 'read' permission

    1.把keilkill.bat文件放到如下图与Project同路径下面,双击keilkill.bat即可以删除编译产生的中间文件,删除后再重新编译即可以避免xxx.__i类似错误. keilkill. ...

  3. error 65: access violation at 0x40021000 : no 'read' permission

    使用MDK自己创建一个STM32F103VE核的项目 加入源码后编译,正常,在线仿真单步执行出现如下问题 error 65: access violation at 0x40021000 : no ' ...

  4. MDK5.00中*** error 65: access violation at 0x40021000 : no 'read' permission的一种解决方法

    自从升级到MDK5版本后,以前由MDK4建的工程都正常,但是用MDK5来建立工程的话,总是在软件仿真的时候出现 *** error 65: access violation at 0x40021000 ...

  5. KEIL5软件仿真出现*** error 65: access violation at 0xE0001004 : no ‘read‘ permission的解决方法

    故障图: 解决方法: 第一步: 设置下面的"Dialog DLL"项为"DARMSTM.DLL"和"TARMSTM.DLL":paramet ...

  6. *** error 65: access violation at C:0x001B : no 'execute/read' permission

    转自:http://blog.csdn.net/chenqiai0/article/details/7827071 很多人在进行串口调试的时候会遇到这个问题,请大家略看我的代码,解决方法在其中 //实 ...

  7. MySQL SQLSTATE[42000]: Syntax error or access violation: 1286 Unknown table engine 'InnoDB' 错误的原因及解决

    博客搬家:由于各种原因,我现在的博客将首发于blog.mojijs.com, 可以百度搜索 "姜哥的墨迹技术博客" , 或者 点击这里 本文首发地址 http://blog.moj ...

  8. Syntax error or access violation: 1305 FUNCTION *****.json_extract does not exist

    Syntax error or access violation: 1305 FUNCTION *****.json_extract does not exist 背景 报错原因 背景 使用mysql ...

  9. PDOException::(“SQLSTATE[42000]: Syntax error or access violation: 1071 Specified key was too long;

    运行php artisan migrate报错 PDOException:: ("SQLSTATE[42000]: Syntax error or access violation: 107 ...

最新文章

  1. 线性基+树上倍增 ---- BZOJ4568[线性基+树上倍增]
  2. wxpython问卷调查界面_调查问卷使用说明书,问卷就要这么设计!
  3. 后台(27)——文件上传
  4. python课设代码_python课程编程题汇总(上)
  5. IDEA卡顿问题解决-加大内存
  6. java opc 读取到数据块的数据_MES系统功能数据传输的介绍
  7. 中小学计算机听课记录表,小学数学听课记录范文表格
  8. C#Const与static readonly的区别
  9. 计算机用户组权限管理,配置Windows server 用户和组权限实验详解
  10. [翻译][HTML]CELLPADDING and CELLSPACING
  11. 代码资源之中国天气网城市代码
  12. NOIP2015初赛成绩
  13. 【C/C++】银行排队系统
  14. 反超苹果,微软重回全球市值第一!
  15. Jenkins——Jenkins+harbor+gitlab(git) 部署maven项目
  16. MSP430F149--点亮LED灯程序代码
  17. 无图形界面Linux安装chrome实现自动化测试
  18. SCL 和 SDA 是 I2C 总线上的两个信号线。 c++ 模拟数据
  19. ftp服务器型号,ftp服务器的类型及其特点
  20. ToB和ToC的产品经理的区别

热门文章

  1. hadoop hdfs常见命令
  2. 数据分析模型(二):模糊聚类分析方法及实例(附完整代码)
  3. Linux和Windows系统下:安装Anaconda、Paddle、tensorflow、pytorch,GPU[cuda、cudnn]、CPU安装教学,以及查看CPU、GPU内存使用情况
  4. 希捷1TB硬盘正式发布
  5. Apache CXF Code Generation Maven2 Plugins plugin.xml
  6. 屡破记录!国产数据库何以后来居上?
  7. c语言putchar与getchar,C语言中的getchar和putchar详解
  8. c语言用函数求最大公约数和最小公倍数
  9. html全屏漂浮,jquery全屏漂浮广告插件,可点击关闭(原创)
  10. 上瘾性行为,戒不掉的颓废