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

CubeIDE下分散加载如何实现

[复制链接]
challenge 发布时间:2020-11-26 11:38
FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:
  1.    .malloc :. s) N6 w4 \3 u  y$ B' p
  2.   {
    & _, J& f. G* _9 S! B
  3.     . = ALIGN(4);
    + I; @; z; l- {  }& l
  4.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram start */
    3 q3 H, Z. u- k" M) I
  5.     *(.malloc)( ~3 I. {; f, Z4 x
  6.     *(.malloc*)0 x& c3 ?* f8 G3 k3 d* Q0 ^
  7.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram end */
    / J5 I# {+ q7 y, I3 S. B9 E/ v
  8.     . = ALIGN(4);- s. c- r3 x4 j, q- ^
  9.    
    0 i  P/ X5 F2 G) }- W) b& e
  10.   } >MALLOC
复制代码
  1. MEMORY
    , U) G. H, ?" ]6 u
  2. {( H, I1 s/ K! Y, g! E
  3.   DTCMRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K
    " N1 h$ ~, ]: u4 B9 O  @3 N
  4.   ITCMRAM    (xrw)    : ORIGIN = 0x00000000,   LENGTH = 64K
    ! s) o# ]9 J! \) u5 X( @) v; o
  5.   RAM_D1    (xrw)    : ORIGIN = 0x24000000,   LENGTH = 512K- K' Y  C' x4 t3 q
  6.   RAM_D2    (xrw)    : ORIGIN = 0x30000000,   LENGTH = 288K* q9 Y) J+ M, b7 c1 h* g
  7.   RAM_D3    (xrw)    : ORIGIN = 0x38000000,   LENGTH = 64K: t4 ~) ]+ V; D" [( b" `
  8.   FLASH    (rx)      : ORIGIN = 0x8000000,   LENGTH = 128K
    ) T4 g- G' T: m( H
  9.   MALLOC   (xrw)     : ORIGIN = 0xc0000000,   LENGTH = 64M! x% `1 {" A1 Q( ~0 [5 k
  10. }
复制代码
但是在程序中定义全局变量如下:
  1. 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
收藏 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
# D! u+ o; k3 w2 G0 S0 y3 C( q这里是QSPI的加载过程,详细教程https://www.bilibili.com/video/B ... 8107792149691256998,如果用SPI总线 ...

+ d7 @0 V& [% g+ E非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
李康1202 回答时间:2020-11-27 09:48:29
我是这样写的首先LD文件在MEMORY里面添加
9 D6 r3 g" f+ G3 I; F$ @ GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = 8192K
% T# H) D2 L: ]/ ?5 G0 } 然后在最后一个大括号前添加  ' K# M5 \# o& x/ u
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section 7 i( p# c9 l" M+ Z
在使用时定义长度、申请数组
( C/ i2 f$ i" l* v. v/ o8 a/ v" x#define GUI_NUMBYTES  (1024) *  1*300   // x KByte
3 X1 P/ @) w" r6 v5 [U32 aMemory[GUI_NUMBYTES / 4]  __attribute__((__section__(".GUI_NUMBYTES_section")));
# Z! X1 o5 g( T下面是.ld文件
! l! K5 p2 _6 e- g$ k! b" h* _0 F) B+ @
# K5 g* e, r% }0 }/ M6 N" y: a

6 v3 ^$ B/ p7 O2 O" D4 o& b; o

STM32F429IGTX_FLASH.rar

下载

2.27 KB, 下载次数: 6

challenge 回答时间:2020-12-2 16:39:58
likang1202 发表于 2020-11-27 09:48
* T1 Q& k6 y  m% t* d4 F8 A我是这样写的首先LD文件在MEMORY里面添加 ( G; M7 \) I4 s$ \; x7 y! _5 b
GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = ...

( j. ?7 b9 V0 p$ |还是不行,依然会生成一个很大的bin文件
! N( X( Y2 A, w: }; V) z! u$ G6 h" N% d
李康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$ Q( p* W$ i6 j& l2 h$ y% f
bin文件大小应该会有3个G,没办法,最好生成hex文件;我理解的bin文件生成是这样的。bin文件的烧写地址是人 ...

" S$ P5 k+ I6 e* I! T要做在线升级
Dandjinh 回答时间:2020-12-5 21:22:56
  1. SECTION: (NOLOAD)
    & d7 G# R! m- y9 \6 L
  2. {4 R1 s! y4 s! V$ q1 K
  3.   .a1" ^4 P4 r; f6 O$ J4 ~& e+ w* R& W
  4.   ...
    ' i2 P  O& n6 L2 K( t" h. ~
  5. } > SDRAM
复制代码

- l  O0 f" e+ M这样就可以不在bin文件中加入LMA了。
; E. @. h' {6 f8 F7 Y; Z( F" v注意,第一次编译先不加NOLOAD,编译过了再加
Kevin_G 回答时间:2020-12-13 09:55:35
资料很好

所属标签

相似分享

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