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.

[参考译文] LAUNCHXL-F280049C:CCS 跟踪外部空函数位置

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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1185637/launchxl-f280049c-ccs-track-extern-void-functions-location

器件型号:LAUNCHXL-F280049C

您好!

以下 CCS v5.4的过去版本可以轻松跟踪保持 CTRL 键的外部函数+单击*。h 文件中的外部函数名称。 由于 CCS v7.1、鼠标悬停 CTRL + Click 会在到达实际 C 函数之前打开每个*。h 文件。 如果属性键字(内联)存在于*。h 文件中命名的外部空洞中、则这种情况可能会正常。 在优化级别=3或级别=4时、没有搜索 CTRL 键的 IDE 操作来验证该函数甚至存在于项目中的任何位置。

是否有配置文件设置来纠正该奇数行为、或者 CTRL 不动作是否表明即使是 ROM 符号库也存在 extern 函数?

当 IDE 在鼠标悬停 CTRL 点击时仍然为空时、如何跟踪 c:\ti 路径上实际存在的外部函数、甚至跟踪项目中实际存在的外部函数数量?

在 main.c 或任何 C 模块调用时、以下被认为是 ROM 函数的调用不会执行任何操作。 然而、当它们实际执行一个 ROM 函数时、没有错误地被遵守、就好像它们在没有关键字(内联)的情况下仍然是无效的一样。 编译器 LTS V21优化级别3 (全局)似乎会将这些调用链接为内联外部函数。

extern bool EST_getFlag_motorIdentified (EST_Handle handle);

extern bool EST_isMotorIdentified (EST_Handle handle);

extern void EST_setLs_d_h (EST_Handle handle、const float32_t LS_d_h);

extern void EST_setLs_q_H (EST_Handle handle、const float32_t LS_q_H);

extern float32_t EST_getLs_d_h (EST_Handle handle);

extern float32_t EST_getLs_d_h (EST_Handle handle);

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

    您好!

    这是 CDT 分度器的一个问题、考虑到它处于粗略状态、它不会让我感到意外。 您提到这一切都适用于 CCS 5.4、但注意到 CCS 7.1出现了问题(可能更大)。 您是否注意到同一项目的行为发生了变化? 是否可以创建一个非常简单、自包含的测试用例(尽可能简单)、该用例适用于5.4但不适用于7.1+? 这将大大有助于我们的调查。

    谢谢

    Ki  

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

    您好 Ki、

    这是一个 typedef 结构体、最后一个元素没有已识别的 bool 标志。 另外两个 LS~位于顶部附近的同一结构中。 C2000 v21编译器不会警告缺少对标签密钥链接的引用或类似内容。 缺少的 bool 标志如何停止另一个结构中具有相似链接名称的前两个可能是相关的。  

    这是在重新加载后退出的现有调试分离后发生的、与幻影指针问题类似。 因此、下次 MCU 复位时、结构开始在上述函数中表现异常。 编译器可能已经警告过这种情况发生、但直到稍后才知道。

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

    另一个问题似乎与 IDE 代码跟踪器未通过 CTRL+Click 发现的函数的源位置有关。 当文件导入到工程工作区时、似乎不会发生这种情况、而是具有指向 c:\ti~的链接

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="48581" URL"~/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1185637/launchxl-f280049c-ccs-track-extern-void-functions-location/4469466 #4469466">另一个问题似乎与 IDE 代码跟踪器未通过 CTRL+Click 发现函数的源位置有关。 当文件导入到工程工作区时、似乎不会发生、而是具有指向 c:\ti~的链接

    索引器应拾取项目文件夹之外存在的链接源文件。 但是、这并不总是适用于未添加到索引器搜索路径的外部文件夹中的头文件。 这将影响"公开声明"的执行。

    为了使索引器可以使用的包含文件、如果 尚未包含这些文件、您可以在项目属性中添加希望 CDT 建立索引的包含目录(确保"高级设置"已公开):

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

    需要澄清的一点是、索引器和编译器是单独的工具、它们之间的关系主要不相关。  但是、索引器将选择一些编译器选项、如预定义符号。

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

    它曾跳过 H 文件并直接转到 CCS5.4中的 C 文件、但导入的 CCS-7.1首选项没有任何不同。 似乎 IDE 已沿行进行修改、使索引器首先转到 H 文件。 它也被假定存在于符号库中、根本不执行任何操作、即使存在要包含的路径也是如此。