TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS320F280039C: 在CLA调用fabs函数,会报CLA RAM空间不足

Part Number:TMS320F280039C

您好,我在CLA里增加代码的时候遇到了一个问题。

         比如当前的CLA的RAM空间还有71%,然后我加入一段含有fabs函数的代码,编译就会报CLA RAM空间不足,如果去掉fabs这个函数,编译就可以通过,请问这个是什么原因,在CLA调用fabs会占用很大空间吗?

加入fabs函数之前,CAL RAM空间仅用了71%,

    

在CLA调用fabs函数之后,编译会报CLA RAM空间不足的故障:

Yale Li:

您好,您给CLA1 program分配了哪些内存空间?

可以给它增加一些内存分配试试看。

您有参考哪个例程吗?我没有在CLA的相关文档中找到关于函数fabs的描述。方便的话请告知一下。

,

Liu Jun:

您好!

      谢谢你的回复。

       我是自己编写的程序,CMD文件分配的空间是Cla1Prog  : origin = 0x008000, length = 0x002000;

       我发现在CLA里面,如果写了fabs(A*B*C)这样的语句,就会编译不过去,但是如果加入一个中间变量,改写为D = A*B*C, fabs(D),这样子就可以编译过去了,空间也没增加多少。

       我不大清楚为什么在CLA里面,按照fabs(A*B*C)这样子写会报空间不足?

,

Yale Li:

再问一下您的A、B、C定义的是什么类型的数据?

,

Liu Jun:

浮点数,类似0.707这种

,

Yale Li:

可否告知一下具体是什么类型?

,

Liu Jun:

抱歉,国庆节没看问题,定义的都是float 类型的变量

,

Yale Li:

我的推测是这可能与类型转换有关。

Liu Jun 说:fabs(A*B*C)

直接使用类似的写法,可能直接会传一个64位的数据给该函数,而CLA最高只支持32位的数据。所以会报程序与内存不兼容。您帖上来的报错不完整,后面的内容我无法知晓,但感觉并不是程序大小的问题。

Liu Jun 说:D = A*B*C, fabs(D)

而您使用类似写法,加入一个中间变量时,D会被编译器强制优化为32位的数据

,

Liu Jun:

谢谢你的回复,我把编译不过时的结果复制下来了,请帮忙看一下,谢谢!

<Linking>"../cmd/28003x_cla_flash_lnk.cmd", line 85: error #10099-D: program will not fit into available memory, or the section contains a call site that requires a trampoline that can't be generated for this section. run placement with alignment/blocking fails for section "Cla1Prog" size 0x23de page 0. Available memory ranges: Cla1Prog size: 0x2000 unused: 0x2000 max hole: 0x2000 error #10010: errors encountered during linking; "3-6KW_280039_V0.10.33.out" not built >> Compilation failuremakefile:208: recipe for target '3-6KW_280039_V0.10.33.out' failedgmake[1]: *** [3-6KW_280039_V0.10.33.out] Error 1gmake[1]: Target 'secondary-outputs' not remade because of errors.makefile:204: recipe for target 'all' failedgmake: *** [all] Error 2

**** Build Finished ****

,

Yale Li:

看来确实是内存不足。

至于为什么不使用中间变量会导致内存占用的增加,我得询问一下资深工程师。

,

Liu Jun:

好的,谢谢!

,

Liu Jun:

好的,谢谢!

,

Yale Li:

没事,有了结果我会第一时间回复

,

Yale Li:

您能分享一下生成的汇编代码吗?

,

Liu Jun:

hi,我刚刚尝试了一下进入Debug页面的Disassemby窗口,但是CLA里面没法设置断点,也不能用Run to line定位,所以我没办法找到对应CLA代码的的汇编代码

,

Yale Li:

看一下这篇文档的83:https://www.ti.com.cn/cn/lit/ug/zhcu101/zhcu101.pdf

赞(0)
未经允许不得转载:TI中文支持网 » TMS320F280039C: 在CLA调用fabs函数,会报CLA RAM空间不足
分享到: 更多 (0)