FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :
" P& g2 ] E/ E - { R1 M- F; Y- f" u0 `" `
- . = ALIGN(4);
4 i, ~# T" W: B% a, @! n% R/ o7 g- | - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */
# x3 H0 {$ C; C X - *(.malloc)( b" K3 N4 z3 k$ V t) k# X
- *(.malloc*)
3 e( ^! e4 c2 p - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */% S. V1 q8 }7 S6 d: `1 C
- . = ALIGN(4);& e4 p/ {- |" P; B/ f S
-
6 G7 y2 N2 H' r$ w0 ] - } >MALLOC
复制代码- MEMORY
" F$ q: ]# F( f5 S& i - {
4 ~. u( p$ S7 Z: b6 m - DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K; s4 F% }1 h4 m
- ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K# V3 y4 k1 c" }! a) ~; J
- RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
2 K, s! F9 m3 Z2 d# T - RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K9 I! v2 I7 T9 `# y/ C* _0 S2 w
- RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K5 h2 @& ^ m; [) _' F
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
9 {" ?( k4 m4 f. D1 r - MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M
8 }% z9 l/ r) x& Q - }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。$ f8 s5 l8 V2 H' k9 y/ C$ V
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?
6 T: K/ I& y& {1 c |
éè¿STM32CubeMXå¶ä½å¤é¨Flashçç§å驱å¨.pdf
2020-11-26 13:52 上传
点击文件名下载附件
696.61 KB, 下载次数: 39
External_Loader-main.zip
2020-11-26 14:10 上传
点击文件名下载附件
30.46 KB, 下载次数: 18
非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
GUI_NUMBYTES_section (xrw) : ORIGIN = 0xc0600000, LENGTH = 8192K 6 [1 }& a1 h! ?0 x
然后在最后一个大括号前添加 " \' N4 @' I( y Y; E6 v1 W
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section
在使用时定义长度、申请数组
#define GUI_NUMBYTES (1024) * 1*300 // x KByte
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));# F/ J4 c2 `6 `- z2 _- a2 u
下面是.ld文件3 _5 Z; Z, _2 a- ?5 b
8 D! u, e) R: R5 p" r _
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件
要做在线升级
这样就可以不在bin文件中加入LMA了。
注意,第一次编译先不加NOLOAD,编译过了再加