STM32F4 SRAM调试教程

STM32F4 SRAM调试教程

设置步骤

1、在Manage下的Project Targets创建RAM

  此方法用于新建配置项RAM,专用于加载程序到RAM。请添加图片描述

2、设置程序和数据的下载地址

在这里插入图片描述

STM32F4xx的RAM大小为192KB(112+16+64)

  • 112KB和16KB的起始地址为0x2000 0000,通过AHB总线访问
  • 64KB的起始地址为0x1000 0000,只能通过CPU直接访问。请添加图片描述

3、更改DEBUG配置

SRAM_RUN_TRST.ini是用来配置PC、SP指针的,让他们指向SRAM
在这里插入图片描述

4、SRAM_RUN_INIT.inc文件代码

FUNC void Setup (void) {
  SP = _RDWORD(0x20000000);             // Setup Stack Pointer
  PC = _RDWORD(0x20000004);             // Setup Program Counter
  XPSR = 0x01000000;                    // Set Thumb bit
  _WDWORD(0xE000ED08, 0x20000000);      // Setup Vector Table Offset Register
}

LOAD %L INCREMENTAL                     // Download to RAM
Setup();

g, main

5、取消更新flash程序

在这里插入图片描述

6、设置BOOT0、BOOT1引脚电平

6.1 BOOT0、BOOT1引脚设置为高电平

  将BOOT0、BOOT1置为高电平,即可直接从SRAM启动,但也需要按以上步骤进行配置,和BOOT0、BOOT1引脚设置为低电平不一样,不需要重新设置中断向量表,因为将BOOT0、BOOT1置为高电平,会将0x2000 0000映射到0x0,对于正点原子的寄存器版本,在main函数里面,会调用Stm32_Clock_Init()函数,该函数会调用MY_NVIC_SetVectorTable()函数设置中断向量表的地址为0x0。

在这里插入图片描述
在这里插入图片描述

6.2 BOOT0、BOOT1引脚设置为低电平

  将BOOT0、BOOT1置为低电平,此时默认是从Flash启动,会将0x0800 0000映射到0x0,但利用SRAM调试,中断向量表的位置不在0x0,在0x2000 0000,所以需要重新设置。

#define VECT_TAB_OFFSET 0X00
#define VECT_TAB_SRAM
#ifdef VECT_TAB_SRAM
	SCB->VTOR=SRAM_BASE | VECT_TAB_OFFSET;
#else
	SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET;
#endif

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6、按照以上步骤设置好之后,就可以点击调试按钮进入调试了。

可以看到,指令地址属于SRAM,成功改为了SRAM启动
在这里插入图片描述

参考文章

https://blog.csdn.net/qq_27718231/article/details/102739045/

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值