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、在项目属性中新建一个配置:
2、配置新建的“TEST”
添加 VECT_TAB_SRAM
3、选择xx.ld编译文件
4、点击“应用并关闭”后,编译一下工程,选择新建的配置文件
5、新建一个调试配置
6、设置新建的调试配置,选择刚刚新编译出来的xx.elf文件
7、修改默认起始地址
8、选择新建的调试配置进行调试,并且在main函数中,前面添加引导指针 SCB->VTOR = 0x24000000;
程序可以正常调试,而且不影响烧录进外部FLASH的配置;
3.注意事项
在第7步的修改默认起始地址中,起始地址可以参考
————————————————
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://blog.csdn.net/sanyuedtaifen/article/details/141639113
|