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.

[参考译文] TMS320F28379D:CLA 实现问题

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/801543/tms320f28379d-cla-implementation-trouble

器件型号:TMS320F28379D
主题中讨论的其他器件:C2000WAREpowerSUITE

大家好、

我在我的程序中执行 CLA 时遇到了问题,情况如下:

->我的项目在具有我需要的所有外设(ADC、PWM、CAN、GPIO、计时器、 中断等)、但我需要提高采样率、巴特沃斯滤波器对于时间计算来说太重... 因此、我想将所有滤波器放在 CLA 上。

->我已经使用 cla2 = on 修改了编译选项、预编译符号'cla_C'、并且我添加了 cla_MyPurpose .c、cla_MyPurpose .cla 和 CLA_MyPurpose.h

->我没有使用"2837xD_FLASH_INK_CPU1.cmd"而是放置"2837xD_FLASH_CLA_INK_CPU1.cmd"

->我使用了一些示例来创建具有空 claTasks、空 claISR 和配置的模板

我的大问题项目构建、第一个"__TMS320C28XX_CLA__"似乎没有由编译器定义(尽管存在.CLA 文件),因此我出现了 stdarg.h 消息错误。 然后、我在某个地方(我不记得在哪里)看到、如果定义了"__TMS320C28XX_CLA_"、则无法包含 can.h =>这是否意味着如果 CLA 被激活、CAN 总线无法运行?

尽管.h 中有原型声明(对于 claTaskX 是可以的)、但对于所有8个 ISR、我也有"cla1IsrX 未定义"。

如果我在预定义符号中添加了"__TMS320C28XX_CLA__",我不会遇到这种问题,但是对于 UintX 未定义类型,我至少有100个错误...

 

我还精确地说、对于没有 CLA 配置的同一项目、编译时间大约为5分钟、而不是30秒。

请帮我、我卡住了。

非常感谢、祝您愉快、

此致、

