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.
大家好、
我在我的程序中执行 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秒。
这是很长的时间。 我怀疑是由于打印了所有错误消息。
如果这解决了您的问题、请单击绿色的"已验证答案"按钮。 谢谢!
[引用 user="Jeremy Bargas"]->问题是编译器似乎不会自动定义__TMS320C28XX_CLA__,即使我的文件中有.cla 也是如此。
它不依赖于文件的存在。 它取决于宏所在的文件。 宏具有文件范围、而不是项目范围。
请参阅 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
您好、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__宏具有文件范围。
此致
Lori