FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :. s) N6 w4 \3 u y$ B' p
- {
& _, J& f. G* _9 S! B - . = ALIGN(4);
+ I; @; z; l- { }& l - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */
3 q3 H, Z. u- k" M) I - *(.malloc)( ~3 I. {; f, Z4 x
- *(.malloc*)0 x& c3 ?* f8 G3 k3 d* Q0 ^
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */
/ J5 I# {+ q7 y, I3 S. B9 E/ v - . = ALIGN(4);- s. c- r3 x4 j, q- ^
-
0 i P/ X5 F2 G) }- W) b& e - } >MALLOC
复制代码- MEMORY
, U) G. H, ?" ]6 u - {( H, I1 s/ K! Y, g! E
- DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
" N1 h$ ~, ]: u4 B9 O @3 N - ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K
! s) o# ]9 J! \) u5 X( @) v; o - RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K- K' Y C' x4 t3 q
- RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K* q9 Y) J+ M, b7 c1 h* g
- RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K: t4 ~) ]+ V; D" [( b" `
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K
) T4 g- G' T: m( H - MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M! x% `1 {" A1 Q( ~0 [5 k
- }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。; [' t3 ?- |4 C- O) |" a
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?+ f0 i1 D$ r5 t% N2 t- e2 Y+ l/ V- Q
|
éè¿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
然后在最后一个大括号前添加 ' K# M5 \# o& x/ u
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section 7 i( p# c9 l" M+ Z
在使用时定义长度、申请数组
#define GUI_NUMBYTES (1024) * 1*300 // x KByte
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));
下面是.ld文件
- g$ k! b" h* _0 F) B+ @
# K5 g* e, r% }0 }/ M6 N" y: a
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件
要做在线升级
这样就可以不在bin文件中加入LMA了。
注意,第一次编译先不加NOLOAD,编译过了再加