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

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扩展软件包
关注我们
st-img 微信公众号
st-img 手机版