STM32在Keil MDK环境下RAM上代码调试

发布者:tgdddt最新更新时间:2015-08-24 来源: eefocus关键字:STM32  Keil  MDK环境  RAM  代码调试 手机看文章 扫描二维码
随时随地手机看文章
自从51后就没碰过了Keil了~从昨天下午又开始再次使用Keil MDK~不过这次是for ARM的~前几天的STM32W108调试统统是在IAR上进行的~

刚在STM32F103ZE-EK上进行了一个例程的调试~就发现原来更有方法在RAM中进行代码调试的配置~以前在IAR中知道有个iar- cfg.icf文件是关于存储分配的~貌似也可以如此~不过没实际操作过不敢下结论~索性就在Keil下来了个尝试~比较坎坷~也学到不少东西~

废话少说,进入正题~(Keil4下的画面~这个配置的方法跟是3一样~)

步骤与图示:

1.先给个CPU的数据,需要注意的是三个红圈的地方,架构,型号,Flash和SRAM大小~如图1

 

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图1

2.Target的设置

 

1)勾上可以用微库,减小生成代码的大小

2,3)分别定义ROM区位置及大小和RAM区位置和大小。在这里需要说明的是,Cortex-M3的架构有4G的寻址空间,而Flash的起始地址在0x08000000,RAM地址在0x20000000,在这里进行了第一次相关地址的更改~如图2

0x1000为4K~这里的0xc000则为48K的ROM分配~RAM的为16K~基本上移植个uCOS-II都够用了~

 

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图2

3.Output的设置

强调一下Name of Executable吧~这里默认的应该是project的名字,我习惯改成output~而且这与编译后产生的*.axf和*.sct文件名字都有关联~没勾选HEX~感觉选了也没用~写到SRAM中的是。。。见图3

 

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~


图3

4.Listing Label~没啥说的~不上图了~默认~

5.User Label~更没啥说的~同上~

6.C/C++ Label~貌似都没啥说的我后面就不用写了~再同上。。。。~

7.真想罢手了~无语的Asm Label~

8.好啦~来活了~Linker Label

最上边打上勾~是这效果~不打勾~就反白了~然后呢~呵呵~慢慢说来~

先说说打勾的时候,如图4~非人为操作~你什么都不用管了~(很多人会发现~新建的项目~刚开始的时候下面的Scatter File后的内容是空的~当你把这勾去掉后会自动出现~然后随你勾与不勾~就都是存在的了~不过此时还只是个影子~没有实际的文件~什么时候出现这个文件呢~法一:自然你可以自己写~呵呵~法二:在出现影子后打上勾编译一次,此文件就产生了~在output的文件夹里~马上后文还会有对此文件内容的介绍~)

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图4

再说说不打勾的时候会反白一些内容~如图5,需要修改两个地方~

 

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~

 

 

图5

再来看看~output.sct文件内容~如图6~6行内容是ROM的地址和大小~11行事RAM的地址和大小~很是一目了然吧~内容根据Target自动生成的~不需要手动修改~[page]

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~


 

 

图6

9.Debug的配置

分成几部分,原界面和Setting界面

1)原界面,如图7~首先选好J-link~这里由于使用的是keil4~和keil3的选项会有不同~在keil3下~选择“Cortex-M3 J-Link”,取消Load Application at Startup的勾选~

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~

 

图7

再说说这个CouRAM.ini文件~内容如下~如图8~有注释~

 

 

 

 

首先LOAD output.axf~加载启动代码到RAM~关关于hex,bin文件和axf的关系~是在axf中存有Debug需要的一些调试语句~所以这文件与前 2者内容上是不相同的~前两者属于其子集的关系~(这里的output.axf名字对应了我们上边设定的output的文件名设定~此文件在output 中设定的文件夹下生成~跟output.sct在一起~)从文件内容可以看到~中断向量表已经被映射到0x20000000,PC也指向了 0x20000004~说明在RAM中进行调试时理论上可以的了~

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图8

 

2)进入setting如图9~首先要选对interface~有时候莫名其妙的会在keil死机后(我调程序总是把Keil弄挂了~真不是为何~难道说他是Keil~而我是Killer么~哈哈)~一定要注意~不然容易出现J-Link连接失败的效果~

 

 

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~

图9

3)Trace label不用调整~默认就可以~如果需要使用~记得算好了选用的时钟Core Clock~这里是指PLL后的~

