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

28075, 同样从C程序放到CLA编译出来要比原来大几倍?

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

10#:

原来的程序是浮点还是定点?请注意CLA仅支持浮点操作。

建议提供对应的.cmd文件和生成的.map文件出来检查,“大几倍”这样的问题描述太笼统。

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

jack liu10:

回复 10#:

  origin      length       input sections

CLA:

000a8000    0000196e     HTX31_INV.lib : InvCtrCla.obj (Cla1Prog:_INVCTR_RealTimeDone)

 CPU:

00082f07    000008b0     HTX31_INV.lib : InvCtr.obj (ramfuncs)

原来的程序是定点;使用类似于这样的计算方式:Aq12 = Bq12 *Cq12>>12;

目前我程序移植过来还没有进行数据类型重新定义,A,B,C仍然定义为int16;

CLA仅支持浮点?这具体是什么意思,所有数据都必须定义为浮点类型吗,没看到哪里有说明啊?

 

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

10#:

回复 jack liu10:

CLA仅支持浮点,这是在手册里有详细说明的,当你定义int16时,你查看汇编代码就会发现,全部会由编译器转换成浮点进行运算,然后再转换成int16格式给你查看,因此这样会多了很多开销,建议更改成浮点后对比代码量的区别。

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

jack liu10:

回复 10#:

谢谢解答,我再摸索一下

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

jack liu10:

回复 10#:

谢谢!很多外设寄存器定义是int型数据,比如ADC结果,要如何在CLA中使用比较高效呢?有没有C语言的示例代码?

28075, 同样从C程序放到CLA编译出来要比原来大几倍?请问正常吗?这个好像有点离谱啊,CLA RAM程序空间太小,都放不下。

10#:

回复 jack liu10:

寄存器的定义不需要考虑这点,编译器会帮你处理,只需要直接操作即可。

对于ADC结果寄存器,你可以采用类似下面的操作方法:rslt = (float)AdcRegs.ADCRESULT0;

编译器会自动调用CLA的类型转换指令将整型数转换成浮点数进行处理。

C语言的代码示例可以在ControlSUITE里找到:C:\ti\controlSUITE\device_support\F2807x\v190\F2807x_examples_Cpu1

赞(0)
未经允许不得转载:TI中文支持网 » 28075, 同样从C程序放到CLA编译出来要比原来大几倍?
分享到: 更多 (0)