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

发布者:朱颜素韵最新更新时间:2019-01-30 来源: eefocus关键字:RAM  调试STM32  配置方法 手机看文章 扫描二维码
随时随地手机看文章

早就听说可以在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资料配置不成功时可以参考网上资料。

关键字:RAM  调试STM32  配置方法 引用地址:在RAM中调试STM32程序的配置方法

上一篇:STM32 的 SWD调试模式
下一篇:STM32调试DEBUG时,需要知道的知识!

推荐阅读最新更新时间:2024-03-16 16:23

3D NAND将缓解SSD和移动市场的强劲需求
根据英国分析公司IHS Markit的新统计数据得出:全球半导体行业在2017年创下了10年以来的最好成绩,年收入比2016年增长了22%,达到4291亿美元。HIS认为市场对内存芯片处理能力需求的大幅增加归因于新兴应用如大数据、物联网和机器学习。 这一需求的增长使得三星电子作为全球领先芯片制造商占据第一位置,领先于竞争对手英特尔,而英特尔已经占据第一的位置有25年之久。2017年,三星的收入增长了54%。 IHS表示,动态随机存取存储器芯片的销售总额增长了77%,而闪存芯片的销售额增长了47%。随着全年供应日益紧张,市场也受到明显影响,随着需求增加,2017年下半年收入也开始大幅增加。 IHS表示,过去十年中D
[嵌入式]
双通道DDR4内存:国产X86处理器发布
  芯片自主化国产化,是目前整个国家的重中之重,而在这样的大环境下,一些国产厂商开始投入更大的精力,来研制更有竞争力的产品。   据科技日报报道称,国产芯片公司兆芯发布了一款自主研发的国产x86处理器,而开先KX-5000系列是兆芯第一款采用SOC设计的通用CPU,同时也是国内第一款支持双通道DDR4内存的国产通用CPU。   从官方晒出的图看,相比上一代开先KX-5000同位2GHz主频,但性能有了巨大的提升,而按照官方的话来说,新的自主处理器在性能、体验上等,与国际主流CPU几乎没有差别。   兆芯负责人叶峻表示,开先KX-5000系列处理器采用了全新的微架构设计,核心架构、核心间架构等方面均大幅改进,并且
[嵌入式]
双通道DDR4<font color='red'>内存</font>:国产X86处理器发布
内存厂商奇梦达破产 律师称考虑出售部分资产
据国外媒体报道,不具名消息人士表示,在浪潮集团表示无意整体收购后,内存芯片厂商奇梦达宣布破产。其律师迈克尔·杰斐(Michael Jaffe)对外表示奇梦达考虑出售公司部分资产。   报道称,杰斐尚未收到其他公司收购奇梦达的方案,但有潜在买家表示有兴趣收购奇梦达的专利和生产业务。
[半导体设计/制造]
MSP430的内存分配到底有多重要?
============================================================================================================================== 之前做的一个项目,本来插上仿真器运行程序没一点儿问题,结果拔了仿真器后,断电后再上电程序总是运行到报警的状态,首先,我怀疑是复位电路的问题,结果查了一下资料发现复位电路没有问题,再说了,如果是复位电路的问题,那每次上电后都运行到超时报警的状态好像也不太像是复位的问题吧!然后,用示波器观察程序运行过程中系统电源的波形图,结果发现有一瞬间电源电压被急剧拉低 2.2V 左右。由于电路里面
[单片机]
89C52单片机与双口RAM如何实现数据通信
1 引言 数字信号处理器(DSP)是一种适合于实现各种数字信号处理运算的微处理器,具有下列主要结构特点:(1)采用改进型哈佛(Harvard)结构,具有独立的程序总线和数据总线,可同时访问指令和数据空间,允许实际在程序存储器和数据存储器之间进行传输;(2)支持流水线处理,处理器对每条指令的操作分为取指、译码、执行等几个阶段,在某一时刻同时对若干条指令进行不同阶段的处理;(3)片内含有专门的硬件乘法器,使乘法可以在单周期内完成;(4)特殊的指令结构和寻址方式,满足数字信号处理FFT、卷积等运算要求;(5)快速的指令周期,能够在每秒钟内处理数以千万次乃至数亿次定点或浮点运算;(6)大多设置了单独的DMA总线及其控制器,可以在基本不影响
[单片机]
89C52单片机与双口<font color='red'>RAM</font>如何实现数据通信
PC总线带宽与内存带宽的计算
1.Intel处理器前端总线(FSB)的带宽计算:       处理器前端总线带宽=处理器前端总线频率(MHz,处理器外频X4)X位宽(Bit)/8       其中,处理器前端总线频率为处理器外频的4倍(处理器主频=外频X倍频),目前的主流处理器皆为64位处理器,除以8将Bit换算为Byte。 举例计算:       Intel奔腾双核E6300处理器,前端总线频率为1066MHz(主频2.8GHz=外频266MHz X倍频10.5),为64位处理器,则其前端总线带宽为:1066MHz X64Bit/8=8.528Gb/s。 2.AMD处理器HT总线的带宽计算:       HT总线带宽=处理器外频(MHz
[嵌入式]
新一代Apple TV将配A10X芯片和3GB RAM
根据外媒 9to5Mac 的报道,开发者 Steven Troughton-Smith 一直在分析上周泄露的 iOS 11 GM 版固件,他发现新一代 4K Apple TV 将会在本周的苹果新品发布会上亮相,并且搭配强大的内部组件。Steven Troughton-Smith 经过深入研究之后发现,新款 Apple TV 将采用 A10X Fusion 芯片,并配有 3GB 运行内存。 这表明 Apple TV 将会获得巨大的性能提升,除了 4K 电影和电视节目之外,这一发现可能预示着苹果的一个更大的方向。 苹果上一次更新 Apple TV 是在 2015 年 9 月,当时苹果为第四代 Apple TV 带来了 Siri Re
[家用电子]
2006年全球半导体销售额将达2547亿美元
  【赛迪网讯】4月8日消息,据外电报道,由于内存市场趋于好转,iSuppli日前调高了2006年全球芯片营收额涨幅,由此前的6.8%增至7.4%。   据iSuppli预计,2006年全球半导体营收将达到2547亿美元,高于此前预期的2371亿美元。而明年预计可达到2852亿美元,同比将增长12%。  其中,DRAM芯片今年的销售额将达到264亿美元,涨幅6.2%,占全球半导体销售额的10%。而2005年的DRAM芯片销售额为248亿美元,同比下滑6.2%。   另外,NAND闪存今年的销售额将达到138亿美元,涨幅29%。去年,NAND闪存的销售额涨幅高达62%。
[焦点新闻]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved