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

CubeIDE下分散加载如何实现

[复制链接]
challenge 发布时间:2020-11-26 11:38
FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:
  1.    .malloc :' W8 w3 @5 N1 j; [5 L/ @
  2.   {7 ?  G3 M% Q5 `2 H/ k
  3.     . = ALIGN(4);
    7 W6 L' D" @" \' N* }; V. J
  4.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram start */# J" z9 |" e* a' G; S5 z9 m
  5.     *(.malloc)- n9 y/ g1 t- H1 @2 s1 r" F1 k, K5 v
  6.     *(.malloc*)
    , U3 U& M  ?4 O( q+ J/ A6 n
  7.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram end */
    0 w  `9 {% T4 |/ `; R
  8.     . = ALIGN(4);$ n5 f: Y1 W" I* s' t
  9.    
    1 r/ Q7 P+ @: m: N) D# f5 t
  10.   } >MALLOC
复制代码
  1. MEMORY
    $ C4 L. I* w$ u1 o1 {8 c" m
  2. {8 y1 J. G& j8 F' T" @0 x) T, S
  3.   DTCMRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K
    * z) E9 r2 |! l9 ?, e/ r
  4.   ITCMRAM    (xrw)    : ORIGIN = 0x00000000,   LENGTH = 64K6 p! C, S: e4 J/ N
  5.   RAM_D1    (xrw)    : ORIGIN = 0x24000000,   LENGTH = 512K
      Y' f# d# [% Y/ U0 B
  6.   RAM_D2    (xrw)    : ORIGIN = 0x30000000,   LENGTH = 288K$ ~! c% X! t5 T  A9 w
  7.   RAM_D3    (xrw)    : ORIGIN = 0x38000000,   LENGTH = 64K. M& E0 _" a( q/ u& i/ D7 N* X
  8.   FLASH    (rx)      : ORIGIN = 0x8000000,   LENGTH = 128K( S0 J9 y6 U* ^+ `- @- G
  9.   MALLOC   (xrw)     : ORIGIN = 0xc0000000,   LENGTH = 64M, d! n7 I% D( c! Q- X' v1 |
  10. }
复制代码
但是在程序中定义全局变量如下:
  1. uint16_t testsram[25000]  __attribute((section(".malloc")));
复制代码
此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。' D7 c; ^% x& y$ z
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?0 x/ Q& h8 ^9 E% \8 R3 H- K
收藏 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:096 n! ^. t7 x5 B! O6 a
这里是QSPI的加载过程,详细教程https://www.bilibili.com/video/B ... 8107792149691256998,如果用SPI总线 ...

- v$ e3 |: G3 P4 ]. ?& P非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
李康1202 回答时间:2020-11-27 09:48:29
我是这样写的首先LD文件在MEMORY里面添加
5 \8 U4 C1 c1 C* p GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = 8192K 3 p% M2 e( a& l! a2 l" f; M
然后在最后一个大括号前添加  * N7 Z: V6 V6 Z% Z% V
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section
- R$ R/ _  ^$ O' ^# v 在使用时定义长度、申请数组+ ]* W+ q; C, s) G/ ^
#define GUI_NUMBYTES  (1024) *  1*300   // x KByte, P6 U4 A, w5 i3 P9 S8 m( P
U32 aMemory[GUI_NUMBYTES / 4]  __attribute__((__section__(".GUI_NUMBYTES_section")));+ J3 w( [! W  v7 Y0 G4 X
下面是.ld文件
3 W; u0 r8 `) ]( m1 x  {
6 O# H  {1 p( Y- n, D$ f2 Z. q4 w  @: C& s+ f; a
0 f* R( m5 ^! X

STM32F429IGTX_FLASH.rar

下载

2.27 KB, 下载次数: 6

challenge 回答时间:2020-12-2 16:39:58
likang1202 发表于 2020-11-27 09:48- I8 b; ]/ ~: L6 L: E7 e
我是这样写的首先LD文件在MEMORY里面添加   k. b- C9 t1 o/ |4 r9 z: }! W
GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = ...

. P% r  H5 |$ J7 |/ c8 J+ s; @还是不行,依然会生成一个很大的bin文件: S0 x8 O% |6 D! g2 I* R7 [1 q
李康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
! X5 ~! Z$ V8 C/ ?9 W) C5 Lbin文件大小应该会有3个G,没办法,最好生成hex文件;我理解的bin文件生成是这样的。bin文件的烧写地址是人 ...

; I8 t- e1 r0 w( Q1 D, ]要做在线升级
Dandjinh 回答时间:2020-12-5 21:22:56
  1. SECTION: (NOLOAD)1 @( ^. x4 o4 y- `$ [* m, {  Z2 ?
  2. {6 F; B9 f5 H/ l/ u/ [/ @# H
  3.   .a1
    % [: u9 s! W  }
  4.   ...
    ; O0 V) a7 A6 j7 c$ [6 L
  5. } > SDRAM
复制代码

3 V& ]. S2 ?8 V6 c: y- I4 ^0 I这样就可以不在bin文件中加入LMA了。
: b0 E3 v- `4 t注意,第一次编译先不加NOLOAD,编译过了再加
Kevin_G 回答时间:2020-12-13 09:55:35
资料很好

所属标签

相似分享

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