cubeide定义数组导致will not fit in region报错的解决

前些时间在移植正点原子的rgblcd驱动使,发现了cubeide的一点小问题

 按照keil中将变量定义到指定数组,结果产生如下报错

 这里话不多说,直接放上找到的解决方案

cubeide将变量定义到指定地址

关于此类问题的文章找到的比较少,请教后有人提出使用cubemx在cubeide中生成keil工程的想法,博主没有尝试。由于放上的文章已经很详细,这里只再做一点简单说明,方便和博主一样的小白理解

我们打开工程目录最下面FLASH文件,在MEMORY中添加自己定义的数组,注意长度要足够,名称要和main中一致

并在section中添加代码

/* Specify the memory areas */
MEMORY
{
  
  FLASH (rx)     : ORIGIN = 0x08000000, LENGTH = 2048K
  DTCMRAM (xrw)  : ORIGIN = 0x20000000, LENGTH = 128K
  RAM_D1 (xrw)   : ORIGIN = 0x24000000, LENGTH = 512K
  RAM_D2 (xrw)   : ORIGIN = 0x30000000, LENGTH = 288K
  RAM_D3 (xrw)   : ORIGIN = 0x38000000, LENGTH = 64K
  ITCMRAM (xrw)  : ORIGIN = 0x00000000, LENGTH = 64K
  LCD_FRAME_BUF_Addr (xrw) : ORIGIN = 0xC0000000, LENGTH = 2048K
}

/* Define output sections */
/* Define output sections */
SECTIONS
{
  /* The startup code goes first into FLASH */
...
...
.LCD_FRAME_BUF (NOLOAD):	
	 {
	   . = ALIGN(4);
	   *(.LCD_FRAME_BUF)	
	   . = ALIGN(4);
	 } >LCD_FRAME_BUF_Addr
  /* used by the startup to initialize data */
...
//在sections中定义自己的数组,注意添加noload属性,就是告诉说,我受不了这么大的东西,干脆不用给我放进去
}

这时我们再编译,报错“xxx.elf section  '.bss' will not fit in region就消失了

感兴趣的读者可以学习gcc编译器的.ld文件,会对这方面有更好的理解

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值