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.

[参考译文] 编译器/TMS320F28075:如何在 CPU 和 CLA 之间共享数据

Guru**** 2535150 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/566214/compiler-tms320f28075-how-to-share-data-between-cpu-and-cla

器件型号:TMS320F28075

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

我们知道 CPU 和 CLA 之间的数据类型'int'是不同的、这会导致我的程序中出现一些问题:

就像我在 CLA 源文件中定义了一个'int'变量、并在相应的头文件中声明了它、并希望它与 CPU 共享、而 CPU 将以不同的方式看到这个'int'变量。

此外、如果要在 CLA 程序中访问诸如 ePWM 的外设、通常应该包含'F2807x_device.h'、但是这些头文件中的变量 由 CPU 类型而不是 CLA 类型声明、 这也可能导致错误、即使我这么做、编译器也告诉我:

说明资源路径位置类型
#452 "long long"类型是非标准 F2807x_device.h /GenericDrive_CLA/HAL/Driver/F2807x_headers/include 行132 C/C++ problem
#452 "long long"类型是非标准 F2807x_device.h /GenericDrive_CLA/HAL/驱动程序/F2807x_headers/include 行135 C/C++问题
#838无法识别的 cregister 名称'IER F2807x_device.h /GenericDrive_CLA/HAL/驱动程序/F2807x_headers/include 行32 C/C++问题
#838无法识别的 cregister 名称'IFR' F2807x_device.h /GenericDrive_CLA/HAL/驱动程序/F2807x_headers/include 行31 C/C++问题

有什么方法可以解决这个问题? 感谢您的任何评论!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    通过在"F2807x_device.h"之前添加'F2807x_cla_typedefs.h'、问题似乎得到了解决、如下所示:

    #include "F2807x_CLA_typedefs.h"
    #include "F2807x_device.h"

    但仍然令人困惑的是、编译器如何为 CPU 程序和 CLA 程序识别相同的变量或例程、因为它们实际上被声明为不同类型。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好!

    Cla_typedefs.h 头文件根据 C28x 或 CLA 编译器正在编译当前模块、明确定义类型。 对于每个编译器、都有一个特定的宏进入了作用域(C28x 为__TMS320C28XX__、CLA 为__TMS320C28XX_CLA__;我可能得到了错误的语法、您将在头文件中看到我所说的内容)。

    我们使用这些宏为每个内核有条件地 typedef 创建不同类型的代码。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    我想我已经理解了这一点、非常感谢! )