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.

[参考译文] 编译器/TMS320F28377D:C28x 和 CLA 中的表达式地址不同

Guru**** 2611705 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/692230/compiler-tms320f28377d-expression-addresses-are-different-in-c28x-and-cla

器件型号:TMS320F28377D

工具/软件:TI C/C++编译器

您好!

我们将 F28377D 用于逆变器。 CLA。

现在、我们正在处理 CLA 代码、发现一些表达式的值不正确。 更深入地了解、我们发现、C28x 和 CLA 之间表达式的地址不同。

如您所见、gPWMPrd 和 gPWMPrdApply 位于 C28x 的0x8B5F 和0x8b60中。 但在 CLA 汇编语言中、它们是0x8b60和0x8b61。

它是否与采用不同存储器大小的参数类型(int、char 等)相关?

非常感谢。

BR、Jordan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    CCS 为 v8、编译器为 v18.1.1 LTS。
    BR、Jordan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    约旦、您好!

    是的、我相信这是由于数据键入。

    CLA 上的 INT 为32位、而 C28x 上的 INT 为16位。 在 CLA 和 C28x 上、短路和字符为16位。

    尝试使用 stdint.h 数据类型。 例如、uint16_t 或 int16_t

    问题出在类型为 int 的结构成员。 您需要使用 stdint.h 来指定长度、因为 CLA 和 C28x 上的长度不同。 这就是 CLA 寻址不正确的原因。

    请告诉我这是否可行。

    此致、
    SAL