STM32在Keil MDK5环境下RAM上代码调试

发布者:Xiangtan最新更新时间:2017-10-01 来源: eefocus关键字:STM32  Keil  MDK5环境  RAM  代码调试 手机看文章 扫描二维码
随时随地手机看文章

步骤与图示:

1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小如图1

 

 


(STM32F107VC 256KB FLASH,64KB SRAM)

图1

 

2.Target的设置

 

1)勾上可以用微库,减小生成代码的大小

2,3)分别定义ROM区位置及大小和RAM区位置和大小。在这里需要说明的是,Cortex-M3的架构有4G的寻址空间,而Flash的起始地址在0x08000000,RAM地址在0x20000000,在这里进行了第一次相关地址的更改;如图2

0x1000为4K,这里的0xc000则为48K的ROM分配;RAM的为16K;基本上移植个uCOS-II都够用了

 


 

图2

3.Output的设置

 选择Remout文件夹

 

强调一下Name of Executable吧;这里默认的应该是project的名字,改成output;而且这与编译后产生的*.axf和*.sct文件名字都有关联;没勾选HEX;见图3

 

 


图3

 

4.Listing Label  默认

5.User Label  默认

6.C/C++ Label  默认

7. Asm Label  默认

8. Linker Label

最上边打上勾,是这效果;不打勾,就反白了

先说说打勾的时候,如图4;非人为操作,你什么都不用管了,(很多人会发现,新建的项目,刚开始的时候下面的Scatter File后的内容是空的,当你把这勾去掉后会自动出现,然后随你勾与不勾,就都是存在的了,不过此时还只是个影子,没有实际的文件,什么时候出现这个文件呢,法一:自然你可以自己写;法二:在出现影子后打上勾编译一次,此文件就产生了;在output的文件夹里;马上后文还会有对此文件内容的介绍)

 



图4

再说说不打勾的时候会反白一些内容,如图5,需要修改两个地方

 

 

图5

再来看看output.sct文件内容,如图6~6行内容是ROM的地址和大小,11行事RAM的地址和大小,很是一目了然,内容根据Target自动生成的,不需要手动修改

 

 


图6


LR_IROM1 0x20000000 0x0000C000  {    ;load region size_region

 ER_IROM1 0x20000000 0x0000C000 {  ;load address = executionaddress

  *.o (RESET, +First)

  *(InRoot$$Sections)

  .ANY (+RO)

  }

 RW_IRAM1 0x2000C000 0x00004000 {  ;RW date

  .ANY (+RW +ZI )

  }

}

9.Debug的配置

分成几部分,原界面和Setting界面

1)原界面,如图7,首先选好J-link ,在keil5下,选择“CMSIS-DAP Debugger”,取消Load Application at Startup的勾选

 

 

图7

再说说这个RAM.ini文件,内容如下,如图8,有注释

首先LOAD output.axf,加载启动代码到RAM,关关于hex,bin文件和axf的关系,是在axf中存有Debug需要的一些调试语句,所以这文件与前 2者内容上是不相同的,前两者属于其子集的关系,(这里的output.axf名字对应了我们上边设定的output的文件名设定,此文件在output中设定的文件夹下生成,跟output.sct在一起)从文件内容可以看到,中断向量表已经被映射到0x20000000,PC也指向了 0x20000004,说明在RAM中进行调试时理论上可以的了

 

图8

 RAM.INI文件:

 /******************************************************************************/

/* RAM.INI: RAM Initialization File                                           */

/******************************************************************************/

/* This file is part of the uVision/ARMdevelopment tools.                    */

/* Copyright (c) 2010 Keil - An ARMCompany. All rights reserved.            */

/* This software may only be used under theterms of a valid, current,        */

/* end user licence from KEIL for acompatible version of KEIL software      */

/* development tools. Nothing else givesyou the right to use this software.  */

/******************************************************************************/

 

FUNC void Setup (void) {

  SP= _RDWORD(0x20000000);          // SetupStack Pointer

  PC= _RDWORD(0x20000004);          // SetupProgram Counter

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

}

 