4)然后进入了Flash Download label,如图10~Flash的擦写有规矩~需要在有内容的情况下擦出一个扇区后方可写入,而此时的RAM自然不必要这样做~然后RAM for Algorithm需要改下~接着需要点击add添加Flash编程算法(我还不会写这算法,不过大概看了下,就是麻烦点的一堆调用和设置)~接着进入了选择界面~如图11

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~


图10

在这里选择好属于自己的芯片Flash大小~我的这个挺大的~512K呢~呵呵~

add后还需要再更改最后一行红线上的内容~此时需要先点一下刚选好的变成算法就会反白可编辑~然后编程算法会自动更改其自身的地址~

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图11

 

10.进入Utilities~同Debug一样~选择~其中的setting其实刚刚讲过~其实是同一个~如图12

 

【转】Moses <wbr><wbr>娄'的STM32学习笔记(一):STM32在Keil <wbr><wbr>MDK环境下RAM上代码调试的配置心得~
 

图12

到此为止~这一天半的RAM调制研究之旅的总结画上了一个圆满的句号~

需要提醒大家注意的几点是:

1.Debug开始后~不要点reset~因为这样后走的就是Flash的程序了~容易造成调试问题~结果是产生keil被kill掉的PC错误~

2.重新启动开发板后一定要build target 一次~或者rebuild all一次再烧写程序~不然~很容易同上~原因是不太清楚~希望有人能告诉我~呵呵~

关键字:STM32  Keil  MDK环境  RAM  代码调试 引用地址:STM32在Keil MDK环境下RAM上代码调试

上一篇:STM32在Keil MDK环境下RAM上代码调试
下一篇:STM32F103VC在RAM中调试方法

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

