datasheet

Keil MDK3.20 在ULINK下调试stm32方法

2018-02-13来源: eefocus 关键字:Keil  MDK3  20  ULINK  调试stm32

    1. 程序在RAM中运行

    要点:(1)程序的下载地址改到RAM空间中

    (2)程序的debug之前要设定SP,PC指针到Ram空间

    新建工程,选择STM32 的具体型号,我买的万利的开发板,选择stm32f103Vb。

     

    设定程序下载地址,如下图所示,IROM1的地址指向了STM32的ram空间。

    空间大小如何分配取决于自己的需求。本款处理器内部ram大小为20K,分配16K给只读区,4K给可读可写区。这样IROM设定的大小为0x4000,IRAM1的起始就变为0X20004000,大小只剩下0X1000。

    Debug标签选择ULINK1 Cortex Debugger(软件采用yjgyiysbCC兄crack方法)。不选Load ApplICation at Start,在Initialization中加入启动脚本RAM.ini。

    RAM.ini中具体内容如下:

    FUNC void Setup (void) {

    SP = _RDWORD(0x20000000); // Setup Stack Pointer

    PC = _RDWORD(0x20000004); // Setup Program Counter

    _WDWORD(0xE000ED08, 0x20000000); // Setup Vector Table Offset Register

    }

    LOAD XXX.axf INCREMENTAL // Download,红色代表工程文件名.axf

    Setup(); // Setup for Running

    g, main

    Utilities下Update Target before Debugging不选

    这样添加后就可以在RAM中调试了。

    >>>>>>我们需要在代码中设置正确的中断向量表位置。中断向量表通常被放置在用户程序的开始,所以flash中运行时,向量表位于0x08000000处,而当代码被放置在SRAM中运行时,他的位置就成了0x20000000。在初始化NVIC时,我们可以放置如下代码,定义向量表的位置

    NVIC_SetVectorTable(0x20000000 , 0x0);

    或

    NVIC_SetVectorTable(0x08000000 , 0x0);

    或

    ?

     

    >>>>>工程选项中Debug项,Download选项卡中,去掉所有钩子,不下载代码到flash,这样就可以在RAM中调试程序了!

    2. Flash中调试

    新建工程后系统默认设定好IROM1为FLASH的地址和空间大小。只需要两步:

    1) 设定调试工具为ULINK1 CORTEX DEBUGGER,如下图所示,不需要设定起始脚本。

     

    2) 在Utility中设定选择ULINK1 cortex debugger,并设定编程算法。如下图所示。

   

 

    之后就可以FLASH调试了。

    硬件:万利的 EK-STM32F开发板,硬件去掉RS3,RS4 排阻,断开开发板本身的仿真器。

    软件:KEIL MDK3.20+ULINK驱动替换文件。

    仿真器:ULINK


关键字:Keil  MDK3  20  ULINK  调试stm32

编辑:什么鱼 引用地址:http://www.eeworld.com.cn/mcu/article_2018021337793.html
本网站转载的所有的文章、图片、音频视频文件等资料的版权归版权所有人所有,本站采用的非本站原创文章及图片等内容无法一一联系确认版权者。如果本网所选内容的文章作者及编辑认为其作品不宜公开自由传播,或不应无偿使用,请及时通过电子邮件或电话通知我们,以迅速采取适当措施,避免给双方造成不必要的经济损失。

上一篇:在嵌入式实时操作系统uC/0SII上移植实现LwIP这套TCP/IP协议栈
下一篇:基于S3C2440 处理器的嵌入式IPv6 防火墙设计

关注eeworld公众号 快捷获取更多信息
关注eeworld公众号
快捷获取更多信息
关注eeworld服务号 享受更多官方福利
关注eeworld服务号
享受更多官方福利

推荐阅读

KEIL编译器区分RW-data和ZI-data

KEIL工程的编译提示输出信息中有一个语句“Program Size:Code=xx RO-data=xx RW-data=xx ZI-data=xx”,它说明了程序各个域的大小,编译后,应用程序中所有具有同一性质的数据(包括代码)被归到一个域,程序在存储或运行的时候,不同的域会呈现不同的状态,这些域的意义如下:Code:即代码域,它指的是编译器生成的机器指令,这些内容被存储到ROM区。RO-data:Read Only data,即只读数据域,它指程序中用到的只读数据,这些数据被存储在ROM区,因而程序不能修改其内容。例如C语言中const关键字定义的变量就是典型的RO-data。RW-data:Read Write data
发表于 2018-12-01
KEIL编译器区分RW-data和ZI-data

LPC11XX 使用keil for arm 和j-link连接问题

、 J-link连接问题。 Lpc1114采用的是SW方式连接。Port里改sw方式。不能使用jatg方式做链接。否则会出现如下问题 2、 使用SW方式后,还要修改 3、 全勾或全不选。
发表于 2018-11-30
LPC11XX 使用keil for arm 和j-link连接问题

Keil4 Ulink2调试Cortex-M3 LPC1788的配置

上两张图,懂的自然看得懂。 
发表于 2018-11-30
Keil4 Ulink2调试Cortex-M3 LPC1788的配置

keil不能进调试模式的解决方法

一、问题现象平时用烧录器调试程序一直都没问题,突然今天不能调试了。故障提示如下:二、问题分析尝试过各种解决方法:插拔烧录器,更换烧录器,插拔stm32主机电源,重启keil开发环境,问题依旧。 看来问题不应该在主机和烧录器上,最后问题定位在keil软件的配置上面。三、问题解决感觉问题应该在烧录器的配置上,随后尝试修改烧录器配置。     发现“Download option”两个选项都打钩了,那样猜测问题应该在这里。结果把打钩的地方去掉,问题就解决了,程序也能进调试模式进行断点跟踪了。
发表于 2018-11-30
keil不能进调试模式的解决方法

Keil5(MDK5)在调试(debug)过程中遇到的问题

参考原子哥教程 使用开发板:STM32F103RCKeil5(MDK5)在调试(debug)过程中崩溃(IDE已停止运行)http://blog.csdn.net/qq_33259138/article/details/70224581 现象是程序编译下载都没有问题,开始Debug调试之后,只要进入C源代码文件,立即崩溃。 在论坛上找到一种解决办法,将你的工程拷出来,发到一个短路径文件夹下,再次编译,崩溃就没有了。 按论坛里大神说法是,Debug调试程序路径不能超过170个字节。http://www.openedv.com/posts/list/52892.htm 是不是安装在中文
发表于 2018-11-30
Keil5(MDK5)在调试(debug)过程中遇到的问题

使用keil调试stm32时不能run

在使用keil时其断点不能超过5个,如果超过5个断点将不能进入调试界面调试过程中打超过5个断点后,会出现报警信息或错误提示修正:之前根据经验说断点不能超过5个,现在修正一下;对于每个处理器不一样,在Cotex-M3 user Guide里有这么一句话也就是说Cotex-M3内核处理器最大同时支持8个硬件断点。对于Cotex-M0+ 内核有这么一句话这句话没有指出支持多少硬件断点,但是从stm32l01x参考手册里这里面说提供四个断点寄存器,是不是说最多支持四个断点呢?我们验证一下:这是打五个断点的时候在输出框找到也就是最多支持4个断点!
发表于 2018-11-30
使用keil调试stm32时不能run

小广播

何立民专栏

单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved
pt type="text/javascript" src="//v3.jiathis.com/code/jia.js?uid=2113614" charset="utf-8">