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

2018-02-13 15:37:42编辑:什么鱼 关键字: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

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

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

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

推荐阅读

keil环境下stm32f030R8环境配置

的映射。     存取区一般不需要设置,除非用于IAP或APP需要调整区域空间;3、生成hex文件,即烧录文件。是在keil中编写程序并编译连接成可以下载到开发板的  .hex 文件,然后用jlink仿真器下载;2,是在uboot APP中编写编译代码,生成的是 .bin 文件,可以用uboot 下载。4、用于生成bin文件,如果不需要则可以略过这一步。C:\Keil_v5\ARM\ARMCC\bin\fromelf.exe  --bin -o  E:\bootloader_030test\OBJ\bootloader_030.bin E
发表于 2018-07-11 20:27:28

keil环境下stm32f030程序运行的说明

我们先来看看STM32 正常的程序运行流程:STM32 的内部闪存(FLASH)地址起始于0x08000000,一般情况下,程序文件就从此地址开始写入。此外STM32 是基于Cortex-M3 内核的微控制器,其内部通过一张“中断向量表”来响应中断,程序启动后,将首先从“中断向量表”取出复位中断向量执行复位中断程序完成启动,而这张“中断向量表”的起始地址是0x08000004,当中断来临,STM32 的内部硬件机制亦会自动将PC 指针定位到“中断向量表”处,并根据中断源取出对应的中断向量执行中断服务程序。环境配置:map文件中断向量表:SRAM堆栈分配:程序占用空间:FLASH所占用空间:Code +RO +RW = 1.41K;
发表于 2018-07-11 20:21:48

keil环境下stm32f030R8 APP程序中断向量的重映射

1、理论基础:        Stm32f030R8 有64KFlash + 8KSram      Stm32f0系列MCU中断矢量表的定位跟STM32其它系列相比有点差异,即M0系列没有像其它M3/M4/M0+系列所具备的中断矢量表重定位寄存器,其中断矢量表不能借助矢量重定位寄存器简单修改实现。所以Stm32f0 IAP的过程会跟其它系列的STM32芯片的IAP动作有所不同。我们知道,做IAP往往需要两部分代码,一部分是用来升级的IAP程序,一部分用来运行用户实际应用功能的应用程序APP代码。IAP程序及自身的中断向量表放在内部FLASH的
发表于 2018-07-10 21:57:40

STM32f030 boot iap升级时keil配置注意事项

最近使用了一款Cortex-M0内核的芯片STM32F030CC,发现它中断向量表的重映射方法与STM32F10x系列的有所区别,在这里记录与分享一下。由于需要通过IAP进行固件升级,所以芯片的FLASH里面要烧录两份代码:一个Boot loader, 一个用户应用程序。理所当然的,在用户应用程序中,必须得重新映射中断向量表。可是在ST提供的固件库里,我却没有发现类似于stm32f10x固件库中的voidNVIC_SetVectorTable(uint32_t NVIC_VectTab, uint32_t Offset)接口。     浏览了一下Cortex-M0的Programmingman
发表于 2018-07-10 21:33:26
STM32f030 boot iap升级时keil配置注意事项

keil C51使用串口时程序跑死的问题

在使用STC51单片机的串口时,有时候会进入一种很奇怪的情况,就是程序进入了一下子跑死了,初始化代码如下:void UsartConfiguration(unsigned int bps){ SCON = 0X50; //设置为工作方式1 10位异步收发器 TL2 = RCAP2L = bps; //set auto reload value TH2 = RCAP2H = bps>>8; T2CON = 0x34;//0011 0100  timer2 sart run ES = 1;//打开串口中断,注意打开开一定要写串口中断函数 EA = 1;//打开总中断}经过程序模拟DEBUG可以发现程序跑死在发送
发表于 2018-07-06 23:56:17

STM32 PWM的输出与Keil软件仿真

 Main函数int main(){        RCC_Config();        GPIO_Config();        TIM_Config();        while(1)        {                ;        }}接下来,我们讲解一下,在Keil里面看我
发表于 2018-06-29 21:09:23

小广播

何立民专栏

单片机及嵌入式宝典

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

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号 电信业务审批[2006]字第258号函 京公海网安备110108001534 Copyright © 2005-2018 EEWORLD.com.cn, Inc. All rights reserved