器件型号: TDA4AH-Q1
在为 C7x 编译一些裸机代码期间、5.0.0.LTS 编译器会抛出以下错误:
“内部错误:与 ARGREF 不匹配“。
产生此错误的代码行是:
__vstore_packl_2src (&Vout、vResultLo、vResultHi);
其中变量为(全部在函数栈帧上):
Char64 Vout;
short32 vResultLo、vResultHi;
这似乎在 3.1.0.LTS 下编译正确、但我们确实不希望回滚几个主要的编译器版本。
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.
器件型号: TDA4AH-Q1
在为 C7x 编译一些裸机代码期间、5.0.0.LTS 编译器会抛出以下错误:
“内部错误:与 ARGREF 不匹配“。
产生此错误的代码行是:
__vstore_packl_2src (&Vout、vResultLo、vResultHi);
其中变量为(全部在函数栈帧上):
Char64 Vout;
short32 vResultLo、vResultHi;
这似乎在 3.1.0.LTS 下编译正确、但我们确实不希望回滚几个主要的编译器版本。
尊敬的 Ross:
在我看来、我使用指定的编译器版本测试了相同的内在函数、并成功编译而没有遇到任何问题。 使用以下测试设置和步骤进行验证:
测试设置
使用的编译器:5.0.0.LTS 编译器
使用的工具:CCS 版本 12.7.0
链接器脚本:请使用路径 C:\ti\processor-sdk-rtos-j784s4-evm-11_02_00_06\DSPLIB\cmake\linkers\C7120\lnk.cmd 中的链接器脚本
构建遵循的步骤
1) 创建新的 CCS 工程


2) 在 CCS 工程目录中上传链接器脚本

3) 使用以下代码修改 main.cpp 中的代码
e2e.ti.com/.../intrinsic_5F00_sample_5F00_code.cpp
4) 右键点击工程并构建工程

此致、
Ben
尊敬的 Ross:
请尽可能使用您的设置详细信息更新该主题、我将对此进行进一步了解。
链接器脚本只是为了更好地了解正在使用的整体构建和存储器设置。
请注意、我们能够使用 CCS 编译它。 我还会共享构建日志以供参考。
e2e.ti.com/.../1157.console_5F00_log.txt
谢谢、
Ben
您好 Ben、
我创建了一个最小的复制案例(请不要在代码中读得太多 — 我已经剥离了它的 95%、这就是为什么它不做像设置 SA/SE 这样合理的事情)。
e2e.ti.com/.../6874.Makefile.txt
我不得不重命名 Makefile、以便添加.txt 以供上传、但这应该很好。
我的操作系统是 Ubuntu 22.04
谢谢、
Ross
尊敬的 Ross:
我已经从我这边重现了这个问题 您还请从您的端部进行验证。
e2e.ti.com/.../0882.console_5F00_log.txt
此致、
Ben
尊敬的 Ross:
我做了一些更改、将深度嵌套内在函数调用拆分为命名的中间变量、代码编译成功。 您能否也尝试一下。
e2e.ti.com/.../1346.error.c
此致、
Ben
您好 Ben、
这些更改对代码的实际版本无效(即 Vout 与输出不同,我们确实需要在流地址生成器上进行谓词)。 我在这里上传的版本被极大地简化 — 所有的零都不是真正的零,许多是他们自己详细计算的结果 — 但这不是触发编译器错误所必需的。
也许您可以描述您认为会引发问题的因素、以及我应该在真实代码中更改哪些模式、看看我是否可以复制您的成功?
也就是说、 虽然可以重新编译代码以使错误消失,但事实上编译器崩溃显然合法的 C 构造肯定指向编译器中的一个错误,因此我 不会认为这个问题解决,即使在这种情况下无论如何 — 它将在我的身边解决它,而不是在你的解决它(如果可以做出与真实代码兼容的更改,我将尝试)。
谢谢、
Ross
尊敬的 Ross:
在为 C7x 编译一些裸机代码期间、5.0.LTS 编译器会抛出以下错误:
我理解您的担忧。 我使用 C7x CGT 版本 v4.1.0.LTS、v3.1.0.LTS、v5.0.0.LTS 和 v5.0.1.LTS 编译了所共享的最小代码。 如您所述、仅 v5.0.0.LTS 出现问题。 这似乎是参数引用 (ARGREF) 阶段的后端问题、我认为它已在 v5.0.1.LTS 中修复。
请尝试使用最新的 CGT 版本 (v5.0.1.LTS:https://www.ti.com/tool/download/C7000-CGT/5.0.1.LTS) 并告知我们。 如果您仍然遇到问题、我们将与编译器团队进行检查、并在需要时生成错误。
此致、
Betsy Varughese.