FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:- .malloc :6 F- M7 Z8 V& k, t4 n ^
- {
2 Y0 y7 `) t! ]6 q' ]& U h - . = ALIGN(4);
; p; y. E* i3 D - __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram start */" Q( f/ [/ J7 K8 e) c6 m
- *(.malloc), \& @, Q1 X8 E. |7 S8 e% n
- *(.malloc*)+ G8 G/ Z( h9 G
- __MALLOC_SYMBOLS = .; /* create a global symbol at ccmram end */
" g7 g1 R$ f: U+ `4 \- D - . = ALIGN(4);' I% H- x0 T0 B$ E' F$ l# i& U. e, E
- ' I5 t* h# o8 I$ J
- } >MALLOC
复制代码- MEMORY
+ `: Y2 {1 f' C" ? r+ _0 q7 O - {* b; D8 o4 G4 K$ L# M
- DTCMRAM (xrw) : ORIGIN = 0x20000000, LENGTH = 128K
0 k3 H: y* W$ Z4 v+ P( Q - ITCMRAM (xrw) : ORIGIN = 0x00000000, LENGTH = 64K3 N, |' Q4 X' q6 y
- RAM_D1 (xrw) : ORIGIN = 0x24000000, LENGTH = 512K/ d/ d* S5 T3 S4 ^+ Q, z9 _$ Y
- RAM_D2 (xrw) : ORIGIN = 0x30000000, LENGTH = 288K
2 f; ~0 O7 [' u# x3 S/ O7 l! I4 ~6 N - RAM_D3 (xrw) : ORIGIN = 0x38000000, LENGTH = 64K' V& X( L. v. e# [0 o( Q! K
- FLASH (rx) : ORIGIN = 0x8000000, LENGTH = 128K5 Z1 [* g5 \% M* L4 [9 o$ f
- MALLOC (xrw) : ORIGIN = 0xc0000000, LENGTH = 64M
# p! h( L6 D p# G4 r# i - }
复制代码 但是在程序中定义全局变量如下:- uint16_t testsram[25000] __attribute((section(".malloc")));
复制代码 此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。
" w, D2 \! u, J1 q再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?- r, x0 I+ B5 h& L1 y, N. W
|
éè¿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
在使用时定义长度、申请数组' f7 W* h; J9 E4 Q
#define GUI_NUMBYTES (1024) * 1*300 // x KByte! m' l. S5 U6 e, Z2 @
U32 aMemory[GUI_NUMBYTES / 4] __attribute__((__section__(".GUI_NUMBYTES_section")));
下面是.ld文件
: v# B) Z+ g, l9 y; _
5 ]5 h' J R7 C4 d- ]6 T$ b
STM32F429IGTX_FLASH.rar
2020-11-27 09:50 上传
点击文件名下载附件
2.27 KB, 下载次数: 6
还是不行,依然会生成一个很大的bin文件
要做在线升级
这样就可以不在bin文件中加入LMA了。
注意,第一次编译先不加NOLOAD,编译过了再加
按步骤配置后如果Stm32CubeProgrammer识别不了stldr文件可以看一下
CubeIDE的构建设置里面的MCU GCC Linker的General里面的Discard unused sections选项有没有打开,要关闭后才能识别