历史上的今天
今天是: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。
注意:配置的地址范围不能超过芯片实际的大小。
2.配置向量表
同上,打开目标配置:Project -> Options for Target -> C/C++,使用宏定义VECT_TAB_SRAM。如下图:
这里的宏定义是为了让向量表指向RAM(我们默认是指向ROM),重要的一个目的就是让中断向量表指向RAM,上面“代码功能”中断的意义就是为了验证向量表的正确性。
注意:这里的宏定义是在工具链中配置的,多个宏定义之间需要有“逗号”隔离开来。
其实这里的宏定义配置也可以在源代码中实现,打开system_stm32f10x.c文件下第127行的“VECT_TAB_SRAM”宏定义,如下图:
3.调试配置
同上:Project -> Options for Target -> Debug, 这里是关于调试的配置。
第一步:去掉“Load Application at Startup”前面的勾选项
第二步:导入RAM初始化文件。
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在线调试配置方法就完成了,连接开发板就可以使用RAM在线调试代码了
史海拾趣
|
我的时钟周期为1/20uS,那么我的中断响应时间应该在5/20uS左右,但实际上测出来的响应时间在2.5uS左右,这个时间长了好多,不知道是什么原因造成的?那个高手有这方面经验的请指点一下。… 查看全部问答> |
|
由于MPEG-2压缩技术的采用,绝大多数市场都已接受数字电视(DTV),但情况并非如此简单。H.26?-AVC (MPEG-4 第10部分)和微软的VCI压缩标准承诺可为标准和高清(HD)电视带来更大幅度的进步。广播设备OEM将需要采用这些新兴的压缩编码标准,以有效地满足 ...… 查看全部问答> |
|
本人有丰富的WindowCE应用开发经验,现承接Windows CE/Mobile平台上的应用外包项目,质量保证。有意者请与我联系: QQ:17632892 MSN:kerlw@hotmail.com… 查看全部问答> |
|
本帖最后由 jameswangsynnex 于 2015-3-3 19:59 编辑 有7月初参加过茁壮和富士通的高清机顶盒推广活动的兄弟举举手,MB86H61+iPanel3.0大家都有用起来了吗?300块的整转成本实现了吗?话说今年的高清整体转移启动年来着,都快年底了,目前动静不是 ...… 查看全部问答> |
|
我在用QuartusII模拟I2C总线的时候,写了一个任务 task shift_in; output [7:0] shift; begin @(posedge scl) shift[7] = sda; @ (po ...… 查看全部问答> |




