STM32 Keil仿真调试
引用:http://blog.sina.com.cn/s/blog_3c63d2bd0102vt9a.html
问题描述:使用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及相关参数。不得不感叹,KEIL有的时候也很傻啊!!
STM32 Keil仿真调试的更多相关文章
- Keil 编译环境之在线仿真调试问题
一.问题现象: 这几天刚开始上手STM32,使用Keil 环境进行编程,然后使用ULINK2进行在线仿真,在按键处理函数程序中设置断点,却发现按了按键程序没有停在设置的断点,程序正常运行,如下图所示, ...
- Keil 的调试命令、在线汇编与断点设置
上一讲中我们学习了如何建立工程.汇编.连接工程,并获得目标代码,但是做到这一 步仅仅代表你的源程序没有语法错误,至于源程序中存在着的其它错误,必须通过调试才能 发现并解决,事实上,除了极简单的程序以外 ...
- 关于51精确延时及keil仿真延时时间
转自:http://blog.sina.com.cn/s/blog_980e19e00101b5dh.html 有时候需要精确的延时,比如18B20温度传感器对时序要求非常严格,必须精确到微秒级别 一 ...
- Keil C调试经验
我们使用Keil C调试某系统时积累的一些经验: 1.由于Keil C对中文支持不太好,因而会出现显示的光标与光标实际所在不一致的现象,这会对修改中文注释造成影响.在Windows2000下面 ...
- 关于如何在Visual Studio上仿真调试安卓的U3D应用
正巧最近需要开发一个安卓手机上的Unity3D游戏功能,想着既然要开发么,当然需要调试.本来的话一些基础功能是不需要使用仿真模拟器,直接在U3D的开发编辑器上就能调试,不过有一些安卓上才能执行,比如 ...
- 在实际项目开发中keil的调试方法
转载2015-06-14 20:23:04 一.在keilc的调试状态下,如何观察各个片内外设的运行状态?如何修改它们的设置? 在调试状态下,点击Peripherals菜单下的不同外设选项命令,就会 ...
- Keil MDK仿真调试STM32的时候直接进入SystemInit函数
1. 仿真的时候,进入之后 2. 说是main()未定义,可是明明定义了,什么原因?喔,看错了,是--main.对比了一下和正常工厂的配置,都一样,换个jlink V9测试一下吧.换了个ST LINK ...
- STM32 KEIL不能输入仿真引脚端口error 65: access violation at 0x40021000 : no 'read' permission
使用MDK自己创建一个STM32F103ZE核的项目 加入源码后编译,正常,在线仿真单步执行出现如下问题 error 65: access violation at 0x40021000 : no ' ...
- STM32 Keil 软件仿真设置
设置 Dialog.DLL 分别为:DARMSTM.DLL和TARMSTM.DLL, Parameter 均为:-pSTM32F103RC,用于设置支持芯片的软硬件仿真
随机推荐
- 静态栈-------C语言
/***************************************************** Author:Simon_Kly Version:0.1 Date: 20170520 D ...
- WIN7下怎么安装iis教程
点击开始→控制面板,然后再点击程序,勿点击卸载程序,否则到不了目标系统界面. 2 然后在程序和功能下面,点击打开和关闭windows功能. 3 进入Windows功能窗口,然后看到internet信息 ...
- Vue 学习笔记之 —— 表单输入绑定
Vue 中文文档 https://cn.vuejs.org/ 不多说,直接上干货. v-model 指定,用来在input textarea 等表单元素上创建双向数据绑定,负责监听用户的输入事件,以及 ...
- IDEA下将dubbo简单项目跑Demo(2019.12版)
项目架构(聚合项目,父子模块) src没用,所以删去 选择maven项目,不用勾选模板骨架,直接main方法,因为不用到服务器 顺序是按照:添加pom依赖-接口实现类-配置文件 项目环境 IDE:In ...
- fabs() abs()
fabs() 面向实数取绝对值 abs() 返回int
- springboot中引用配置文件中的参数
首先可以看到这是做微信登陆时候的配置,一般不会写死都是通过配置文件获取,所以,记载配置文件中 那么怎么引用呢: 可以看到直接注入的方式就可以引用了,所以看下面: 进行页面跳转,并且带有参数的, 使用m ...
- 一.Python特点
python第一节 简介 Python介绍 什么样的语言? 解释性语言:开发中没有编译的环节 交互式语言:在命令提示行执行python引擎,直接执行代码 面向对象语言:支持面向对象 优点 a.易学 b ...
- Swift结构体和类
Swift结构体 在Swift标准中,绝大多数的公开的类型都是结构体,而枚举和类只占很小的一部分 比如Bool.Int.Double.String.Array.Dictionary等常见的类型都是结构 ...
- UVA11021 Tribles 概率dp
题目传送门 题意:开始有$k$只兔子,每只都是活一天就死,每只死前都会有$pi$的概率生出$i$只兔子.求$m$天后兔子死光的概率. 思路: 设$f[i]$为一只兔子在第i天死完的概率,那么答案就是$ ...
- Cacti 发送警告邮件
Cacti版本: 0.8.8a 目的:监听CPU 高于1个设定值时发送警告邮件(范例这一台主机有1颗实体CPU,总共2核心) 需要安装的插件: 1.1. thold Threshold,下载使用的是v ...