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.

[参考译文] MSP430FR5994:(ULP 5.2)检测到浮点操作。 建议在运行期间或不使用时将它们移动到 RAM 中,因为这些是处理/功耗密集型的

Guru**** 679710 points
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/microcontrollers/msp-low-power-microcontrollers-group/msp430/f/msp-low-power-microcontroller-forum/1070198/msp430fr5994-ulp-5-2-detected-floating-point-operation-s-recommend-moving-them-to-ram-during-run-time-or-not-using-as-these-are-processing-power-intensive

部件号:MSP430FR5994

我正在使用两个函数实现来计算神经网络的 Mel 频率系数。 我的代码正在完全执行,没有任何问题。 但是,在使用“能量追踪”技术估计所需的平均能量后,我发现所需的时间大多是计算这些系数,因为它们使用浮点运算。 编译器发出的警告是标题中提到的 ULP 5.2。 虽然我发现了一些类似的警告问题,但我没有找到一个解决运行时将操作移至 RAM 的可能解决方案或方法的答案。 我不能改变或放弃浮点,因为浮点是计算正确性的组成部分。 我如何针对 MSP 发布的建议/警告实施解决方案。 我尝试对链接器文件进行一些更改,即在 FRAM 上移动我的变量和 pragma 声明,并在文件的以下部分中将“.run”指定为“FRAM2”:

#ifdef __TI_Compiler_version__
#if __TI_Compiler_version__>=15009000
#ifndef __lar_code_model__
.TI.ramfunc:{} load=FRAM, run=FRAM2, table(BINIT)
#else
.TI.ramfunc:{} load=FRAM | FRAM2,run=FRAM2,表(BINIT)
#endif
#endif
#endif

但是,我仍然不能确定在 MSP430中使用浮点运算时,可以在何处以及在哪些方面对代码进行精确更改以提高功耗。 如果需要其他信息,请告诉我。 谢谢你。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好,

    IQMath 可以加速计算并优化消耗。

    www.ti.com/.../MSP-IQMATHLIB

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    IQ 数学意味着将我的值转换为一个固定点表示,我想避免这种情况-我特别想检查是否可以对警告执行任何操作-建议在运行时移动到 RAM

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    你(们)好

    您可以通过修改.cmd 文件将该功能置于 RAM 中

    您可以参考以下示例:

    //如下定义您的功能:

    普拉格玛(#code_section(yam_function,“.ramfunc”))

    使您的函数作废(作废)

    }

    //在 cmd 文件中添加语句  

    章节

    .ramfunc:{} load=FRAM, run=RAM// ,这意味着将函数从 FRAM 加载到 RAM 并在 RAM 中运行,

     

    ………

    }

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    查看设备数据表,其优势取决于 FRAM 缓存命中率。 对于典型的命中率(高速缓存行为4个字,因此顺序代码为75%),从 RAM 执行大约需要一半的功率。 这可能不值得努力。

    浮点库占用了大量空间,因此不会有太多设备能够容纳它。 无论如何,告诉链接程序将库代码放入 RAM 最多可能会比较棘手。 因此,您希望仅选择最常用的代码部分。

    许多低功耗应用所使用的能量取决于占空比。 如果99%的时间都处于低功耗模式,则活动模式电流无关紧要。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    感谢大卫的详细回答,这真的很有帮助——我不知道通过移动这些函数会有多少不同,但我认为我现在可以更好地决定我可以采取哪些步骤来优化代码。