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

关于 STM32CubeIDE 链接脚本的小问题

[复制链接]
STMCU小助手 发布时间:2022-8-7 17:08
1. 概述
5 o2 G! g) o" c) ~) F+ x越来越多的客户在使用 STM32CubeIDE 作为集成开发工具。STM32CubeIDE 在编译代码的时候,用到了链接脚本。通常情况下,STM32CubeIDE 会自动生成默认的链接脚本。但是有些情况下,例如,用户程序需要定义一些特别的段来放置代码或者数据的时候,我们就需要修改链接脚本文件。# e) T, n! _/ z  d8 U
最近有客户在修改链接脚本后,编译没有出现问题。但是编译之后生成的 BIN 文件很大,导致无法烧录到 Flash 中。结合这个问题,本文详细分析一下它的原因以及解决办法。
3 X+ l) u' Y# B7 Q# R: [1 U
2. 问题描述1 @6 k$ y9 p9 y1 {; ?2 _% u2 j
使用 STM32CubeIDE 创建工程的时候,在项目工程目录文件夹下生成后缀为 ld 的链接脚本文件,程序的编译和链接都会依赖链接脚本文件。如下图所示,STM32H743VIT6 的 RAM 空间被包含 6 块,每块 RAM 的起始地址是独立的,如果客户需要把指定特定的 RAM 区域放置数据或者代码的时候,需要手动修改链接脚本文件。
4 j: j" D$ x0 m2 \0 w  f7 n5 v3 K. m* q$ P8 H# u" `: i* r; \

6 p8 W9 y) c  k6 Q1 b8 `2 o' d W~QNGZB3@FBC2N7PN$}(9~7.png & X* o3 f7 s) r9 o0 X7 r0 g, H
' f& H- q# C/ q4 K5 G
客户在使用 STM32H743VIT6 进行应用开发的时候,需要在 0x24000000 以及0x30000000 的 RAM 空间定义两个未初始化的数组。所以客户修改了 ld 链接脚本文件,添加两 个 SECTIONS 分别定位在 0x24000000 和 0x30000000 位置,同时在代码中使用__attribute__关键字指定数组在对应的 SECTIONS 中。6 B2 O2 G) x: h5 P$ {
依照客户的问题描述,我们首先修改链接脚本,添加两个 SECTIONS 分别为ram_at_0x24000000 和 ram_at_0x30000000,参考如下。
! j- m9 m' A' z/ t: v2 }
! q. r; r# i6 [+ z0 h" ?) @, l+ H% r

1 V( R: w* o' e% ^3 X; o FD6X5VKVJ1N}A5E3NE0N~7M.png
  \  U6 R* }) U8 {0 _2 x( q! O% h; X  w+ S4 i! x+ G, E- Y
( G* o, d7 I" i( Y: ^; p
同时在源代码中添加两个数组,分别定位在添加的 SECTIONS 中,参考如下。
- f2 e: Z% c7 R% e" f% f9 N6 N* S# W! c5 M, z. Q
1 g$ l; e0 C4 ~! n. U, ~8 p
J69S(TN~Y(4CPKK{@SIDZK9.png
: J8 K& A( Y5 W$ F! f* m9 T2 L7 l$ M4 n- M' \, h$ u: _

( a. }$ ]9 x. a2 N编译修改之后的工程,是可以正常运行的,但是我们发现当把 ELF 目标文件转为 BIN 文件之后,产生的 BIN 文件非常的大。这就导致如果使用 BIN 文件进行下载的话,是无法下载成功的,因为 BIN 文件的大小以及超出了 Flash 的存储空间。由下图 BIN 文件属性我们可以看到 BIN文件的大小为 650M。 ) L* i4 D9 d4 J  {  B3 j* J' P
/ C! J$ z( S. p5 K7 y/ }3 O
图4. BIN 文件大小 5 `% B  v7 R0 S5 p! ]
]JBXR{O8R4(U4SO{SC53E8I.png ) k' l  C% d0 A0 N* E
5 `8 e' C( _& g8 m% V
那么是什么原因导致产生的 BIN 文件这么大呢?文件就出在 ld 链接脚本文件这里。
' J5 R0 f8 o0 r5 b: s5 V: W
, V/ l2 h( ^3 V7 \7 Y4 g- B9 o; c  i0 h( R! i4 K9 U# f7 j! j" ~: r
: H% [0 X  o7 ]- \( l  R
# O- }! V" w5 T
完整版请查看:附件# q: A% r% v" P& l+ M. C. r2 ~

8 g. s0 B7 P9 e# b9 B; E1 O
4 A! G" W2 Q8 `8 Y0 R! l% v. }  X. f* [0 l6 Y

LAT1037_关于STM32CubeIDE链接脚本的小问题.pdf

下载

666.88 KB, 下载次数: 4

赞 收藏 评论0 发布时间:2022-8-7 17:08

举报

0个回答

所属标签

相似技术帖

官网相关资源

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