×
单片机 > 单片机程序设计 > 详情

在RAM中调试STM32程序的配置方法

发布时间:2020-08-25 发布时间:
|

早就听说可以在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 USB HID 键盘