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简介
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
502 Bad Gateway

502 Bad Gateway


openresty
设计资源 培训 开发板 精华推荐

502 Bad Gateway

502 Bad Gateway


openresty
何立民专栏 单片机及嵌入式宝典

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

502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
502 Bad Gateway

502 Bad Gateway


openresty
随便看看
    502 Bad Gateway

    502 Bad Gateway


    openresty
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
502 Bad Gateway

502 Bad Gateway


openresty