FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :
: P4 X& V7 [3 ] - {4 W% w+ }% U' Z$ H5 y( R
- . = ALIGN(4);+ E$ ^7 r1 Z2 {; n# I
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */
- ~. e9 R" `" |$ t; ~ - *(.malloc)
# Z+ A* Z8 H3 _' c6 p6 w6 Q - *(.malloc*). J2 x: t% s" O9 ~4 U: i' [
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */
3 t. t6 ~4 ~) G# d \; F - . = ALIGN(4);6 |0 R& R( o5 y2 b8 W% G* E7 D
- ( U6 c0 c$ V* ]; f/ T. B4 c
- } >MALLOC
复制代码- MEMORY
5 R4 e6 ^& U' l$ N) ?# n - {, C$ }/ x# X F ^, @4 W: B
- DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K, u# C! X5 K$ G9 _& d% u9 H$ }
- ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
0 U4 `- @/ B! `0 I y( w - RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K
9 o4 C9 }+ F u- K: T1 g8 z - RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K
1 E) `2 x1 G1 j- T# q8 r) _6 l - RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K
+ z) Q4 L- H! I- T - FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K7 v$ o( w o! b. k% P$ P% w
- MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M
! T4 |% B3 C9 r. J) U8 P8 n - }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。
5 \5 A9 B/ p/ l' g; e0 R再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?1 C- Z& I( x9 l7 i
|
éè¿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
然后在最后一个大括号前添加
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section / _3 i2 c6 G3 |7 [+ b
在使用时定义长度、申请数组4 n; Y4 M; y. J- k7 F4 Q7 j% ]3 f
#define GUI_NUMBYTES (1024) * 1*300 // x KByte4 s8 Q, s, i4 } }
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));
下面是.ld文件
( M2 p8 U/ c" N
$ w: M T6 L- a9 u8 ~
& I0 R/ B' [6 W/ i' ]5 ?1 F) L
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件
要做在线升级
这样就可以不在bin文件中加入LMA了。6 I6 L- c4 v5 b, e7 _: w7 M, i. s, z
注意,第一次编译先不加NOLOAD,编译过了再加
按步骤配置后如果Stm32CubeProgrammer识别不了stldr文件可以看一下
CubeIDE的构建设置里面的MCU GCC Linker的General里面的Discard unused sections选项有没有打开,要关闭后才能识别