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

CubeIDE下分散加载如何实现

[复制链接]
vainest 发布时间:2020-11-26 11:38
FAE工程师您好,我在使用STM32H750XB搭载了SDRAM存储器。在CubeIDE中如何定义一个数组指定到SDRAM中,我在.ld文件中定义了方法section(".malloc"),如下:
  1.    .malloc :
  2.   {
  3.     . = ALIGN(4);
  4.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram start */
  5.     *(.malloc)
  6.     *(.malloc*)
  7.     __MALLOC_SYMBOLS = .;       /* create a global symbol at ccmram end */
  8.     . = ALIGN(4);
  9.    
  10.   } >MALLOC
复制代码
  1. MEMORY
  2. {
  3.   DTCMRAM    (xrw)    : ORIGIN = 0x20000000,   LENGTH = 128K
  4.   ITCMRAM    (xrw)    : ORIGIN = 0x00000000,   LENGTH = 64K
  5.   RAM_D1    (xrw)    : ORIGIN = 0x24000000,   LENGTH = 512K
  6.   RAM_D2    (xrw)    : ORIGIN = 0x30000000,   LENGTH = 288K
  7.   RAM_D3    (xrw)    : ORIGIN = 0x38000000,   LENGTH = 64K
  8.   FLASH    (rx)      : ORIGIN = 0x8000000,   LENGTH = 128K
  9.   MALLOC   (xrw)     : ORIGIN = 0xc0000000,   LENGTH = 64M
  10. }
复制代码
但是在程序中定义全局变量如下:
  1. uint16_t testsram[25000]  __attribute((section(".malloc")));
复制代码
此时程序编译不会报错,但是会产生一个很大的bin文件,像是把数组写到了bin文件中,这是不行的,请问如何实现将指定数组定义在SDRAM中呢。
再者,如何编辑.ld文件实现分散加载,将程序下载到外部FLASH W25Q64当中呢,谢谢?
收藏 评论5 发布时间:2020-11-26 11:38

举报

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

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

下载

696.61 KB, 下载次数: 10

External_Loader-main.zip

下载

30.46 KB, 下载次数: 4

yzz163 回答时间:2020-11-26 14:12:32
不错的资料。谢谢。
likang1202 回答时间:2020-11-26 14:27:44
至于生成的文件你可以生成HEX文件,将生成BIN文件的命令勾选掉,
vainest 回答时间:2020-11-26 16:49:47
likang1202 发表于 2020-11-26 14:09
这里是QSPI的加载过程,详细教程https://www.bilibili.com/video/B ... 8107792149691256998,如果用SPI总线 ...

非常感谢您,那么怎么样实现CubeIDE中定义变量指定在SDRAM中呢?
likang1202 回答时间:2020-11-27 09:48:29
我是这样写的首先LD文件在MEMORY里面添加
GUI_NUMBYTES_section (xrw)  : ORIGIN = 0xc0600000, LENGTH = 8192K
然后在最后一个大括号前添加  
.GUI_NUMBYTES_section : { *(.GUI_NUMBYTES_section) } >GUI_NUMBYTES_section
在使用时定义长度、申请数组
#define GUI_NUMBYTES  (1024) *  1*300   // x KByte
U32 aMemory[GUI_NUMBYTES / 4]  __attribute__((__section__(".GUI_NUMBYTES_section")));
下面是.ld文件



STM32F429IGTX_FLASH.rar

下载

2.27 KB, 下载次数: 1

所属标签

STM32团队

意法半导体微控制器和微处理器拥有广泛的产品线,包含低成本的8位单片机和基于ARM® Cortex®-M0、M0+、M3、M4、M33、M7及A7内核并具备丰富外设选择的32位微控制器及微处理器


最新内容

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号二维码 微信公众号
手机版二维码 手机版