主题中讨论的其他器件: C2000WARE
我正在尝试将 TMS320F28388D 上的闪存 API 与 TI Clang v.2.12.2.LTS 编译器结合使用。
在 C28内核上一切都很顺利、我很快就能够擦除和写入闪存扇区。
CM/M4内核是问题开始的位置。 使用 C2000Ware_4_03_00_00中的 include 和 lib 看起来不错、用 M4型号替换 C28。 但是-在构建时、链接器会抱怨:
错误:文件
"C:/[...]/driverlib_cm4/Debug/driverlib_cm4.lib "的 Tag_abi_vfp_args 属性值"0"不同于之前看到的属性("1");组合不兼容的文件
另外还有两个误差、与之非常类似。
我发现此标签对应于 CCS 项目设置 CCS Build/Arm Compiler/Processor Options/-mfloat-ABI (硬或软)。
armofd 工具不会显示1的来源、我们的所有模块都明确设置为0 (CCS 工程设置中的" soft")。 然而、该工具显示闪存 API 的标签被设定为3、这意味着它应该与所有内容相匹配。 (armofd 输出可能会令人困惑、因为通常没有明确写入0、因为这是默认值)
我们使用了几个第三方库(driverlib_cm4.lib、freertos.lib、lwip.lib)和我们自己的一些库。 但即使在这些设置上、armofd 也不会显示1设置、包括所有*。o。
遗憾的是、即使将链接器设置为详细的诊断、也不会告知它在何处看到1个标签。
我们发现、在#include "F021_F2838x_cm.h"周围省略 extern "C"声明可以摆脱链接器 Tag_abi_vfp_args 错误。
但一旦我真的使用闪存 API 中的函数,就找不到闪存 API 中的任何内容("未解析的符号保持"),甚至不是最简单的 Fapi_getFsmStatus()。 此外、由于我们使用 C++、因此我希望需要 C 链接(C++名称改编肯定会干扰符号解析)。
将闪存库或路径字符串修改为无效的设置会使链接器大声疾呼:找不到库-因此两者看起来都正确、并打开正确的文件。 (是的,我没有链接 C28库;-)
这很奇怪–不使用闪存 API 函数进行链接就足以让链接器看到它不喜欢的东西。 但是、当被告知使用闪存 API 函数时、系统将找不到任何函数。
有人对于闪存 API 和 lwip 都遇到了相同的问题:
TMS320F28388D:LWIP 问题- C2000微控制器论坛- C2000 ︎ 微控制器- TI E2E 支持论坛
但最终还没有解决方案。
有人能对此提供一些说明吗?