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.

[参考译文] TMS320F28386D:超出分配的 RAM

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1602479/tms320f28386d-exceed-the-allocated-ram

部件号: TMS320F28386D

您好专家、

此应用使用 TMS320F28386

我尝试在 CLA 中运行需要 long double(64 位浮点数)的过滤器算法。  运行此方法的宏如下所示:

#define RunFilter( Filter, InputData )                                                          \

Filter.Uz   = InputData;                                                                                        \
Filter.Yz  =                              ( (Filter.Uz + Filter.Uz2) * Filter.A0A2  )    \
                                              +   ( (Filter.Uz1 - Filter.Yz1) * Filter.A1B1 )    \
                                              +   (Filter.Yz2 * Filter.B2);                                      \
Filter.Uz2  = Filter.Uz1;                                                                                        \
Filter.Uz1  = Filter.Uz;                                                                                           \
Filter.Yz2  = Filter.Yz1;                                                                                         \
Filter.Yz1  = Filter.Yz;                                                                                            \
Filter.Out  = Filter.Yz

上述所有元素均为 64 位 long double

当我将过滤器包含在 CLA ISR 中时、所需的 CLA 程序 RAM 会显著增加、以至于我超过分配的 RAM。  如果我删除了其他函数并增加了分配的 CLA 程序 RAM(为了进行测试)、可以使程序放入 RAM 中、但执行需要太长时间并会使 ISR 溢出。

是否有办法在 CLA 中解决这一问题、或者 CLA 只是不使用 64 位 long double 运行?

谢谢您、

Andy Barnett

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

    您好、

    请注意,由于假日季,回复可能会有一些延迟。  

    此致、
    Aishwarya

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    是否有办法在 CLA 中解决这一问题、或者 CLA 是否只是不使用 64 位长双精度值运行?

    Renan、  

    CLA 没有启用 64 位数据类型的指令。 任何 64 位浮点用法都必须依赖软件(而不是特定指令)来执行运算。 即使启用了编译器的优化、这也会增加代码大小并降低性能很多。  

    遗憾的是、CLA 无法解决这一问题。  

    Lori