最近一直在用STM32F407调试,更改验证时需要频繁的烧写Flash,于是就想试试能不能将程序在线加载到内部RAM中,避免反复擦除Flash。经过baidu得到的方法加上自己试验,终于调通了,现总结一下。
1.首先,新建配置项RAM,专用于加程序到RAM。
2.然后设置RAM的具体配置。
2.1 设置程序和数据的下载地址
STM32F4xx的RAM大小为192KB(112+16+64):
- 112KB和16KB的起始地址为0x2000 0000,通过AHB总线访问
-
64KB的起始地址为0x1000 0000,只能通过CPU直接访问。
2.2 在Linker中确保使用的是Target中设置的映射方式
2.3 添加初始化文件,保存为RAM.ini,并保存到工程所在目录中
2.4 仿真器下载地址的配置
2.5 定义中断向量宏
2.6 在文件system_stm32f4xx.c中,去掉#define VECT_TAB_SRAM前面的注释,据说这样可以使用中断,我没试过
设置完成后,全部编译一遍,然后点开始调试按键,将程序加载到RAM中,程序开始运行。
PS:注意RAM.ini中load *.axf 文件的路径要设置正确,如果出错程序无法进入main函数,运行异常,这在调试信息里可以看到。
本文详细介绍了如何在STM32F407上进行RAM调试,避免频繁烧写Flash。主要内容包括新建RAM配置项,设置RAM下载地址,配置Linker,添加初始化文件,设置中断向量,以及在system_stm32f4xx.c中调整中断表。调试过程中需要注意RAM.ini文件的路径设置,以确保程序能正常运行。
1253

被折叠的 条评论
为什么被折叠?