LOAD ..\Remout\Project.axf INCREMENTAL                  //Download

 

Setup();                             // Setup forRunning

 

g, main

 

 ( 

 

2)进入setting如图9

 


图9

3)然后进入了Flash Download label,如图10~Flash的擦写有规矩,需要在有内容的情况下擦出一个扇区后方可写入,而此时的RAM自然不必要这样做,然后需要点击add添加Flash编程算法接着进入了选择界面,如图11


图10

在这里选择好属于自己的芯片Flash大小~256K ~

add后还需要再更改最后一行红线上的内容,此时需要先点一下刚选好的变成算法就会反白可编辑,然后编程算法会自动更改其自身的地址

 




图11

10.进入Utilities~同Debug一样,选择其中的setting其实刚刚讲过,其实是同一个,如图12

 

图12

RAM调制到此为止

需要提醒大家注意的几点是:

1.Debug开始后~不要点reset~因为这样后走的就是Flash的程序了~容易造成调试问题~结果是产生keil被kill掉的PC错误~

2.重新启动开发板后一定要build target一次~或者rebuild all一次再烧写程序~不然~很容易同上


关键字:STM32  Keil  MDK5环境  RAM  代码调试 引用地址:STM32在Keil MDK5环境下RAM上代码调试

上一篇:Keil环境,在调试STM32中犯过的错
下一篇:STM32F05x移植GD32F1x0注意事项

推荐阅读最新更新时间:2024-03-16 15:39

