MATLAB 代码自动生成(二)program will not fit into available memory.run placement with alignment/blocking....

接上一篇,浮点数超出界限的问题解决后,再次编译顺利编译通过,且顺利生成二进制代码,但在将代码烧录到F28335的过程中,提示"program will not fit into available memory.run placement with alignment/blocking fails …"
经过查看c28335.cmd是.ebss出了问题,.ebss是DSP用来存放全局变量和静态变量的地方,位于RAM中,从cmd文件中可以看到是使用的PAGE 1 上的一段名为RAML4L7的内存,起始地址是0xc000,长度为7000,既然不够那就增大吧,依次增大,不断编译看效果,当length修改为0x200000时才编译成功(程序有点大。。)
在这里插入图片描述
此时编译成功,且烧录DSP的过程中也没什么问题,但是烧录成功后DSP毫无反应。
初步怀疑是不是改大了.ebss的内存侵占了属于别的内存的地方,但是查看后没有内存互相侵占的地方,于是查看F28335手册,发现28335RAM有32KB大小,而改成的0x200000显然已超过了这一大小,所以编写虽然顺利通过,但是硬件资源根本不够,而RAML4L7这段内存也仅16KB大小。
在这里插入图片描述
查看修改过.ebss区域大小的程序的.map文件,可以看到RAML4L7使用了0x1d950e大小的内存,接近2M!所以想要解决这个问题要么精简算法,看能够以更小的内存运行,要么就外扩RAM。
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值