J é r é my Bargas

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

    LH:编辑-更正了说明- 以启用 C99类型  

    您好、 J é r é my、

    [引用 user="Jeremy Bargas "]我已修改了编译选项 cla2 = on

    我认为这就是你所做的、但为了澄清如果不这样做、选项应该是-cla_support = cla2

    [引用 user="Jeremy Bargas"]我的大问题项目构建、第一个"__TMS320C28XX_CLA_"似乎不是由编译器定义(尽管存在.CLA 文件),因此我遇到 stdarg.h 消息错误。 然后、我在某个地方(我不记得在哪里)看到、如果定义了"__TMS320C28XX_CLA_"、则无法包含 can.h =>这是否意味着如果 CLA 被激活、CAN 总线就无法运行?

    "_TMS320C28XX_CLA_"将仅由 CLA 源代码内的编译器定义。  (例如、在您的情况下、在扩展名为.cla 的文件内)。  请参阅   《TMS320C28x 优化 C/C++编译器用户指南》(http://www.ti.com/lit/spru514)中的"预定义宏名称"部分。

    [引用 user="Jeremy Bargas"]尽管.h 中有原型声明(对于 claTaskX 是可以的)、但对于所有8个 ISR、我也有"cla1IsrX 未定义"。

    这些 ISR 适用于 C28x。  当 CLA 任务完成时、一个中断被发送到 C28x、并且如果被启用、C28x 将接受 ISR。  请参阅示例 C:\ti\c2000\C2000Ware_中的.c 文件 \driverlib\f2837xd\examples\cpu1\cla

    [引用 user="Jeremy Bargac"]对于 UintX 未定义类型,我至少有100个错误...

    建议使用标准 C99类型。  (即 uint16_t、uint32_t 等)。  这些是标准中定义的 文件。

    [引用 user="Jeremy Bargac"]我还精确地指出,没有 CLA 配置的同一项目的编译时间大约为5分钟,而不是30秒。

    这是很长的时间。  我怀疑是由于打印了所有错误消息。  

     

    单击此处了解更多 CLA 常见问题解答和资源。

    如果这解决了您的问题、请单击绿色的"已验证答案"按钮。 谢谢!

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

    ->是的、这是一个短接、我确实有--cla_support = cla2选项。

    ->问题是编译器似乎不会自动定义__TMS320C28XX_CLA__,即使我的文件中有.cla 也是如此。

    ->是的、我知道 CLA ISR、现在我不使用它(它们是空函数)、但这里的乘法器甚至看不到它们的声明。

    ->好的、我将使用 c99标准、但找不到 stdfile.h、我将修复它。 此外、在许多.h TI 文件中、不使用 C99、最好做什么?

    ->确定。

    如需了解相关信息、我使用的是 TI v18.12.2.LTS 编译器、并且我包含了 f28xxx_project.h (其中设置了有关 stdarg.

    我完全卡住了,从哪里开始? 存储器副本(从闪存到 CLA 的 RAM)对于编译是否很重要? 我目前还没有放它、但我认为这不会禁止代码编译。

    如果 CANbus 与 CLA 兼容、您还能告诉我吗?


    非常感谢、祝您愉快。

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

    [引用 user="Jeremy Bargas"]->问题是编译器似乎不会自动定义__TMS320C28XX_CLA__,即使我的文件中有.cla 也是如此。

    它不依赖于文件的存在。  它取决于宏所在的文件。  宏具有文件范围、而不是项目范围。

    • 在.c 文件内、不会定义宏。  c 文件是 C28x C 源代码、因此宏被评估为未定义。
    • 在.cla 文件内、将定义宏。   一个.CLA 文件是 CLA C 源代码、因此宏被评估以被定义。

    请参阅 http://www.ti.com/lit/spru514 预定义宏名称。

    [引用 user="Jeremy Bargas,]->是的,我知道 CLA ISR,但我暂时不使用它(它们是空函数),但这里的乘法器甚至看不到它们的声明。

    如果链接器报告"未解析的符号仍然存在"、则检查.c 源代码是否是项目的一部分。  我经常使用的一个真正的快速检查是向文件中添加一些垃圾文本、并查看编译器是否有问题。  如果没有任何抱怨、则文件不是项目的一部分。

    [引用 user="Jeremy Bargas,}-->好的,我将使用 c99标准,但找不到 stdfile.h,我将修复它。 此外、在许多.h TI 文件中、不使用 C99、最好做什么? [/报价]

    TI 代码已转移到 C99数据类型。  driverlib 代码使用 stdint.h

    <stdint.h> 是需要包含的文件。

    [引用 user="Jeremy Bargas,]我完全无法从哪里开始? 存储器副本(从闪存到 CLA 的 RAM)对于编译是否很重要? 我目前还没有进行过代码编译、但我认为这并不禁止代码编译。

    我建议从常见问题解答中列出的资源开始。  特别是实践技术讲座和示例代码。  


    C28x 必须初始化 CLA 程序 RAM。  否则 CLA 任务将不会执行。   

    [引用 user="Jeremy Bargas "]如果 CANbus 与 CLA 兼容,您还能告诉我吗?

    CLA 能否访问 CAN 总线是一个问题吗?  请参阅此常见问题解答: https://e2e.ti.com/support/microcontrollers/c2000/f/171/t/787665

    此致

    Lori

     

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

    我已经听不到您的意见了大约一周,因此我假设您能够解决您的问题。 如果情况并非如此,请单击“这无法解决我的问题”按钮,并使用更多信息回复此主题。 如果此主题锁定、请单击"提出相关问题"按钮、然后在新主题中描述您的问题的当前状态以及您可能需要帮助我们帮助解决您的问题的任何其他详细信息。

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

    您好、Lori、

    很抱歉、我的回复延迟了、但这不是我在公司的唯一任务。

    我现在将对此进行研究、我认为我的大麻烦是因为我的来源不准确、包括道路。 我正在使用来自 C2000软件、控制套件、powerSUITE 的源、这些源具有不是很干净的冗余。

    首先、我将尝试在没有 CLA 的情况下直接包含必要的文件、然后我将尝试添加 CLA 编译。

    回答 CAN 总线的问题:我不想再让 CAN 访问 CLA 了,但我在 f2837xD_device.h 上的299行看到了这一点:

    //

    // byte_peripheral 属性仅在 C28上受支持

    //

    #ifndef __TMS320C28XX_CLA__

    #if __TI_Compiler_version__>=16006000

    #include "F2837xD_CAN.h"

    #endif

    #endif

    这是否意味着如果启用了 CLA、您无法添加 CAN 源?

    非常感谢、我很快会回来的。

    此致、

    J é r é my

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

    [引用 user="Jeremy Bargas,]我现在将对此进行处理,我认为我的大麻烦是因为我的来源不准确,包括途径。 我使用来自 C2000软件、控制套件、 powerSUITE 的源 、这些源的冗余并不是很干净。[/quot]

    如果有任何内容引起混淆或不一致、请务必告知我、以便我可以跟进并更正。

    [引用用户="Jeremy Bargas "]

    回答 CAN 总线的问题:我不想再让 CAN 访问 CLA 了,但我在 f2837xD_device.h 上的299行看到了这一点:

    //

    // byte_peripheral 属性仅在 C28上受支持

    //

    #ifndef __TMS320C28XX_CLA__

    [/报价]

    正确。  CLA 当前不支持 byte_peripheral 属性。   

    [引用 USER="Jeremy Bargas,]这是否意味着如果启用了 CLA,您不能添加 CAN 源?

    这意味着该文件的内容不适用于 CLA。  正如我提到过的、 _TMS320C28XX_CLA__宏具有文件范围。  

    • 在.CLA (即 CLA 源代码)文件 中、__TMS320C28XX_CLA__将评估为 true
    • 在.c 文件中(即 C28x 源代码)__TMS320C28XX_CLA__将评估为 false

    此致

    Lori

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

    关闭此主题是否正常? 如果您发现有后续问题、您可以单击"提出相关问题"或"提出新问题"。

    此致
    Lori