野火电子论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

查看: 24099|回复: 12

STM32 RAM调试不能全速运行

[复制链接]
发表于 2014-3-12 15:56:47 | 显示全部楼层 |阅读模式
请问为什么STM32 RAM调试的时候,刚刚开始点全速运行不能运行到main函数,只能点单步运行,单步运行到main函数后又可以全速运行了
回复

使用道具 举报

发表于 2014-3-12 15:57:24 | 显示全部楼层
可能是你mdk的版本问题,使用4.72版本的试试看
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-12 16:00:40 | 显示全部楼层
用的是4.72a版本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-12 16:02:59 | 显示全部楼层
仿真器用jtag ARM,下载到FALSH调试都一切正常,就是在RAM中调试不正常
回复 支持 反对

使用道具 举报

发表于 2014-3-12 16:07:51 | 显示全部楼层
lyp521 发表于 2014-3-12 16:00
用的是4.72a版本

在全速运行之前,一定要按一下调试面板左侧的复位
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-12 16:10:36 | 显示全部楼层
祁羽彤 发表于 2014-3-12 16:07
在全速运行之前,一定要按一下调试面板左侧的复位

点RST就从flash启动了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-12 16:12:11 | 显示全部楼层
其他调试都正常,就是刚开始的时候必须单步到main函数,不能直接全速运行
回复 支持 反对

使用道具 举报

发表于 2014-3-12 16:13:32 | 显示全部楼层
lyp521 发表于 2014-3-12 16:10
点RST就从flash启动了

不是开发板的复位按钮,是mdk调试界面的复位按钮
如下图:

I2MGKP[H}}IPAEJ{L`KFX.jpg
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-12 16:16:46 | 显示全部楼层
是点的调试界面上的RST,点了过后PC值就变成0x80000100(也就是从flash启动了)
回复 支持 反对

使用道具 举报

发表于 2014-3-12 16:32:30 | 显示全部楼层
lyp521 发表于 2014-3-12 16:16
是点的调试界面上的RST,点了过后PC值就变成0x80000100(也就是从flash启动了)

我之前也遇到过,不过没深入的搞了,因为RAM启动仅仅是stm32的指针从RAM开始执行,而MDK是不知道从RAM启动的,它会根据我们选择的内存分布,默认从flash启动。
你如果不修改 .sct 来修改linker,那么运行异常是正常的。因为STM32 跟 MDK 的配置不一致。
回复 支持 反对

使用道具 举报

发表于 2014-3-12 16:37:34 | 显示全部楼层
你点击 rst,由于你的工程(MDK)是配置flash启动的,即使你的单片机配置为RAM启动,但编译器会加载flash地址到PC寄存器上,所以还是会从flash启动。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 09:30:47 | 显示全部楼层
风落小鱼 发表于 2014-3-12 16:32
我之前也遇到过,不过没深入的搞了,因为RAM启动仅仅是stm32的指针从RAM开始执行,而MDK是不知道从RAM启动 ...

有什么解决建议吗
回复 支持 反对

使用道具 举报

 楼主| 发表于 2014-3-13 09:31:14 | 显示全部楼层
风落小鱼 发表于 2014-3-12 16:37
你点击 rst,由于你的工程(MDK)是配置flash启动的,即使你的单片机配置为RAM启动,但编译器会加载flash地 ...

强烈支持,非常感谢哥们
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

联系站长|手机版|野火电子官网|野火淘宝店铺|野火电子论坛 ( 粤ICP备14069197号 ) 大学生ARM嵌入式2群

GMT+8, 2024-11-23 18:42 , Processed in 0.033515 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表