[STM32F4xx 学习] 如何在RAM中调试程序
在RAM中调试程序指的是将程序下载到RAM里面(而不是Flash里面),然后在RAM中执行程序、调试。
为什么要在RAM中调试程序?总结起来有以下两点原因:
1. Flash 擦写次数有限,STM32F4xx的Flash擦写次数只有上万次,见图1 Flash规格描述
图1. STM32F4xx Flash 寿命与保存时间
2. 程序下载到RAM里面要比下载到Flash里面快很多,在需要反复调试的时候,能省下不少时间(像调试GUI的时候)。
当然,在RAM调试也有一些不足的,比如:
1. 需要占用部分RAM用来存放程序
2. 不能使用软件复位功能,即每次运行程序前都要重新下载程序
3. 程序在RAM中调试成功,在Flash中不保证100%成功
4. 断电后程序会丢失
设置过程如下:
Step 1. 在uVision 中新建一种配置,命名为“RAM”
Step 1. 新建配置
Step 2. 选中新建的“RAM” 配置,配置新建的"RAM"配置
Step 2. 配置“RAM”
Step 3. 根据STM32F4xx RAM地址范围,在Target中配置代码段地址(IROM),数据段地址(IRAM)
Step 3. 配置地址范围
STM32F4xx的RAM大小为192KB(112+16+64):
- 112KB和16KB的起始地址为0x2000 0000,通过AHB总线访问
- 64KB的起始地址为0x1000 0000,只能通过CPU直接访问,关于这64KB RAM有何用途,请参考以下博文:
http://blog.sina.com.cn/s/blog_61332ec601016hj6.html
图2. STM32F4xx RAM 地址映射
Step 4. 在Linker中确保使用的是Target中设置的映射方式
Step 4. 地址映射选择
Step 5. 添加初始化文件(如果没有,复制以下代码到文本编辑器中,保存为.ini,并保存到工程所在目录中)
1 FUNC void Setup (void) { 2 SP = _RDWORD(0x20000000); // 堆栈指针 3 PC = _RDWORD(0x20000004); // PC 4 _WDWORD(0xE000ED08, 0x20000000); // 中断向量偏移地址 5 } 6 7 LOAD %L INCREMENTAL // 载入axf文件 8 9 Setup(); // 调用Setup(); 10 11 g, main //跳转到main
清单1. 初始化代码
Step 5. 添加初始化文件
Step 6. 仿真器下载地址的配置
Step 6. 仿真器下载地址配置
方框②中的起始地址和大小就是Step 3中配置的代码存放范围(IROM),方框③中的起始地址和Step 3中的数据存放地址(IRAM)的起始地址相同,大小默认为0x0800。最后把方框④选上,这样每次进入仿真状态前,都会重新下载代码到RAM里面。
现在重新编译源文件,编译完成后,打开.map文件,是不是发现ROM和RAM已从新分配了?现在,享受Debug带来的乐趣吧!
More~
1. STM32F4xx Datasheet中描述,若要从RAM中启动,Boot0, Boot1引脚必须置高电平,如图3所示。实际测试,不管Boot0, Boot1为何值,都能从RAM中启动代 码。
图3. 启动模式选择
2. 若需要使用中断,也要将NVIC中断向量表重新映射到RAM里面。具体操作是在system_stm32f4xx.c源文件中,去掉#define VECT_TAB_SRAM前面的注释,如
图4所示
图4.
/×××××××××××××××××××××××××××××××××××××××× THE END××××××××××××××××××××××××××××××××××××××××××××/
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· AI技术革命,工作效率10个最佳AI工具