在进行屏幕驱动移植时,源码中有一段这样的代码
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在将数组初始化到指定内存地址的差异时,发现果然不一样。
标签:__,中要,Keil,lcd,AC6,数组,ltdc,加载 From: https://www.cnblogs.com/sanmian/p/18044727在此感谢这篇博客:AC6使用 attribute((at(x)))需要改用...
按照这位老哥的博客进行了修改就解决了这个问题。