[开发工具] STM32CubeIDE设置成下载入SRAM中运行调试

[复制链接]
1380|0
 楼主| Xiashiqi 发表于 2025-1-8 18:31 | 显示全部楼层 |阅读模式
1.背景:
        使用的STM32芯片型号是STM32H750,该芯片的flash只有128K,满足不了我们的程序大小需求,所以给该芯片添加一个外部FLASH,就是使用QSPI挂载一个内存芯片;

        要想下载程序到外部FLASH中,就还需要引导的下载算法,然后要启动外部FLASH中的程序,还需要一个下载在芯片内部FLASH的引导Bootloader,使得内存芯片通过QSPI映射到芯片,并引导加载在外部FLASH中的APP;

        但是在APP调试过程中,使用STM32CubeIDE的调试功能,并不能够满足我们需求,APP程序在修改为符合下载到外部FLASH中的时候,xxx_FLASH.ld文件的内存区域就被修改过,再使用STM32CubeIDE默认的调试功能,会启动失败;

2.配置过程
选用正确的链接脚本,创建工程时,会有2个ld后缀的链接脚本,分别对应于从flash启动和sram启动的脚本;
编译时要define VECT_TAB_SRAM;
debug config设置正确的程序PC;
在不影响我们正常程序编译和烧录的情况下,添加调试工具,图片步骤如下所示:

1、在项目属性中新建一个配置:

64834677e18c9e28e0.png

95277677e1885e2709.png

2、配置新建的“TEST”
添加 VECT_TAB_SRAM

17865677e1881802a3.png

3、选择xx.ld编译文件

8757677e187b0cb18.png

4、点击“应用并关闭”后,编译一下工程,选择新建的配置文件

82143677e187501232.png

5、新建一个调试配置

26860677e186de0f56.png

6、设置新建的调试配置,选择刚刚新编译出来的xx.elf文件

1073677e18652af5b.png

7、修改默认起始地址

47459677e185d59002.png

8、选择新建的调试配置进行调试,并且在main函数中,前面添加引导指针 SCB->VTOR = 0x24000000;

80079677e185264952.png

程序可以正常调试,而且不影响烧录进外部FLASH的配置;

3.注意事项
在第7步的修改默认起始地址中,起始地址可以参考

2627677e184545961.png

————————————————

                            版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

原文链接:https://blog.csdn.net/sanyuedtaifen/article/details/141639113

您需要登录后才可以回帖 登录 | 注册

本版积分规则

85

主题

250

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部