STM32F407在RAM中调试

在RAM中调试代码

一.软硬件操作

硬件方面需要先修改BOOT0和BOOT1的引脚的高低电平。SRAM运行模式BOOT0和BOOT1都是高电平。

软件方面:

1.需要先取消勾选Use Memory Layout from Target Dialog,点击下方的Edit编辑.sct


2.修改.sct分散加载文件
原始文件

LR_IROM1 0x08000000 0x00080000  {    ; load region size_region
  ER_IROM1 0x08000000 0x00080000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20000000 0x00020000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

修改后的文件

LR_IROM1 0x20000000 0x00010000  {    ; load region size_region
  ER_IROM1 0x20000000 0x00010000  {  ; load address = execution address
   *.o (RESET, +First)
   *(InRoot$$Sections)
   .ANY (+RO)
   .ANY (+XO)
  }
  RW_IRAM1 0x20010000 0x00010000  {  ; RW data
   .ANY (+RW +ZI)
  }
}

3.添加宏更改中断向量表的地址

pkckYoq.png

  /* Configure the Vector Table location add offset address ------------------*/
#ifdef VECT_TAB_SRAM
  SCB->VTOR = SRAM_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal SRAM */
#else
  SCB->VTOR = FLASH_BASE | VECT_TAB_OFFSET; /* Vector Table Relocation in Internal FLASH */
#endif

不直接在文件中添加宏定义是因为工程保留了SRAM和FLASH二种下载方式

pkckUYV.png

4.修改文件下载设置

pkckaWT.png

这里的地址需要和修改后的.sct文件的地址对应起来,不然会下载失败的

pkckwSU.png

在debug界面需要勾选Verify Code Download

pkck0lF.png

在.map文件下可以看到,地址变了0x20000000地址偏移,而不是FLASH的0x08000000地址。

这样就可以进行SARM的配置,直接通过JLINK下载即可。SARM下载会在断电后丢失程序。

二、原理

STM32在系统上电在某个地址下取出栈指针地址和程序指针地址,而BOOT引脚的不同电平,会将地址映射到不同的地址去取值。

6fmuh4k2TbWYeQt.png

三种启动方式的区别

image.png

视频链接:野火F407-在RAM中调试代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值