当前位置:首页 > 技术心得 > 正文内容

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

xjtudll8年前 (2018-05-11)技术心得9010

经过测试发现,该办法仅仅适合STM32F103,对于STM32F107,即使这样修改,还是提示同样的error的。

我是在Win7 64bit下实验的

以下是参考资料:

https://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

如下图所示,途中红圈分别表示了代码执行到的位置及相应的错误信息

20140428212304656

网络上查找解决方案同时对比ST提供的3.5版本固件库中的工程模板,发现是工程配置选项中的debug选项卡的dialog dll和对应的parameter配置出了问题。选中MCU后默认的配置如下图:

20140428212637312

可以看到dialog dll默认配置为DCM.DLL,而parameter默认配置为-pCM3,该种配置无法进行正常的仿真调试。

正确配置应该为dialog dll:DARMSTM.dll parameter:-pSTM32F103C8

这两个参数是根据你使用的MCU不同而不同的,例如本工程使用的MCU为STM系列,那么在dialog DLL选项中就应该使用DARMSTM.dll,名字中的STM就是指厂商,参数则是具体的MCU芯片型号,本项目使用STM32F103C8T6,因此选择为STM32F103C8,如下图所示:

20140428213441203

为何使用的是STM32F103C8T6,参数却只能是STM32F103C8,这个原因是因为根据ST公司的MCU命名规则,到C8这个位置就已经完全规定了仿真所需要的所有参数,包括cpu频率,ram容量,flash容量,外设资源等内容。型号中后边的部分都已经和仿真无关了,例如后边的名字主要代表了MCU的封装,工作温度等。官方命名规则如下图:

20140428214034765

当然还有一个更加直接的原因是DARMSTM.DLL这个动态链接库文件中没有详细的MCU型号,我们可以通过使用工具打开动态链接库文件查看证明,如下图所示,图中可以清楚的看到一个MCU的型号只有11个字符,不包括后边的其他参数字符。

20140428214338609

总结:该问题的产生,归根到底还是keil IDE的问题,正常的情况,应该是通过工程向导建立工程的时候,配置参数就自动使用该MCU应该使用的dialogdll及相关参数。不得不感叹,KEIL有的时候也很傻啊!!

扫描二维码推送至手机访问。

版权声明:本文由鸟的天空发布,如需转载请注明出处。

本文链接:http://xjtudll.cn/Exp/499/

标签: keil
分享给朋友:

“error 65: access violation at 0x40021000 : no 'read' permission” 的相关文章

常用电平标准

常用电平标准

现在常用的电平标准有TTL、CMOS、LVTTL、LVCMOS、ECL、PECL、LVPECL、RS232、RS485等,还有一些速度比较高的LVDS、GTL、PGTL、CML、HSTL、SSTL等。下面简单介绍一下各自的供电电源、电平标准以及使用注意事项。 1、TTL电平 TTL:Transi...

iOS:TabBar的图片不显示,只显示灰色的正方形

问题: tabbar上的图片变成一块正方形的灰色块块,原先的图片没有了。 原因: tabbar上的图片本质上不是一个图片,而是一个形状图片。系统对我们使用的图片也只是把其中的形状"抠"出来,其余的背景什么的都不要。因为我们可能给背景加了颜色,所以系统"抠"的时...

IAR Error: Unknown or ambiguous symbol. main解决

IAR Error: Unknown or ambiguous symbol. main解决

网上下载了一个程序(含工程),打开一debug,提示:“Error (col 1): Unknown or ambiguous symbol. main”。经查:设置里没有生成debug information 解决办法: Project->C/C++Compiler-...

群晖Apache 忽略文件名大小写

群晖Apache 忽略文件名大小写

参考资料:https://www.cnblogs.com/shipment/p/14767848.html 1、SSH登录群晖ssh  admin@201.201.201.1682、修改conf文件权限为777sudo chmod 777 /volume1/@appstore/Apache...

聚合物电池的容量如何计算

参考资料: http://www.18650.com.cn/news/15373393.html 1、测量开路电压 电池端电压和剩余容量之间有一个确定的关系,测量电池端电压即可估算其剩余容量。 这种方法的局限是: 1)对于不同厂商生产的电池,其开路电压与容量之间的关系各不相同。 2)只有通过测...

sql server 2008提示“列名无效”,但是能正常查询

在SQLServer2008中,当设计(修改)表结构之后,再用SQL语句时,列名会显示无效,但执行可以通过.原因是SQL Server的intellisense(智能感知功能)需要重新整理一下,用快捷键Ctrl+Shift+R即可 归根结底是智能提示出了问题,用了缓存。...

发表评论

访客

◎欢迎参与讨论,请在这里发表您的看法和观点。