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

cubeide的代码怎么编译到内部+外部FLASH里面去

[复制链接]
wangzhong 提问时间:2025-2-12 13:29 / 未解决

Hi ST 工程师

我有一个项目,准备使用GUI和AI,准备使用STM32U5,但是编译出来的代码很多,STM32U5的内部FLASH不够用,准备使用OSPI扩展外部FLASH。但是遇到一个问题,我不知道怎么将编译出来的代码链接到内部、外部FLASH。

如果是MDK,可以通过选项来设置,如果代码超过了内置FLASH的大小会自动链接到外部FLASH。但是使用CUBEIDE该怎么设置?

如:

image.png

收藏 评论4 发布时间:2025-2-12 13:29

举报

4个回答
wangzhong 回答时间:2025-2-12 13:33:30

我尝试过修改ld文件,将外部FLASH的区域划出来。但是编译的时候,依然无法将超过的代码放置在外部FLASH里面。

image.png

wangzhong 回答时间:2025-2-12 13:35:08

ST有关于XIP的例子,但是都是通过做一个boot,然后全部跳转到外部flash的方式。如果这样做,就会丢弃掉内部2M的FLASH,我觉得这不是一个完美的解决方案。

xmshao 回答时间:2025-2-13 14:08:01
根据你目前的情况,是想扩展QSPI做代码存储及运行的空间。

你要注意,程序启动后要及时初始化QSPI,通常在启动文件里的sysinit()里完成。


修改链接文件脚本是必不可少的环节。类似下面的做法:


/* 外部 OSPI FLASH 中的主程序 */
  .qspi :
  {
    . = ALIGN(4);
    *(.qspi)
    *(.qspi*)
    . = ALIGN(4);
  } >OSPI


另外,你还得准备基于外部QSPI的下载算法驱动文件。ST公司有基于各类现存开发版和常用存储器件准备了一些下载驱动,在STM32cubeProgrammer里可以看到现存的。如果没有就得自己写了。
wangzhong 回答时间:2025-2-17 11:37:45

xmshao 发表于 2025-2-13 14:08
根据你目前的情况,是想扩展QSPI做代码存储及运行的空间。</p>
<p>你要注意,程序启动后要及时初始化QSPI,通常在 ...

Hi xmshao

我将您说的这据嵌入到ld文件里面了。然后编译后会报错误。

image.png

我参考了H7 emwin的例子,可以将编译出来的文件放到外部FLASH里面运行了。

修改方式是:

.externFlash :

{

. = ALIGN(4);

led.o(.text .text)

. = ALIGN(4);

_eQSPI = .; } >SPI_FLASH

但是每次都手动添加,项目复杂了后,还是不好处理。

所属标签

相似问题

官网相关资源

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