error 65: access violation at 0x40021000 : no 'read
来源:互联网 发布:饥荒攻略秘籍软件 编辑:程序博客网 时间:2024/05/22 13:58
http://blog.csdn.net/beready/article/details/24668529
开发环境:keil MDK V5.10
操作系统:windows 7(32位)
问题描述:使用MDK进行软件设计时没有使用ST官方的模板而是手动建立的工程,使用ST官方提供的3.5版本固件库。编译完全通过,在使用软件仿真时出现问题,表现为程序无法跳转到main入口,直接在SystemInit()函数就无法执行,调试窗口出现如标题所示的错误信息:
error 65: access violation at 0x40021000 : no 'read' permission
如下图所示,途中红圈分别表示了代码执行到的位置及相应的错误信息
网络上查找解决方案同时对比ST提供的3.5版本固件库中的工程模板,发现是工程配置选项中的debug选项卡的dialog dll和对应的parameter配置出了问题。选中MCU后默认的配置如下图:
可以看到dialog dll默认配置为DCM.DLL,而parameter默认配置为-pCM3,该种配置无法进行正常的仿真调试。
正确配置应该为dialog dll:DARMSTM.dll parameter:-pSTM32F103C8
这两个参数是根据你使用的MCU不同而不同的,例如本工程使用的MCU为STM系列,那么在dialog DLL选项中就应该使用DARMSTM.dll,名字中的STM就是指厂商,参数则是具体的MCU芯片型号,本项目使用STM32F103C8T6,因此选择为STM32F103C8,如下图所示:
为何使用的是STM32F103C8T6,参数却只能是STM32F103C8,这个原因是因为根据ST公司的MCU命名规则,到C8这个位置就已经完全规定了仿真所需要的所有参数,包括cpu频率,ram容量,flash容量,外设资源等内容。型号中后边的部分都已经和仿真无关了,例如后边的名字主要代表了MCU的封装,工作温度等。官方命名规则如下图:
当然还有一个更加直接的原因是DARMSTM.DLL这个动态链接库文件中没有详细的MCU型号,我们可以通过使用工具打开动态链接库文件查看证明,如下图所示,图中可以清楚的看到一个MCU的型号只有11个字符,不包括后边的其他参数字符。
总结:该问题的产生,归根到底还是keil IDE的问题,正常的情况,应该是通过工程向导建立工程的时候,配置参数就自动使用该MCU应该使用的dialogdll及相关参数。
- error 65: access violation at 0x40021000 : no 'read' permission
- error 65: access violation at 0x40021000 : no 'read' permission
- *** error 65: access violation at 0x40021000 : no 'read' permission
- *** error 65: access violation at 0x40021000 : no 'read' permission
- error 65: access violation at 0x40021000 : no 'read
- MDK5.00中*** error 65: access violation at 0x40021000 : no 'read' permission的一种解决方法
- STM32 软件仿真失败 ***** error 65: access violation at 0x40021000 : no ****'read' permission******
- “*** error 65: access violation at 0x40021000 : no 'read' permission”错误的解决
- JUMNE: error 66: access violation at 0x40021000 : no 'read' permission
- STM32 KEIL不能输入仿真引脚端口error 65: access violation at 0x40021000 : no 'read' permission
- 在keil 5的软件仿真中避免error 65: access violation at 0x40021000 : no 'read' permission
- MDK5keil仿真调试程序报错:*** error 65: access violation at 0x40021000 : no 'write' permission
- *** error 65: access violation at C:0x001B : no 'execute/read' permission
- 解决 *** error 65: access violation at 0x0000000C : no 'read' permission
- keil软件仿真*** error 65: access violation at 0x0000000C : no 'read' permission
- “*** error 65: access violation at 0x0000000C : no 'read' permission”错误的解决
- *** Error 65: Access violation at 0x00000004 : No 'write' permission
- *** error 65: access violation at 0x68014802 : no 'write' permission
- deeplearning.ai-lecture2-week1-Gradient Checking-homework
- 数据库操作 —— 快速入门:基本配置和使用、读写分离 & 数据库事务
- BGA fanout 设计 --creat fanout
- BBB学习(四):SD卡安装系统镜像(2):系统镜像简析
- 判断一个数是不是素数
- error 65: access violation at 0x40021000 : no 'read
- 并行加密算法系列(一)之AES单个加密模式的可并行性分析
- 自己搭建内网可用的Jrebel License Server激活Jrebel
- OpenCV2.4.13中同一函数不同形参的理解,vector,list区别,findContours理解
- SQL
- deeplearning.ai-lecture2-week1-Initialization-homework
- 初识工厂设计模式
- (File类文件移植)
- JNI生成.h文件无法确定类的签名