This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TI的例程 cla_sqrt F2837xS examples V200

Other Parts Discussed in Thread: CONTROLSUITE

cla_sqrt例程中,CLA的task1任务内容如下:

//**********************sqrt.cla********************

__interrupt void Cla1Task1 ( void )
{
fResult = __sqrt(fVal);
}

--------------------------------------------------------------------------------

__sqrt是从哪里来的????

没有文献说明CLA支持__sqrt函数啊?该例程中也没有和sqrt相关的ASM和C代码

---------------------------------------

CLA仅支持如下函数:

CLA don't support C standard library.

abs() and fabs() are supported as intrinsics. An inline fast floating-point divide is supported.

The following intrinsics are supported:

  • float __meisqrtf32(float)
  • float __meinvf32(float)
  • float __mminf32(float, float)
  • float __mmaxf32(float, float)
  • void __mswapf(float, float)
  • short __mf32toi16r(float)
  • unsigned short __mf32toui16r(float)
  • float __mfracf32(float)
  • __mdebugstop()
  • __meallow()
  • __medis()
  • __msetflg(unsigned short, unsigned short)
  • __mnop()

  • 从反汇编看,是编译成了标准的CLA库

    _Cla1Task1:
    .dwpsn file "C:/controlSUITE/device_support/F2837xS/v200/F2837xS_examples_Cpu1/cla_sqrt/cpu01/sqrt.cla",line 38,column 5,is_stmt,isa 0
    MMOV32 MR2,@_fVal ; [CPU_] |38|
    MEISQRTF32 MR1,MR2 ; [CPU_] |38|
    MMPYF32 MR3,MR2,#16128 ; [CPU_] |38|
    MCMPF32 MR2,#0.0 ; [CPU_] |38|
    MMOV32 MR1,MR2,EQ ; [CPU_] |38|
    MMPYF32 MR0,MR1,MR3 ; [CPU_] |38|
    MMPYF32 MR0,MR1,MR0 ; [CPU_] |38|
    MSUBF32 MR0,#16320,MR0 ; [CPU_] |38|
    MMPYF32 MR1,MR1,MR0 ; [CPU_] |38|
    MMPYF32 MR0,MR1,MR3 ; [CPU_] |38|
    MMPYF32 MR0,MR1,MR0 ; [CPU_] |38|
    MSUBF32 MR0,#16320,MR0 ; [CPU_] |38|
    MMPYF32 MR1,MR1,MR0 ; [CPU_] |38|
    MMPYF32 MR0,MR1,MR2 ; [CPU_] |38|
    MMOV32 @_fResult,MR0 ; [CPU_] |38|

  • 这里成应该是有点问题。

    汇编显示没有问题,

    CLA文件应该使用__MEISQRTF32() intrinsics