你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

CubeIDE下分散加载如何实现

[复制链接]
challenge 发布时间:2020-11-26 11:38
FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:
  1.    .malloc :
    " P& g2 ]  E/ E
  2.   {  R1 M- F; Y- f" u0 `" `
  3.     . = ALIGN(4);
    4 i, ~# T" W: B% a, @! n% R/ o7 g- |
  4.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram start */
    # x3 H0 {$ C; C  X
  5.     *(.malloc)( b" K3 N4 z3 k$ V  t) k# X
  6.     *(.malloc*)
    3 e( ^! e4 c2 p
  7.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram end */% S. V1 q8 }7 S6 d: `1 C
  8.     . = ALIGN(4);& e4 p/ {- |" P; B/ f  S
  9.    
    6 G7 y2 N2 H' r$ w0 ]
  10.   } >MALLOC
复制代码
  1. MEMORY
    " F$ q: ]# F( f5 S& i
  2. {
    4 ~. u( p$ S7 Z: b6 m
  3.   DTCMRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K; s4 F% }1 h4 m
  4.   ITCMRAM    (xrw)    : ORIGIN = 0x00000000,   LENGTH = 64K# V3 y4 k1 c" }! a) ~; J
  5.   RAM_D1    (xrw)    : ORIGIN = 0x24000000,   LENGTH = 512K
    2 K, s! F9 m3 Z2 d# T
  6.   RAM_D2    (xrw)    : ORIGIN = 0x30000000,   LENGTH = 288K9 I! v2 I7 T9 `# y/ C* _0 S2 w
  7.   RAM_D3    (xrw)    : ORIGIN = 0x38000000,   LENGTH = 64K5 h2 @& ^  m; [) _' F
  8.   FLASH    (rx)      : ORIGIN = 0x8000000,   LENGTH = 128K
    9 {" ?( k4 m4 f. D1 r
  9.   MALLOC   (xrw)     : ORIGIN = 0xc0000000,   LENGTH = 64M
    8 }% z9 l/ r) x& Q
  10. }
复制代码
但是在程序中定义全局变量如下:
  1. 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
收藏 1 评论10 发布时间:2020-11-26 11:38

举报

10个回答
李康1202 回答时间:2020-11-26 14:09:20
这里是QSPI的加载过程,详细教程https://www.bilibili.com/video/B ... 8107792149691256998,如果用SPI总线的话需要自己仿写驱动,在CubePro里面有示例工程
官方示例工程.png

通过STM32CubeMX制作外部Flash的烧写驱动.pdf

下载

696.61 KB, 下载次数: 39

External_Loader-main.zip

下载

30.46 KB, 下载次数: 18

yzz163 回答时间:2020-11-26 14:12:32
不错的资料。谢谢。
李康1202 回答时间:2020-11-26 14:27:44
至于生成的文件你可以生成HEX文件,将生成BIN文件的命令勾选掉,
challenge 回答时间:2020-11-26 16:49:47
likang1202 发表于 2020-11-26 14:09* m! V1 c! y7 J' c" C
这里是QSPI的加载过程,详细教程https://www.bilibili.com/video/B ... 8107792149691256998,如果用SPI总线 ...
& I3 F! L8 H0 W( i% t3 }4 _
非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
李康1202 回答时间:2020-11-27 09:48:29
我是这样写的首先LD文件在MEMORY里面添加
6 d! ^9 }) C: Y 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
; t4 m4 V, j/ s/ a( ]  X( ] 在使用时定义长度、申请数组
. l3 C2 F" G$ P4 a9 X( [( q  v) ~#define GUI_NUMBYTES  (1024) *  1*300   // x KByte
, U$ Q2 M8 f5 o! yU32 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

* P# _+ q$ _- Y: J1 y0 J
1 a( D% b! H# m3 }6 H& D! o8 D! u, e) R: R5 p" r  _

STM32F429IGTX_FLASH.rar

下载

2.27 KB, 下载次数: 6

challenge 回答时间:2020-12-2 16:39:58
likang1202 发表于 2020-11-27 09:48* K3 e0 Q0 c/ m/ ~$ n1 L$ o  |& s
我是这样写的首先LD文件在MEMORY里面添加
% E( [# X. x9 I+ N1 m  E GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = ...
1 o! q, E- X% C1 @
还是不行,依然会生成一个很大的bin文件
. J0 y+ n, ~* R) e& [
李康1202 回答时间:2020-12-3 09:45:35
bin文件大小应该会有3个G,没办法,最好生成hex文件;我理解的bin文件生成是这样的。bin文件的烧写地址是人为设定的,所以从0X08000000到0xC0000000这些地址全被填充数据了,所以说会有这么大的bin文件
challenge 回答时间:2020-12-5 19:54:39
likang1202 发表于 2020-12-3 09:45
% `: Y; W; h' Q. tbin文件大小应该会有3个G,没办法,最好生成hex文件;我理解的bin文件生成是这样的。bin文件的烧写地址是人 ...
* l; U5 x1 ?6 S
要做在线升级
Dandjinh 回答时间:2020-12-5 21:22:56
  1. SECTION: (NOLOAD)
      T( ^5 J1 C& A5 {
  2. {
    " N3 ?1 [# P" G! t* h5 @  G
  3.   .a1
    ) f: R; e& ?( U/ r3 {5 ~
  4.   ...8 X8 p0 i3 E5 R+ j# @
  5. } > SDRAM
复制代码
  R1 \5 S' h4 `
这样就可以不在bin文件中加入LMA了。
: T7 j$ s# v8 {8 C注意,第一次编译先不加NOLOAD,编译过了再加
Kevin_G 回答时间:2020-12-13 09:55:35
资料很好

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版