历史上的今天
返回首页

历史上的今天

今天是:2024年10月06日(星期日)

2018年10月06日 | STM32内部RAM在线调试配置方法及详细说明

2018-10-06 来源:eefocus

1、写在前面

本文主要讲述的内容:基于Keil开发工具下,STM32内部RAM在线调试配置方法,以及每一项配置的详细说明。

让程序运行在RAM中调试代码有两优点:1.速度快;2.减少对芯片FLASH读写次数,增加芯片寿命。

本文基于ST公司Cortex-M内核的STM32来讲述其配置方法,其实也适用于其他公司(如:TI、NXP等)的Cortex-M芯片,原理都是一样的。

第二点在本文中的作用也很大,就是使用了中断功能。由于RAM调试会牵涉到向量表,中断功能就会使用到向量表,如果没有配置正确,这里就不会响应中断,或者出错。

2、RAM调试配置方法

本节主要讲述配置方法的过程,为什么这么配置,以及配置的原理将会在下一章节讲述。

1.修改内存地址

打开目标配置:Project -> Options for Target -> Target或“工程目标配置”点击快捷按钮。

将ROM和RAM地址映射到如下图地址。 我们使用STM32F103ZE芯片,该芯片的RAM大小为0x10000即64KB,我们这里平分RAM,即各自的大小为0x5000。

注意:配置的地址范围不能超过芯片实际的大小。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

 

2.配置向量表

 

同上,打开目标配置:Project -> Options for Target -> C/C++,使用宏定义VECT_TAB_SRAM。如下图:

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

 

这里的宏定义是为了让向量表指向RAM(我们默认是指向ROM),重要的一个目的就是让中断向量表指向RAM,上面“代码功能”中断的意义就是为了验证向量表的正确性。

 

注意:这里的宏定义是在工具链中配置的,多个宏定义之间需要有“逗号”隔离开来。

 

其实这里的宏定义配置也可以在源代码中实现,打开system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定义,如下图:

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

3.调试配置

同上:Project -> Options for Target -> Debug, 这里是关于调试的配置。

第一步:去掉“Load Application at Startup”前面的勾选项

 

第二步:导入RAM初始化文件。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

RAM初始化文件里面内容如下:

FUNC void Setup (void) {

SP = _RDWORD(0x20000000);

PC = _RDWORD(0x20000004);

_WDWORD(0xE000ED08, 0x20000000);

}

 

LOAD Objects\ExecutableFile.axf INCREMENTAL

Setup();

g, main

 

每一条语句具体意思请见源代码注释,这里提示的是Objects\ExecutableFile.axf

 

也就是输出路径和输出文件名,它的路径与文件名与你工程配置需对应。

4.调试不更新目标程序

同上:Project -> Options for Target -> Utilities,不勾选“更新”。意思就是在线调试时,不更新芯片(下载FLASH)程序。

STM32内部RAM在线调试配置方法及详细说明(基于Keil开发工具)

至此,STM32内部RAM在线调试配置方法就完成了,连接开发板就可以使用RAM在线调试代码了


推荐阅读

史海拾趣

兵字(BingZi)公司的发展小趣事

随着公司规模的不断扩大和产品线的日益丰富,兵字公司开始注重品牌建设和市场拓展。公司注册了“BingZi兵字”商标,并通过一系列的市场推广活动,提升了品牌的知名度和美誉度。同时,兵字公司还积极开拓国内外市场,与多家知名企业建立了长期稳定的合作关系,实现了业务的快速增长。

Chenmoun Enterprise Ltd公司的发展小趣事

随着公司业务的不断扩张,Chenmoun Enterprise Ltd开始实施全球化战略布局。公司在全球范围内设立了研发中心和生产基地,充分利用各地的资源优势和人才优势,提升产品的竞争力。同时,公司积极开拓国际市场,与多家国际知名企业建立了紧密的合作关系,实现了业务的快速增长。

BLT Circuit Services公司的发展小趣事

BLT Circuit Services公司自创立之初,便专注于电子电路技术的研发与创新。在电子制造行业快速发展的背景下,公司投入大量资源进行技术研发,成功开发出一系列具有市场竞争力的电路板制造技术。这些技术的引入不仅提高了生产效率,还降低了生产成本,使得BLT Circuit Services的产品在市场上脱颖而出。

