默默前行|

三眠

园龄:2年1个月粉丝:3关注:0

在Keil中要将数组加载到指定的内存中

在进行屏幕驱动移植时,源码中有一段这样的代码

uint16_t ltdc_lcd_framebuf[800][480] __attribute__((at(LCD_FRAME_BUF_ADDR)));

在该工程下编译非常顺利,也不会提示有错误,但是在我自己新建的工程中使用就会出现错误提示,编译也不通过,提示.\Objects\GD32F470.axf: Error: L6406E: No space in execution regions with .ANY selector matching lcd.o(.bss.ltdc_lcd_framebuf0).
刚看到这个网上搜索出来的结果全是说内存不足,但是我尝试增大启动文件中的堆栈空间但是依然没有解决,同时我也比对了Keil中的对烧录的内存空间的地址配置啥的,但是都一样。
这两个工程唯一不同就是编译器的版本不一样了,于是搜索AC5和AC6在将数组初始化到指定内存地址的差异时,发现果然不一样。

在此感谢这篇博客:AC6使用 attribute((at(x)))需要改用...
按照这位老哥的博客进行了修改就解决了这个问题。

本文作者:三眠

本文链接:https://www.cnblogs.com/sanmian/p/18044727

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   三眠  阅读(166)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 零经验选手,Compose 一天开发一款小游戏!
· 因为Apifox不支持离线,我果断选择了Apipost!
· 通过 API 将Deepseek响应流式内容输出到前端
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起