FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :) W, a, }7 l* G1 J) ]& ? D
- {4 i: N3 ]0 h3 k9 T& ~! h, A. [* w
- . = ALIGN(4);' U5 g: r# k( P! _4 Q- t
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */
, e. c# f8 Y& `6 L! K d - *(.malloc)
( X$ `' \6 u# o" W1 `& ]+ o# u - *(.malloc*)
+ L( H$ m7 ]% h) @ - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */' T5 u6 F# N0 f4 j: h' t/ W
- . = ALIGN(4);
/ N( e# S4 w/ ~, j* f& V- B- U -
6 x9 t# t+ N3 T9 \' p3 J - } >MALLOC
复制代码- MEMORY8 R/ q+ _3 S( a+ o4 Y8 I8 \
- {; K% C) J2 m) C* D: \1 K. w
- DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K& L6 J# q& d/ u0 w- `
- ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
- l1 b3 R, \2 I, |! { ^6 O9 g& L - RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
: t6 |) \( V% i$ v* j - RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K4 M# r$ ?: q) H8 g" L! K0 y
- RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K
e; {* P; z d, h - FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
. H, ~3 S) Y7 j G4 C* x - MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M
# U, I' N$ h% i" H0 @# \; T- B! g - }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。0 B( K+ j0 B3 }+ g ~+ m! M6 X
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?2 @, q/ H, E2 w/ {6 \& |
|
éè¿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
然后在最后一个大括号前添加 , |. ?2 M5 n; x3 I( f
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section 7 a1 ]/ Q3 ?/ k+ f/ K( I/ }
在使用时定义长度、申请数组
#define GUI_NUMBYTES (1024) * 1*300 // x KByte
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));$ g& L) U$ a9 d: B9 b
下面是.ld文件
; D5 U3 c- m( k$ q9 M4 X' [3 G
5 ^0 i# O' ]0 F! R) d
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件 r! |4 N/ f- q* {9 z2 V
要做在线升级
这样就可以不在bin文件中加入LMA了。
注意,第一次编译先不加NOLOAD,编译过了再加
按步骤配置后如果Stm32CubeProgrammer识别不了stldr文件可以看一下
CubeIDE的构建设置里面的MCU GCC Linker的General里面的Discard unused sections选项有没有打开,要关闭后才能识别