Dae Ryung Electronic Co Ltd公司的发展小趣事

Dae Ryung Electronic Co Ltd公司自创立之初,就致力于电子技术的研发与创新。公司创始人深知技术是企业发展的核心驱动力,因此投入大量资源用于研发。经过数年努力,公司成功研发出一款高性能、低成本的微处理器,这一产品迅速在市场上获得认可,为公司带来了可观的利润。随后,公司继续加大研发投入,不断推出新产品,逐渐在电子行业中树立了技术领先的形象。

高创科技(gotrend)公司的发展小趣事

在快速发展的过程中,Dae Ryung Electronic Co Ltd公司始终注重产品质量和品牌建设。公司建立了严格的质量管理体系,从原材料采购到产品生产、检测等各个环节都进行严格把关。同时,公司还注重品牌形象的塑造和宣传,通过广告宣传、公关活动等方式提升品牌知名度和美誉度。这些努力使得公司的产品在市场上获得了良好的口碑和认可。

锋鸣电子(Fengming)公司的发展小趣事

福斯特集团在半导体封测领域也展现了强大的实力。集团旗下拥有安徽龙芯微科技有限公司和泸州龙芯微科技有限公司等多家子公司,这些公司均配备有全球领先的集成电路封装测试线。通过不断的技术创新和设备升级,福斯特集团能够满足客户全方位的器件封测要求,为客户提供高质量、高效率的封测服务。此外,公司还积极投入研发,推出多项新技术和新产品,进一步巩固其在半导体封测领域的领先地位。

问答坊 | AI 解惑

为什么我的中断响应时间会那么长?

我的时钟周期为1/20uS,那么我的中断响应时间应该在5/20uS左右,但实际上测出来的响应时间在2.5uS左右,这个时间长了好多,不知道是什么原因造成的?那个高手有这方面经验的请指点一下。…

查看全部问答>

51汇编编程

用51单片机汇编语言写 假设一个班有50个人, 1) 共有3门选修课,找出同时选了三门课的同学: 2)计算机算法,学号存放100 H开始的单元,首单元存放选修总人数,学号由小到大顺序存放 3) 服装CAD设计,学号存放130 H开始的单元,首单元存放选修 ...…

查看全部问答>

利用FPGA实现高性能数字电视系统

由于MPEG-2压缩技术的采用,绝大多数市场都已接受数字电视(DTV),但情况并非如此简单。H.26?-AVC (MPEG-4 第10部分)和微软的VCI压缩标准承诺可为标准和高清(HD)电视带来更大幅度的进步。广播设备OEM将需要采用这些新兴的压缩编码标准,以有效地满足 ...…

查看全部问答>

承接WinCE外包项目

本人有丰富的WindowCE应用开发经验,现承接Windows CE/Mobile平台上的应用外包项目,质量保证。有意者请与我联系: QQ:17632892 MSN:kerlw@hotmail.com…

查看全部问答>

数据库和嵌入式

我们学校就要分方向了。。。有数据库和嵌入式。。。 请各位大虾指点下。。这两个方向的应用方面和现今社会需求那方面的人才要些。。。。 清大虾们给我点小小的建议。。。谢谢!!!!!!!…

查看全部问答>

紧急求助

我想问一下,如果直接输出3.3V,那么是不是就可以直接用纽扣电池,不需要再用TPS70633芯片转换了呀…

查看全部问答>

这套号称最低成本的方案,哪些兄弟再用啊

本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 有7月初参加过茁壮和富士通的高清机顶盒推广活动的兄弟举举手,MB86H61+iPanel3.0大家都有用起来了吗?300块的整转成本实现了吗?话说今年的高清整体转移启动年来着,都快年底了,目前动静不是 ...…

查看全部问答>

QuartusII编译task的问题

我在用QuartusII模拟I2C总线的时候,写了一个任务 task shift_in; output [7:0] shift;     begin      @(posedge  scl) shift[7] = sda;         @ (po ...…

查看全部问答>