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.

指令执行时间太长!



Unsigned int  a;

float c;

a=1000;

c=a;  该句执行时间28335下,需要62个时钟周期。

c=1.0/a;该句执行时间28335下,需要224个时钟周期。

请问有什么办法能优化下吗?

谢谢!

  • 你使用的是浮点芯片,定义的也是浮点数,所以请确保你是在用浮点单元进行运算。

    是否在编译选项里打开了硬件浮点功能,是否添加了所需要的所有相关浮点加速库?

    请参考 www.ti.com/lit/SPRUEO2 文档1.2.1 Floating-Point Code Development确保完成了所有相关设置。

     

    此外,请确保你的Flash进行了初始化,设定了对应的等待时间。

    如果时间上还是有问题,可以考虑将对应代码copy到RAM上运行。

  • 谢谢!

    现在

    c=a;  该句执行时间28335下,需要只需要3个时钟周期。

    c=1.0/a;该句执行时间28335下,需要236个时钟周期,时间还是很长。

    我的程序是放在RAM里执行的。不是下载到flash里运行的。

    我添加了三个fpu的lib:

    IQmath_fpu32.lib

    rts2800_fpu32_fast_suppliment.lib

    C28x_FPU_Lib.lib

    我添加了这三个lib后,需要添加这三个库文件的.h头文件吗?

    需不需要在ram.CMD文件中更改库文件的配置?

    库文件在我的ram.CMD中的配置,请指正!

         IQmath           : > RAML,      PAGE = 0

       IQmathTables     : > IQTABLES,  PAGE = 0, TYPE = NOLOAD

      IQmathTables2    : > IQTABLES2, PAGE = 0, TYPE = NOLOAD

      FPUmathTables    : > FPUTABLES, PAGE = 0, TYPE = NOLOAD

  • 我有个疑问:您是如何测量有多少个时钟周期的?

    头文件要加上。

    CMD文件改的没有问题。

    建议您在TI浮点的例程中添加您的这几行代码再试试看吧。

  • 我是用run->clock 查看的,我通过比较其他简单程序的时钟,一步一步调试测出时间的。现在除法的时间已经变成20多个时钟周期了。