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