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.

[参考译文] CC1312R:使用 SDK 6.20/TI Clang 进入 Simplelink 驱动程序文件

Guru**** 2540620 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1164116/cc1312r-stepping-into-simplelink-driver-files-with-sdk-6-20-ti-clang

器件型号:CC1312R

您好!

使用 SDK 6.20和 TI Clang 编译器单步执行驱动程序代码(例如 GPIO_init())需要执行哪些步骤?

使用空项目:

  • 编译器没有优化
  • 除其他外、我在全局范围内定义了 DRIVERLIB_NOROM、以防万一。
  • 我还尝试为 driverlib 添加符号、以防使用 driverlib (我不认为是这样?)

尝试单步进入 GPIO_init(),CCS 无法找到 C 文件,如下所示:

 调试器在函数处停止:

尝试单步执行、在汇编中设置断点、显示未找到文件:

显示项目的包含项:

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

    尊敬的 Martin:

    要调试驱动程序代码、您需要将要调试的源文件添加到项目中。

    此致、
    尼古拉伊  

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

    Nikolaj、您好!

    与向编译器包含添加 SDK 路径不同的方式? 如上面的第三个图像所示、SDK 驱动程序文件是工程搜索路径的一部分(不确定如何编译、否则会编译?)。

    我只需导入其中一个 SDK 示例项目便可进入此状态、并且在以前的 SDK/CCS 编译器中从未遇到过此问题。

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

    尊敬的 Martin:

    您的第三个映像中显示的包含仅是使用的包含路径、即可以使用#include 指令包含的文件。 这并不意味着所有文件都将被编译。

    默认示例将使用预编译的驱动程序库、并且不会从源代码构建驱动程序。 使用此库时、无法调试源代码。 如果要调试源代码、则需要编译并链接要调试的特定源文件。 通过将源文件(.c)添加到项目中、CCS 将自动编译并链接此文件。

    要将文件添加到工程中、您可以将文件从 Windows 文件资源管理器拖到 CCS 中的工程中。 它将询问您是要链接还是复制文件(两者都可以正常工作)

    此致、
    尼古拉伊

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

    回到这里、我有一个库文件、我的项目链接到该文件。 如果我使用 TI Clang 编译库、则无法单步执行源文件。 与 CCS 编译器库链接可实现从项目进入库源代码。

    是否需要更改设置?

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

    请勿认为这是 CC1312特定问题、因此请尝试让 TI Clang 知识的人回答

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="161780" URL"~/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/1164116/cc1312r-stepping-into-simplelink-driver-files-with-sdk-6-20-ti-clang/4395611 #4395611">返回后、我有一个库文件、我的项目链接到该库文件。 如果我使用 TI Clang 编译库、则无法单步执行源文件。 与 CCS 编译器库链接可从工程进入库的源代码。[/quot]

    您使用的是哪个 CCS 版本? 旧版 CCS 上的 TI Clang 编译输出存在已知问题。 如果您使用的是较旧版本(CCS 12.x 之前)、请更新您的 CCS 版本。

    谢谢

    Ki

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

    我刚刚从11升级到了12、以验证这一点。 重新编译库和项目、结果相同。 "没有与任何已加载符号关联的代码"。

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

    我使用 CCS 12.1和 SDK 6.20空示例重现了相同的问题。

    GPIO_init()来自 drivers_cc26x2.a 库。 编译的逆时针不包含任何源调试信息。 gcc 编译的。 这解释了为什么我在使用逆时针编译库时无法步入 GPIO_init()。 此库可能未使用适当的 compielr 选项构建以生成完整的调试符号。 这似乎是一个已知的疏忽,因为 SDK 6.30中的逆时针编译库*DONE*包含源调试符号,我可以在那里单步进入 GPIO_init()。 请尝试使用 SDK 6.30并查看问题是否已解决。

    谢谢

    Ki

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

    我最初接受的答案毕竟是错误的。 本应该不需要在本地编译库文件。 SDK 6.20如下所示、在预编译库文件中没有调试符号、该符号在6.30中进行了寻址

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

    谢谢 Ki、我可以看到6.30工作正常、谢谢您! 对于此主题上发生的其他海报、本地编译的库应确保 发出 DWARF 调试信息(https://software-dl.ti.com/codegen/docs/tiarmclang/compiler_tools_user_guide/migration_guide/mapping_armcl_options_to_tiarmclang/controlling_dwarf_debug_info.html):)