电子产业一站式赋能平台

PCB联盟网

搜索
查看: 177|回复: 0
收起左侧

基于STM32CubeIDE的指定存储话题

[复制链接]

502

主题

502

帖子

3383

积分

四级会员

Rank: 4

积分
3383
发表于 2024-10-12 11:38:00 | 显示全部楼层 |阅读模式
意法半导体公司【简称ST】为STM32用户提供了免费的编译工具软件STM32CubeIDE,时不时有人咨询基于该环境下的指定存储话题,这里专门聊聊该内容,重点介绍如何实现针对变量、函数、文件、常量的指定存储的实现方法,以供参考。
一、指定变量的RAM存放地址
先修改STM32CubeIDE的相关连接文件如下:【后面都会用到下面配置】

sjykolq4mpm64081494338.png

sjykolq4mpm64081494338.png

在链接文件中增加section:

wwpmlqscobu64081494438.png

wwpmlqscobu64081494438.png


cfsdgpalatb64081494538.png

cfsdgpalatb64081494538.png


ac1kvkxgjtl64081494639.png

ac1kvkxgjtl64081494639.png

或者这样也行:

xiv4y25c3fo64081494739.png

xiv4y25c3fo64081494739.png




w1n1iysfqd464081494839.png

w1n1iysfqd464081494839.png

当然,对于变量的指定存储,不调整链接文件,直接给定地址借助指针的方式也是可以的。比方像下面这样,不过要注意你指定使用的内存空间是安全的,别跟其它堆栈区冲突了。

c1wy4opn32n64081494939.png

c1wy4opn32n64081494939.png

二、指定函数的存放地址
下面尝试将名为MX_I2C1_INIT()的函数存放在指定位置。

4on4utqbbik64081495040.png

4on4utqbbik64081495040.png


a5vwiu4jpeg64081495140.png

a5vwiu4jpeg64081495140.png


4wcdsfwyam564081495240.png

4wcdsfwyam564081495240.png

三、指定文件的存放地址
下面尝试将名为adc.c和gpio.c的目标文件存放在指定位置。

vdy2q5mpif264081495340.png

vdy2q5mpif264081495340.png


ol4yiivvqyj64081495440.png

ol4yiivvqyj64081495440.png

四、指定常量的存放地址

45l50n1su4w64081495541.png

45l50n1su4w64081495541.png


iqf5orabj1564081495641.png

iqf5orabj1564081495641.png

当然,如果在section那里再指定地址的做法也可以:

liv55xpkax064081495741.png

liv55xpkax064081495741.png

看到这里,有人或许好奇链接脚本中的keep关键字,如果不要会怎么样呢?
这里使用 KEEP 关键字的主要目的是确保特定的段[section]在链接过程中不会被丢弃。即使这些段没有被显式引用,因为KEEP 关键字的存在而被强制保留段定义。换句话说,如果这些段没有在代码中被引用或使用,且在链接脚本中未加 KEEP ,那么相应的段将会在链接过程中被丢弃。
我们不妨验证下。基于上面的配置,将keep拿掉,同时代码中对定义的常量不做任何引用或使用。我们可以发现定义的常量段被丢弃了,即没有在预定的地址为其安排存储空间。

ehnucs20ky464081495841.png

ehnucs20ky464081495841.png

最后提醒下,我们做段定义时有时可能会遇到地址不合适的问题,我们可以适当调整地址数据,不要跟默认栈空间冲突了。还有,自定义段在链接脚本中的位置有时会涉及到有效性问题,具体设计时可以灵活调整段定义在脚本文件中的前后位置。
OK,今天的分享就到这里,下次再聊~!
猜你喜欢:
WiFi6+蓝牙+星闪,三合一开发板,真香!
Github上热门 C 语言项目汇总!
嵌入式,可测试性软件设计!
一些低功耗软件设计的要点!
嵌入式 C 保护结构体的方式
实用 | 10分钟教你通过网页点灯
谈谈嵌入式软件的兼容性!
分享一个嵌入式代码生成器设计思路!
点击阅读原文,查看更多分享。
回复

使用道具 举报

发表回复

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

本版积分规则


联系客服 关注微信 下载APP 返回顶部 返回列表