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.

[参考译文] TMS570LC4357:使用 CCS 编译调试 cmake TI

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

https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs

器件型号:TMS570LC4357

您好!

我有一个 cmake 项目能够为 TMS570LC43xx 编译应用。
我能够生成二进制文件、使用 uni-flash 将其加载到目标中、但现在我想在目标中进行调试。
我很难让 CCS 获取我的.out 文件、将其加载到目标中、运行它、并在我的源代码语句中制动点。
可以这样做吗? 我是否可以使用任何 wiki 或指南?
此致

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

    尊敬的 Martin:

    我认为 CCS 无法从 cmake 生成的输出文件中查看源代码。  

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

    尊敬的 Martin:

    我会将您的问题转交给 CCS/Compiler E2E 论坛以获取帮助

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

    您好!

    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs ]我很难让 CCS 获取我的.out 文件、将其加载到目标中、运行它、并在我的源代码语句中提供制动点。

    您能否提供有关您遇到的确切问题的更多详细信息?

    还提供所使用的确切 CCS 版本。

    谢谢

    Ki

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

    你(们)好

    很抱歉、我不得不离开项目一段时间。 因此、我能够使用 toolchain.cmake 文件和能够编译.out 文件的 ninja 创建 CMakeList.txt。
    使用"New Project">"Makefile Project"并创建新的目标连接、我现在还能够刷写微控制器并运行软件。
    它不起作用、因为我使用的是 cmake 中的 Eclipse 生成器、然后使用"Import > Existing project"。 使用最后一个选项、调试不会将二进制文件加载到目标中、而只是尝试运行存储器中的任何内容。

    现在、我检查存储器、它具有中断矢量以及所有应用二进制和调试符号:

    现在、我在代码执行中被阻止。 在_c_init00 (void)函数上执行此行时遇到_undef 异常

    请提供任何帮助。

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

    您是否在 CCS 之外构建项目、而只是希望使用 CCS 加载程序并仅进行调试?

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

    是的。

    我的分析取得了进展。 我已经使用在 cmake 工程中编译的相同文件手动编译了 CCS 工程。 CCS 工程工作得非常完美、因此我得出结论:cmake 工具链中有一些配置不当的工程、或者无法将某些工程加载到目标中、因为我使用的是简单的 Eclipse 工程调试、而不是 CCS 工程调试。

    我比较了编译器命令行、它们是等效的。 传递相同的参数、但并非始终采用相同的顺序。 例如:

    CCS:

    CMake:


    链接器命令文件是相同的。


    我比较了链接器命令行、它们是等效的(如上所述)。 传递相同的参数、但并非始终采用相同的顺序。 例如:

    CCS:

    CMake:

    我们首先将一些文件编译到库中、这是 CCS 工程未执行的操作。 该库的封装方式如下:

    其中 amar_wrapper.bat 为:


    这样做是为了解决 e2e.ti.com/.../warning-10189-d-archive-symbol-directory-is-missing-from-archive 中提到的问题。

    我比较了映射文件、我发现它们具有相同的段、相同数量的符号、相同的符号(除了其中一些符号被标记为我们为 cmake 工程1创建的库的一部分)、相同的存储器大小。

    您认为使用库可能是问题吗? 还有其他想法吗?

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

    谢谢。 总之、可以在 CCS 中成功编译和调试 CCS 工程、而不是基于 CMake 的 makefile 工程。

    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4515503 #4515503"]使用"使用现有代码新建项目> makefile 项目"并创建新的目标连接我现在还能够刷写微控制器并运行软件。

    如果您在 CCS 之外构建、我对您在这里所做的工作有一点不清楚。 您不需要工程即可进行调试。 您可以启动 手动启动 、然后在没有项目的情况下手动加载程序。 当您执行此操作时、您仍然 会看到相同的问题吗?

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

    非常感谢您的帮助、非常感谢。 但我仍有相同的问题。

    相关信息

    使用"New Project">"Makefile Project"并创建新的目标连接、我现在还能够刷写微控制器并运行软件。

    cmake 生成能够编译的忍者 makefile 文件。
    我可以使用命令行运行构建:

    cmake --build

    因此、我创建了一个类型为"使用现有代码生成项目"的新 Eclipse 项目、并将 eclipse 配置为运行 cmake --build 编译以编译程序:



    然后、我转到调试配置、并使用目标的 ccxml 文件(我用于调试 CCS 项目的相同文件)配置新的调试配置、来自此 Eclipse 的源文件 make 项目和用于 ECC 兼容性的闪存选项很少。


    我还执行了手动启动、这与使用导入的工程自动调试时的观察结果相同。
    程序加载到目标中、它正在运行、当我暂停执行时、它在_udef 中断矢量中:

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

    供参考我还尝试不在库中编译一组.c 文件、然后将其与二进制文件链接。
    映射文件现在更加相等(一些只在.obj 命名中更改、但其他所有内容相同)

    不同命名的示例

    只有一个区别:

    不确定是否重要。
    尺寸相同

    "全局符号:按名称字母顺序排序"部分没有区别(名称和地址相同)
    相同数量的符号


    但我无法将二进制文件运行到目标中、我得到_undef 异常。

    我的结论是、在目标加载期间 CCS 工程会执行某些操作、但手动启动或我的方法不会执行这些操作。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4519226 #45192226"]我认为 CCS 工程在目标加载期间会执行某些操作,但手动启动或我的方法不会执行这些操作。

    您能否尝试最后一次测试:

    1) 1)手动启动并连接

    2) 2)手动加载/运行由标准 CCS 工程生成的可执行文件。 一切都能按预期工作吗?

    3) 3)手动加载/运行通过 cmake 自定义 makefile 工程生成的可执行文件。  一切是否按预期工作、或者您看到了错误?

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

    我进行了测试、使用 CCS 工程编译的.out 工作正常


    但不包括使用 cmake 编译的代码:

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

    n´t 是否相关、但我已经使用 cmake 工具链编译了一个包含.c 文件子集的库、然后在 CCS 工程中使用该库而不是添加.c 文件、并且它可以正常工作。

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

    最好使用此 API 来创建工程、而不是使用 cmake toolchian 吗?

    software-dl.ti.com/.../ccs_projects-command-line.html

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4520534 #4520534"]是否最好使用此 API 来创建项目而不是使用 cmake toolchian?

    您使用 cmake 而不使用 CCS/gmake 的主要原因是什么?

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

    以避免工程的手动配置(容易出错)并简化编译选项的审阅。
    我现在拥有的是手动创建的 CCS 工程的 PROB、我必须将其删除并在另一个文件夹中创建、然后再进行研究...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4521200 #4521200"]以避免项目的手动配置(容易出错)并简化编译选项的审阅。

    在这种情况下、我建议使用 CCS 工程并使用命令行界面在前面提到的链接中创建/编译这些工程。

    如果您仍然希望调查 cmake 问题、我需要将其转发给编译器团队、因为这似乎不是 CCS 编译/调试问题。

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

    大家好、我还有一个正常工作的解决方案(我必须重新执行 CCS 项目才能使其再次正常工作)。 我现在将继续使用此解决方案、但我想了解 为什么 Cmake 工具链不起作用。 如果您可以将问题转发给编译器团队、我将不胜感激、即使我不能花很多时间来回答。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4524464 #4524464">但我想了解 一下为什么 Cmake 工具链不起作用。 如果您可以将问题转发给编译器团队、我将不胜感激、即使我不能花很多时间来回答。

    我将提请他们注意这个主题。

    谢谢

    Ki

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

    请将数据恢复到这样的状态:在比较两个构建中的链接器映射文件时,情况就是这样...

    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4519226 #45192226"]全局符号:按名称按字母顺序排序"一节(名称和地址相同)没有区别
    相同数量的符号[/引号]

    然而,当运行使用 CMake 生成的代码时,此行为仍会发生...

    [引用 userid="549153" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1194587/tms570lc4357-debug-cmake-ti-build-with-ccs/4519226 #45192226"]我无法将二进制文件运行到目标中,我得到_undef 异常。

    请安装 代码生成工具 XML 处理实用程序。  使用该软件包中的实用程序 objdiff 来比较每个构建中的两个可执行.out 文件。  它们是相同的吗?  如果它们不相同、则在文件中捕获 objdiff 的输出(确保其具有文件扩展名.txt)、并 其附加到下一个帖子。

    谢谢、此致、

    乔治