STM32学习之I2C
I2C总线是由NXP(原PHILIPS)公司设计,有十分简洁的物理层定义,其特性如下: 只要求两条总线线路:一条串行数据线SDA,一条串行时钟线SCL; 每个连接到总线的器件都可以通过唯一的地址和一直存在的简单的主机/从机关系软件设定地址,主机可以作为主机发送器或主机接收器; 它是一个真正的多主机总线,如果两个或更多主机同时初始化,数据传输可以通过冲突检测和仲裁防止数据被破坏; 串行的8 位双向数据传输位速率在标准模式下可达100kbit/s,快速模式下可达400kbit/s,高速模式下可达3.4Mbit/s; 连接到相同总线的IC 数量只受到总线的最大电容400pF 限制。 其典型的接口连线如下: I2C
[单片机]
<font color='red'>STM32</font>学习之I2C
STM32----SDRAM配置
一、硬件环境 野火stm32F429第一代开发板,主频180。SDRAM为:IS42S16400J,容量8M/byte。 接线如下: 如何接线,需要参考两个文件。一个是stm32参考手册,一个是SDRAM数据手册。 stm32参考手册中关于FMC引脚说明如下: SDRAM数据手册,太容易找就不贴出来了。 需要注意的是,FMC映射到SDRAM有两个bank可以选择。从上图可知选择不同的bank SDRAM需要接到MCU不同的 SDCKE以及SDNE引脚,且程序中应根据引脚选择驱动对应的bank。 二、初始化程序 程序初始化,只需按照SDRAM DATASHEET提供的时序初始化S
[单片机]
STM32----SDRAM配置
如何使用F-RAM 解决方案来增强 ADAS 的可靠性
非易失性存储器 (NVM) 在几乎所有嵌入式系统设计中都起着关键作用,但许多设计对非易失性存储器在数据写入和访问速度、数据保留、低功耗等方面的要求越来越严格。在汽车应用中更是如此,设计人员正在努力打造更先进的功能,例如高级辅助驾驶系统 ( ADAS ) 这类任务关键型功能。 为确保这些系统安全可靠地运行,设计人员需要深入研究先进的铁电随机存取存储器 (F-RAM),作为要求可靠性高、功耗低且比当前 NVM 解决方案速度更快的低功耗汽车级 NVM 的选择。 本文讨论 F-RAM 技术的关键特性,并介绍开发人员如何使用 Cypress Semiconductor 的两款 F-RAM 解决方案来增强 ADAS 的可靠性,,并以 A
[汽车电子]
如何使用F-<font color='red'>RAM</font> 解决方案来增强 ADAS 的可靠性
STM32 GPIO的8种工作模式及相关配置寄存器
GPIO八种工作模式 四种输入: GPIO_Mode_IPU(上拉输入) GPIO_Mode_IPD(下拉输入) 原理: 经过上拉开关和下拉开关的连接,再经过触发器转化为0,1的数字信号,存储到数据寄存器中,然后我们就可以通过配置寄存器CRL,CRH控制这两个开关。 用法: 若GPIO引脚配置为上拉输入模式,在默认状态下(GPIO引脚无输入),取得的GPIO引脚数据为1,既高电平. 而下拉输入模式则是相反的,在默认状态下其引脚数据为0,低电平. GPIO_Mode_IN_FLOATING(浮空输入) 原理: 不接上拉和下拉开关,直接经由触发器输入. 用法: 若配置成这个模式可以用电表测量其引脚电压是1点几伏(不确定的值).由于输
[单片机]
STM32串口一直进中断解决方法
今天在使用USART模块,遇到了一些问题并解决了,于是发贴共享。 问题描述: 在使用USART做串口通讯时,我只把接收中断打开,并设置抢占优先级为最低一个级别,而接收中断上一个优先级处理事情比较多,可能占用了2ms时间。当我使用9600波特率往下位机发送数据,速度非常快,就是一直按回车发!问题就出来,不到1分钟时间,通讯没有反应了。USART配置代码如下: void uart_config(void) { USART_InitTypeDef USART_InitStructure; USART_InitStructure.USART_BaudRate = UART_GetBaud(BaudRate);
[单片机]
<font color='red'>STM32</font>串口一直进中断解决方法
SMART Modular推出旗下首款CXL内存模组
全球内存解决方案、固态硬盘和混合存储领域领导者之一的 SMART Modular,刚刚发布了旗下首款 DDR5 XMM CXL 内存模组。通过在 Compute Express Link 接口后面添加高速缓存相干的内存,其能够突破当前大多数平台的 8 / 12 通道限制,大举提升服务器和数据中心应用程序的数据处理能力。 SMART Modular 指出,CXL 提供了可组合的串行连接内存架构,为行业开辟了一个增加主内存 DIMM 之外、大幅提升系统内存容量和带宽的新时代。 在 XMM CXL 方案的加持下,内存模组可跨节点共享,以满足吞吐量和延迟要求。此外服务器客户能够针对不同的应用程序 / 工作负载,在不关机的情况下轻
[半导体设计/制造]
SMART Modular推出旗下首款CXL<font color='red'>内存</font>模组
4GB 内存 ,骁龙 821 处理器,LG Q9 正式发布
集微网消息,日前 LG 在韩国正式发布了一款全新的智能手机 LG Q9 。 据悉,LG Q9 配备了 6.1 英寸 FullVision 刘海屏,屏幕分辨率为 3120 × 1440 ,后置指纹识别,摄像头组合为前置 800 万 + 后置 1600 万像素的前后单摄组合。而在主要硬件配置方面,LG Q9 搭载的是高通 2016 年的旗舰芯片骁龙 821 处理器,配备 4GB 内存,电池容量为 3000mAh 。 尽管 LG Q9 无论从硬件还是外观设计上似乎都有点“穿越”的感觉,但在音频方面 LG Q9 搭载了 Hi-Fi Quad DAC 系统,这个系统可以减少 50% 以上的失真和杂讯,从而提高输出音质。此外,它
[手机便携]
4GB <font color='red'>内存</font> ,骁龙 821 处理器,LG Q9 正式发布
基于STM32物联网开发板(4)--LCD屏
1.概述 屏幕尺寸为1.3寸,分辨率240*240,颜色格式RGB565,驱动IC:ST7789VW; 超大可视角度:大于160°(显示屏中可视角度最大的一种屏幕); 宽电压供电(3V~5V),兼容3.3V和5V电平逻辑,无需电平转换芯片; 采用7线制SPI接口; 工作温度范围为工业级(-20℃~60℃); 军工级工艺标准,长期稳定工作; 硬件接口: 引脚 说明 LEDK PB0背光 CS PA4片选 SCL PA5时钟 SDA PA7主机输出 RES PB1复位脚(电平复位) D/C PC4数据命令选择脚 2.通讯协议 ST7789VW是一款用于262K彩色图形型TFT-LCD的单片
[单片机]
基于<font color='red'>STM32</font>物联网开发板(4)--LCD屏
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

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

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

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