早就听说可以在RAM中调试STM32程序了,直到昨天晚上看了个视频,自己也想来试试。乘热打铁,今天上午跑到实验室,从网上下载资料,凭着零星的记忆开始配置。不过任何事情都不是一次成功的,这次也不意外。But经过反反复复修改,查资料,修改,查资料。还是成功啦!下面就把我配置的一些经验,结合网上已经有的一些资料傻瓜式总结出来,希望所有像我这样的初学者能够少走弯路。。。。。。
先说说在RAM中调试STM32程序的好处吧!
1. 可以单步调试程序,并且不用像仿真调试那样需要去查看繁琐的寄存器位,直接可以通过实验现象来Debug。
2. 避免擦写Flash次数限制,虽然Flash的烧写次数高达1000次以上,但是也经不起小白程序员的折腾呀!!!!!
好了,关键步骤开始了。
一、 硬件配置。
我想大多数的人最开始想到在RAM中调试程序的时候都认为跟BOOT[1:0]有关吧!我也一样,直到我看到一篇博文。
大家可以放心这句话的真实性,我已经试了,确实是与BOOT[1 :0]选择无关。
说了这么多废话,其实就是说不用管硬件配置!!!!!!
二、 软件配置。
1、 准备
(1)将Keil安装目录下:D:\Keil\ARM\Boards\Keil\MCBSTM32\STLIB_Blinky的RAM.ini文件拷贝到需要调试的工程目录下。
(2)在工程目录下新建文件夹Ramout。
(3)修改RAM.ini文件:将红圈处改为“工程名.axf”就行了。如果没有找到该文件不要怕,自己在文本编辑器里面写一个,就几行保存为.ini格式就行了。
2、 IDE软件配置
(1) 单击启动如下对话框,并按照下图配置。
(2) 如果按照上述配置方式配置成功后,KEIL配置模式会变为SRAM。
(3) 单击,按照以下步骤一步一步进行配置。
(4)
作者Liunus是用的ST公司的STM32F103VC,其Flash是256KB,SRAM 是48KB。记清楚了哟,特别是SRAM大小,这个与后面分配空间有关系。因 为我们将程序也放到SRAM中,所以需要将SRAM分为两个部分;一个部分 用于存放程序代码,另一个部分用于存放程序运行中的数据。
256(KB)=256*1024 (byte) =262144 (byte) 转换为16进制:40000
48(KB)=48*1024(byte)=49152(byte)转换为16进制:C000
所以FLASH的总大小为40000,SRAM总大小为C000。
从CORTEX_M3内核资料我们可以获知,FLASH的起始地址是0x08000000; SRAM的起始地,0x2000000。
(5)
(6)上图是将程序下载到FLASH中,所以Read/Only Memory Areas起始地址是0x800 0000,大小0x4 0000;Read/Write Memory Areas起始地址是0x2000 0000,大小0xC000;但是我们是在SRAM中进行调试,所以需要修改这两个区域,结果如图下图:
至于为什么这样分配,这都是大神们根据自己做项目的经验总结的,我们可以不必深究。不过也很简单,首先SRAM的起始地址是0x2000 0000,Read/Only Memory Areas是从0x2000 0000开始的。根据程序编译结束后生成的报告只要满足Read/Only Memory Areas区大于CODE 加上 RO-DATA;Read/Write Memory Areas区大于 RW-DATA 加上 ZI-DATA就行了。
(7)
(8)如果程序中使用了中断,需要在如图红框中加入VECT_TAB_RAM。因为我目前的工程没有用中断,所以我填入的是RAM_MODE REMAP。其实这里没定义也没有关系,还可以在程序开头定义如:#define VECT_TAB_RAM
(9)
(10)
(11)在Debug标签栏下,点击settings,然后再选择Flash Download出现如下窗口。
(12)
三、 调试程序。
经过上面一系列的配置,我们已经完成95%了。现在我们要做的最后一步就是编译、下载、调试了。But在编译之前,建议大家做以下几步,避免出错。
1、 确保整个建立过程是在SRAM环境下进行的,需检查第(2)步。
2、 确保SRAM大小分配正确,并且认真检查有没有马虎造成的地址大小分配错误,需检查第(6)(9)(11)步。
好啦,可以编译啦。编译通过后,下载,调试。
你就可以像使用仿真工具一样的进行仿真了
下图是运行时的图片,可以看到,程序是在SRAM区。(汇编地址是0x2xxx xxxx)
四、 参考资料
网上有很多好的博客和好的资料,下面推荐几个。Liunus就是通过反复查看资料才配置好的。所以大家在看Liunus资料配置不成功时可以参考网上资料。
上一篇:STM32 的 SWD调试模式
下一篇:STM32调试DEBUG时,需要知道的知识!
推荐阅读最新更新时间:2024-03-16 16:23