STM32之GPIO及第一个STM32程序(跑马灯)
今天来说一说,GPIO,对于我这个新手来说,GPIO就好比我在学习开车之前得学会如何开门一样,由此可以看出这对于我学习STM32 的重要性,好废话不多说,先总结一下STM32F103ZE的开发板里总共有7组IO口,每组IO口有16个IO,即这块板子总共有112个IO口分别是GPIOA~GPIOG。 GPIO的工作模式主要有八种:4种输入方式,4种输出方式,分别为输入浮空,输入上拉,输入下拉,模拟输入;输出方式为开漏输出,开漏复用输出,推挽输出,推挽复用输出。对应的为: (1)GPIO_Mode_AIN 模拟输入 (2)GPIO_Mode_IN_FLOATING 浮空输入 (3)GPIO_Mode_IPD 下拉输入 (
[单片机]
STM32开发 -- 继电器测试
继电器这个东西,怎么说呢。我之前学过自动化。。。 对它是有一定了解的。 思考: 比如如何测试继电器是否是OK的,能否吸合?? 接下来就简单的来看一下STM32上继电器的使用。 一、继电器介绍 参看:一文读懂继电器那些事儿 参看:维基百科 – 继电器 参看:电磁继电器工作原理透彻详解(1) 1、介绍 继电器(relay)是一种电控制器件,是当输入量的变化达到规定要求时,在电气输出电路中使被控量发生预定的阶跃变化的一种电器。它具有控制系统和被控制系统之间的互动关系。通常应用于自动化的控制电路中,它实际上是用小电流去控制大电流运作的一种 自动开关 。 故在电路中起着自动调节、安全保护、转换电路等作用。 2、分类 ●按用途
[单片机]
<font color='red'>STM32</font>开发 -- 继电器测试
STM32的ADC转换最常见的方式
这里的ADC转换也来使用DMA---这个也是STM32的ADC转换最常见的方式。 第一步是了解STM32的ADC对应的GPIO口如下图不用记住,可以查询,我是将它剪下来粘贴到书本的相应章节! 第二步是配置相应ADC转换的GPIO口这里使用PC0--PC1 static void ADC1_GPIO_Config(void) { GPIO_InitTypeDef GPIO_InitStructure; RCC_AHBPeriphClockCmd(RCC_AHBPeriph_DMA1, ENABLE); //打开DMA1的时钟 RCC_APB2PeriphClockCmd(RCC_APB2Periph_ADC1 “ RCC_A
[单片机]
STM32学习之:定时器简介
本文为STM32定时器设计大体简介。 一、定时器简介 1、时钟来源 2、定时器结构(以基本定时器为例) 二、基本定时器的编程方法 1、基本定时器的寄存器 2、例程 /** * @brief 定时器6的初始化,定时周期0.01s * @param 无 * @retval 无 */ void TIM6_Init(void) { TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; /*AHB = 72MHz,RCC_CFGR的PPRE1 = 2,所以APB1 = 36MHz,TIM2CLK = APB1*2 = 72MHz */ RCC_APB1PeriphClockCmd(RCC_APB
[单片机]
STM32学习——MPU6050姿态传感器
STM32移植(抄)起来特别爽。。。 MPU6050简介 1.MPU6050是一款六轴(三轴加速度+三轴角速度(陀螺仪))传感器 2.MPU6050含有一个第二IIC接口,可用于连接外部磁力传感器 3.MPU6050自带数字运动处理器(DMP)通过主IIC接口,可以向CPU提供四元数,CPU可利用四元数得到欧拉角,避免了CPU通过原始数据进行姿态计算(DMP驱动库由官方提供,使用时需要改动) 4.据说stm32的硬件IIC接口存在bug,需要用软件模拟IIC时序 MPU6050初始化步骤 (1)初始化IIC接口 即SDA和SCL对应的GPIO (2)复位MPU6050 使MPU6050内部所有的寄存器恢复默认值,通过对电
[单片机]
<font color='red'>STM32</font>学习——MPU6050姿态传感器
Gartner:Q1内存销售同比降41% 三星表现最好
据市场研究公司Gartner本周一发表的初步统计数字显示,全球DRAM内存行业今年第一季度继续萎缩,销售收入下降到了8年以来的最低的并且继续增加亏损。   Gartner称,今年第一季度全球DRAM内存行业的销售收入是35.7亿美元,同比下降了41%,是2001年第四季度以来销售收入最低的。第一季度的数字还显示比去年第四季度43.8亿美元的销售收入减少了18%。   DRAM内存行业的下降是从两年前开始的,过多地建设工厂导致了内存芯片过剩。全球经济衰退减少了内存芯片向PC的销售进一步损害了DRAM内存行业。Gartner称,今年第一季度全球PC出货量同比下降了6.5%。   Gartner称,德国芯片厂商奇梦达在今年第
[半导体设计/制造]
STM32 RTOS系统 学习笔记(一)
基本概念 RTOS全称为:Real Time OS,就是实时操作系统,强调的是:实时性。实时操作系统又分为硬实时和软实时。硬实时要求在规定的时间内必须完成操作 ,硬实时系统不允许超时,在软实时里面处理过程超时的后果就没有那么严格。 在实时操作系统中,我们可以把要实现的功能划分为多个任务,每个任务负责实现其中的一部分,每个任务都是一个很简单的程序,通常是一个死循环。
[单片机]
<font color='red'>STM32</font> RTOS系统 学习笔记(一)
基于STM32的FreeRTOS开发(1)----FreeRTOS简介
为什么使用freertos FreeRTOS 是一个免费和开源的实时操作系统,它主要用于嵌入式系统。它非常轻量级,可以在很小的硬件资源上运行,因此非常适合在限制硬件资源的嵌入式系统中使用。 FreeRTOS提供了一组简单的任务管理功能,可以让您在嵌入式系统中实现多任务环境,这对于涉及多个独立功能的系统是非常重要的。它还提供了一些高级功能,如事件组、信号量、邮箱等,可用于实现任务之间的同步和通信。 FreeRTOS还提供了许多可移植性,可以在各种不同的硬件平台上运行,并且有大量的文档和示例代码可以帮助您快速上手。 总之,FreeRTOS是一个非常受欢迎的嵌入式实时操作系统,因为它简单易用,资源占用小,功能丰富,可移植性好,对于嵌入式
[单片机]
基于<font color='red'>STM32</font>的FreeRTOS开发(1)----FreeRTOS简介
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

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

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved