0
点赞
收藏
分享

微信扫一扫

STM32结合eclipse+OpenOCD在RAM中调试程序

萧萧雨潇潇 2022-04-03 阅读 93

该文章转载自微信公众号“大龄菜鸟”的文章《STM32结合eclipse+OpenOCD在RAM中调试程序》。

1.1 背景

由于MCU的Flash有一定的擦除寿命,所以在调试阶段,为了减小对Flash寿命的影响,可以考虑将编写好的调试程序下载到MCU的RAM中进行调试。

1.2 测试平台

这里使用的开发环境和相关硬件如下。

  • 操作系统:Ubuntu 20.04.2 LTS x86_64(使用uname -a命令查看)

  • 集成开发环境(IDE):Eclipse IDE for Embedded C/C++ Developers,Version: 2021-06 (4.20.0)

  • MCU固件下载和调试软件:Open OCD,Version: 0.10.0

  • 硬件开发板:STM32F429I-DISCO

1.3 操作步骤

这里以一个闪灯的简单程序为例(工程名称:STM32F429I-DISCO)来说明具体的操作步骤。

(1) 首先确保该程序在默认下载到Flash中的配置时是可以正常通过OpenOCD进行下载和调试的。

(2) 修改链接脚本文件,这里的文件名称是STM32F429ZITx_FLASH.ld,为ST的官方文件。找到该文件中的MEMORY段,修改之前如下所示。

/* Specify the memory areas */
MEMORY
{
    FLASH (rx)      : ORIGIN = 0x8000000, LENGTH = 2048K
    RAM (xrw)      : ORIGIN = 0x20000000, LENGTH = 192K
    CCMRAM (rw)      : ORIGIN = 0x10000000, LENGTH = 64K
}

将以上内容修改成下面的设置。即将FLASH的地址映射到RAM空间,这里的MCU型号是STM32F429ZIT,有192KB的RAM,这里将前128KB的RAM设置成程序代码存储空间,后64KB的RAM设置成程序运行时的数据空间。

MEMORY
{
    FLASH (rx)      : ORIGIN = 0x20000000, LENGTH = 128K
    RAM (xrw)      : ORIGIN = 0x20020000, LENGTH = 64K
    CCMRAM (rw)      : ORIGIN = 0x10000000, LENGTH = 64K
}

(3) 由于程序代码被放置在RAM中运行,所以需要将中断向量表也重新映射到RAM空间。这里只需要在system_stm32f4xx.c文件中搜索VECT_TAB_SRAM,将#define VECT_TAB_SRAM的注释去掉,使VECT_TAB_SRAM这个宏有定义即可。

(4) 以上修改完成之后,重新编译链接工程代码即可,这时可以看到在最终生成的.map文件中的程序代码地址被映射到了0x20000000为起始地址的RAM存储区中了。

(5) 接着需要对OpenOCD的下载配置进行一些修改。鼠标单击eclipse工具栏上臭虫图标右边的倒三角,在下拉菜单中单击“Debug Configurations...”,如图1所示。也可以通过菜单“Run->Debug Configurations...”进行设置。

图1 打开调试配置方法

(6) OpenOCD的下载配置是在之前可以正常通过Flash来下载和调试的配置基础上进行的修改。因此,只需在弹出的Debug Configurations窗口中找到“GDB OpenOCD Debugging”下和当前工程对应的下载调试配置项,这里是STM32F429I-DISCO Debug,选中该配置项,然后切换到Startup选项卡,在“Runtime Options”组中勾选“Debug in RAM”,然后单击右下角的“Apply”保存设置,最后单击“Debug”按钮即可将程序下载到MCU的RAM中运行并调试。如图2所示。

图2 OpenOCD下载配置

(7) 全速运行程序之后,可以看到2个LED在闪烁。退出程序调试,然后给板子断电后再上电,可以发现LED灯不闪烁了,说明前面下载的程序已经丢失,可以证明前面的程序确实是下载到了RAM中运行的。

1.4 参考链接

  • how can i debug code in ram ?

        https://embdev.net/topic/185672

  • STM32程序下载到SRAM调试方法

        https://blog.csdn.net/u012780211/article/details/107878394

举报

相关推荐

0 条评论