接上一篇,浮点数超出界限的问题解决后,再次编译顺利编译通过,且顺利生成二进制代码,但在将代码烧录到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。

MATLAB 代码自动生成(二)program will not fit into available memory.run placement with alignment/blocking....
最新推荐文章于 2025-04-03 20:50:00 发布
在MATLAB代码自动生成过程中,遇到在F28335 DSP上程序内存不足的问题。通过调整.ebss段大小解决编译错误,但过度增大导致硬件资源超限,使DSP无法正常运行。分析.map文件发现内存占用过大,解决方案包括算法优化或增加外部RAM。

1万+

被折叠的 条评论
为什么被折叠?



