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