你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在cubeide中,设置成从SRAM启动程序

[复制链接]
IncoYang 发布时间:2020-9-23 20:17
STM32 MCU支持多种启动方式,在调试过程中,有时需要配置从SRAM启动,以避免总是擦除flash,影响寿命,网络上主要针对keil IDE做出很多攻略,在cubeide怎么实现一样功能的配置方法,根据自己的摸索,分享出来,希望能帮到需要的朋友。关于启动过程的详解网络上有很多资料,此处不做赘述。实现SRAM的几个关键点,以Nucleo-G474RE开发板每隔1s toggle io管脚闪LED灯为例。
! {5 [# w, f; J3 v3 L(1)MCU boot配置要正确,否则,debug 重新reset后程序会跑飞,因为找不到正确的入口
6 Z# {3 i: m: ~) s(2)要选用正确的链接脚本,创建工程时,会有2个ld后缀的链接脚本,分别对应于从flash启动和sram启动的脚本,有兴趣可以对比两个文件看看区别
2 y4 t/ U; V2 y" D(3)编译时要define VECT_TAB_SRAM" y" r3 I2 A8 g6 G; v" E
(4)debug config设置正确的程序PC。
/ D* B5 W3 M5 `. v下面结合一下截图说明一下具体的操作和分析。创建2个一样的工程,在
8 }& {7 p- R, S) ^, w' V (a) c/c++ build中分别选不同的linker script,一个工程是STM32G474RETX_RAM.ld,另一个选STM32G474RETX_FLASH.ld5 m) `' j) i$ d! [( G
(b) gnu gcc compiler增加VECT_TAB_SRAM,编译两个工程,比较两个lst的文件,可以看出区别,固件的地址空间一个在flash+sram,另一个全在sram中。
+ _% R8 r2 i% g, H(c) 从SRAM启动的工程还需在debug configuration的startup中填入specify vector table 0x20000000. @0 |1 p) S9 f0 Z4 C
通过以上三点,就可以从sram启动程序。1 Q. b9 K0 J3 ?! z7 d  S+ u, x6 G
容易出错的几点说明* e) m& p% b2 w; G& u
(d)在从SRAM启动的工程中,如果没有设置define vect_tab_sram的话,程序在运行到hal_delay时会出错,因为它没有把中断向量表放到sram中! r# ^  _; B6 r  O
(e)如果mcu的boot启动方式设置是flash启动,先把flash擦除后,用sram启动的工程调试,第一次debug可以,再次用debug reset后,程序会报错地址0xfffffff9 0xfffffffe,因为再次启动flash没有程序,无法定位,启动不了; s0 w2 ^- N$ n' }* r
(f)如果mcu的boot启动方式设置是flash启动,flash中有程序,用sram启动的工程调试,第一次debug可以,再次用debug reset后,程序会运行报错,因为此时会从flash启动代码,但是不对,会运行部分代码,然后在无效机器码的地址停下来3 g" n, |# E# e$ k5 }8 U
(g)如果mcu的boot启动方式设置是sram启动,用flash启动的工程调试,再次用debug reset后,程序会运行报错地址0xfffffff9
2 I3 Q4 \8 C9 @5 B
/ D( E+ }* M9 Q6 ]
6 v! g, F8 t$ L. _* y, F( M, |+ V4 o% R
Snipaste_2020-09-27_08-31-44.png
Snipaste_2020-09-27_08-37-35.png
Snipaste_2020-09-27_08-45-17.png
Snipaste_2020-09-27_08-42-21.png

bootframflash.zip

下载

7.78 MB, 下载次数: 15

bootframsram.zip

下载

7.78 MB, 下载次数: 22

赞 收藏 评论1 发布时间:2020-9-23 20:17

举报

1个回答
秋STM32 回答时间:2020-9-29 16:16:34
你好,想问下这种方法只能用做调试时从SRAM启动,掉电后程序就丢失了。STM32CUBEIDE有没有哪里可以配置上电后先将代码从flash拷贝到ram中再运行

所属标签

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版