FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :# A0 B. h c$ E/ v
- {( x, Z! `# z" a
- . = ALIGN(4);
' h+ l# z" H; H& A F0 J - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */; `2 T; F2 p0 r% W% W' U+ A
- *(.malloc)
2 P, y# T; f- g - *(.malloc*), R& g9 J. a% c0 p
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */3 t0 |' y4 T; X& i+ o
- . = ALIGN(4);
8 h4 u+ K; g: ~& P/ U0 z -
. X# H1 J9 `& C# V ^' g2 X; d - } >MALLOC
复制代码- MEMORY% L+ u' A! J9 g z' ~- ?% [
- {# C0 z1 F3 s; G$ b5 X, F
- DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K6 B/ B6 @# R# ~% Y
- ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
+ p% J$ g0 D1 K7 r# [2 `* z - RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
7 x4 K: j9 \ [( l+ ~# Q8 B3 X - RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K
2 w2 s) ?* z2 V - RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K8 ?! X c% c& I! A
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
9 T( t1 B8 k, t) C1 n; k( \ - MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M0 ~3 W5 d8 t# S" X- |3 }: c
- }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。; e6 u9 A0 y" K6 S, y* E& l
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?
6 [, j9 Q. c0 A; O |
éè¿STM32CubeMXå¶ä½å¤é¨Flashçç§å驱å¨.pdf
2020-11-26 13:52 上传
点击文件名下载附件
696.61 KB, 下载次数: 42
External_Loader-main.zip
2020-11-26 14:10 上传
点击文件名下载附件
30.46 KB, 下载次数: 25
非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
GUI_NUMBYTES_section (xrw) : ORIGIN = 0xc0600000, LENGTH = 8192K
然后在最后一个大括号前添加 ( T" m8 ^& V. ^1 D
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section 8 x) {6 I& ~/ W+ k0 \
在使用时定义长度、申请数组
#define GUI_NUMBYTES (1024) * 1*300 // x KByte
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));
下面是.ld文件
- a$ @9 j3 }7 D% z9 o
7 o- E$ b) w: g, `5 b! T9 r
; n8 @1 P0 U" t- C+ c, o6 N
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件 e" @ y) b, X
要做在线升级
这样就可以不在bin文件中加入LMA了。
注意,第一次编译先不加NOLOAD,编译过了再加
<br /> <br />
按步骤配置后如果Stm32CubeProgrammer识别不了stldr文件可以看一下
CubeIDE的构建设置里面的MCU GCC Linker的General里面的Discard unused sections选项有没有打开,要关闭后才能识别