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.

[参考译文] CODECOMPOSER:在 CCS's 调试器中添加数据观察点并更改编译优化

Guru**** 2568565 points
Other Parts Discussed in Thread: AWR2944EVM, AWR2944

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

https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/1568073/codecomposer-adding-a-data-watchpoint-in-ccs-s-debugger-and-changing-compilation-optimization

部件号:CODECOMPOSER
Thread 中讨论的其他器件:AWR2944EVMAWR2944

工具/软件:

大家好、TI 专家。

我正在为 AWR2944EVM 使用 HECR 演示。 目前我正在 CCS12 中调试跟踪器代码。  

我修改了演示以流式传输自定义调试 TLV、我发现关键的问题是不会产生轨道、因为 gtrack_module.c 中的 if 语句绝不会成立:

  • if (fabsf (mCurrent.vector.polple - mCenter.vector.polphp)< inst->params.allocationParams.maxVelThre)

这似乎是因为尽管在 chirp_design_HECR.h 中设置了参数、但 inst->params 仍填充了不正确的数据 为了进一步研究这一点、我有几个问题。

 这就是为什么我想问你:

  1. 如何为  inst->params.allocationParams 设置数据观察点,以便在程序执行期间分析对此变量地址的所有读取/写入?
  2. 如何更改编译器优化设置、使其包含更多调试标志(即形式-O3 到-O0) ?

此致、
标记

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

    您好:

    如何设置  inst->params.allocationParams 的数据观察点、以便在程序执行期间分析对此变量地址的所有读取/写入?

    您可以对表达式或直接地址: https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs/ccs_debug-main.html#watchpoints 设置数据观察点。 您可以指定在读取和/或写入时触发、具体取决于 CPU。

    如何更改编译器优化设置以包含更多调试标志(即形式-O3 到-O0) ?

    为了获得最佳调试体验、您需要优化。 对于 ARM CLANG 编译器、应为“0"。“。 对于 C6x 编译器、这将是“off"。“。 当您开启优化时、它将开始影响源级调试。 O3 之类的工具会产生很大的影响、这会使源代码调试变得非常困难:

    https://dev.ti.com/tirex/explore/node?node=A__AA6fEd9YTSwdDSyHdoLE9Q__ccs_devtools__FUz-xrs__LATEST

    谢谢

    Ki

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您可以在表达式或直接地址 https://software-dl.ti.com/ccs/esd/documents/users_guide_ccs/ccs_debug-main.html#watchpoints 上设置数据观察点。 根据 CPU 的不同、您可以指定在读取和/或写入时触发。

    我刚意识到您使用的是较旧的 CCS 12.x 版本。 请参阅此链接: software-dl.ti.com/ccs/esd/documents/users_guide_12.8.0/ccs_debug-main.html#watchpoints

    谢谢

    Ki

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

    您好、Ki、

    感谢您的答复。 正如建议的那样、我确实遵循了手册说明、但我无法 在我感兴趣的变量处设置激活观察点设置。 我一直收到警告:“ numClusterEvents “无法解析为地址“。 请看一下:  

    关于优化、提供的链接讨论了我知道的总体原理和权衡。 我想得到的指导是如何在 CCS 中更改对整个工程的优化。

    感谢你的帮助。
    此致、
    标记

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

    您好:

    我一直收到警告:'“numClusterEvents"无法“无法解析为地址'

    您需要输入解析为地址的表达式。 或直接指定确切地址。

    如何在 CCS 中更改整个项目的优化。

    检查编译器编译属性:

    https://software-dl.ti.com/ccs/esd/documents/users_guide_12.8.0/ccs_project-management.html#build-properties

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

    您好、Ki、

    感谢您的快速回答!

    我设法解决了优化级别。 我已将其设置为 O0。

    关于观察点 — 如果我能获得更多的帮助,这将是很好的。

    我知道 inst->params.allocationParams.maxVelThre 是在 mmwave_load_params.c 内初始化时写入 的、因此我的理解是、如果我在 gtrack_module.c 内对其设置一个观察点、该观察点是按帧使用的。 然后、当 在  mmw_load_params.c 中初始化参数时、程序应该停止、正确吗?  

    我做了我上面描述的,但程序根本没有停止它的执行 — 为什么是这样?

    你还写我可以简单地指定我要观看的地址,我该怎么做?

      

    感谢您的帮助!
    此致、
    标记

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您还可以简单地指定我要查看的地址、如何操作?

    在“Breakpoints"视“视图中:

    https://software-dl.ti.com/ccs/esd/documents/users_guide_12.8.0/ccs_debug-main.html#breakpoints-view

    您可以使用该选项添加新的硬件观察点:

    将出现一个对话框、您可以在其中显式指定绝对地址:

    请设置绝对地址、看看这样是否有帮助。 在“Memory"视“视图中打开该地址以检查内容。

    谢谢

    Ki

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

    您好、

    感谢您的回答。 不幸的是,我仍然有一些问题,下面是我做的一步一步:

    1.) 在函数(,在本例中为 gtrack_step.c)中设置断点。


    2.) 当程序停止时、我使用“Expressions"视“视图来查看目标地址、在我的情况下、它是结构的成员:

    inst = (GtrackModuleInstance *)handle;
    inst->wasAllocateCalled = 0;


    3.) 右键点击观察点选项卡中的相应字段、然后选择硬件观察点、这会在“Breakpoints"选项“选项卡中创建一个新断点。 在本例中是地址 0x102230D0。 这对应于“Expressions"选项“选项卡中显示的相关变量的地址。

    4.) 点击“步骤 Return 或“Resume"以“以继续程序执行、以便代码像在正常操作期间一样流动。


    ...但是我的观察点永远不会停止程序的执行,尽管我看到它被监视的值被切换。


    我的问题是、我有什么问题?

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

    您能给我展示您设置的观察点的属性吗? 请展开所有节点以使其可见:

    https://software-dl.ti.com/ccs/esd/documents/users_guide_12.8.0/ccs_debug-main.html#breakpoint-properties

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

    您好、Ki、

    操作为“保持停止“、如断点属性中所示:

    此外、为了确保我不会犯一些愚蠢的错误、请查看此短屏幕截图。 请注意、gtrack_step.c 在 gtrack_module.c 之前调用 在 gtrack_step.c 中、 inst->wasAllocateCalled = 0;的值设置为 0、在 gtrack_module.c 内设置为 1、这在每帧发生。 我当前的帧速率是 250 毫秒。

    e2e.ti.com/.../WatchpointIssue.mp4

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

    感谢您观看本视频。 我看不到观察点设置有任何问题。 我正在使用各种目标测试观察点、结果结果正常。 但我没有尝试使用 AWR2944。 我将需要申请一块电路板并在该特定目标上对其进行测试。

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

    您好、Ki、

    [引述 userid=“2210" url="“ url="~“~/support/sensors-group/sensors/f/sensors-forum/1568073/codecomposer-adding-a-data-watchpoint-in-ccs-s-debugger-and-changing-compilation-optimization/6048739 ]但我没有尝试使用 AWR2944。 我需要申请一个板并在此特定目标上进行测试

    请注意、我在此视频中测试的变量是我添加到源代码文件中的一个变量。 但是、这个 inst->params.allocationParams.maxVelThre 由原始源代码使用。 另请注意、TI 的 HECR 演示中存在一个错误、已在此处解决:  关于 AWR2944EVM:HECR 演示跟踪器问题(包括 文档差异)  

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

    您能用任何变量/地址触发观察点吗?

    您是否还能提供您的计划? 我安装了工具箱和 SDK、但在构建示例时遇到问题。 使用您正在使用的程序可能会更容易、而不是对编译错误进行故障排除(我是工具专家,但不是器件/SDK 专家)。 您可以通过私人 E2E 消息私下分享。

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

    您好、Ki、

    我确实尝试在其他地址位置设置断点、 我根本无法让它发挥作用。 例如 我尝试在 numObjOut 上设置一个观察点  在函数 MmwDemo_handleObjectDetResult 内 — 这将更改每帧。 此外  默认情况下、它位于演示的 mms_main.c 文件中。

    关于程序 — 是的,我可以。 但对于调试器、我认为它不会发生太大变化。 我也无法直接从 SDK HECR 演示中设置观察点。  

    现在可以 尝试使用默认的 HECR 演示吗? 我使用的是 radar_toolbox_3_20_00_04。 如前所述、跟踪器 未正确初始化。 但是、这对于在 mss_main.c 文件的范围内设置断点/观察点无关紧要。  

    此致、

    标记

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    现在可以 在默认的 HECR 演示中试用一下吗? 我正在使用 radar_toolbox_3_20_00_04

    这是 awr2944_cordde_radar 工程吗? 这些似乎构建正常。 我将尝试这些。 今天是当地假日、所以明天我回到办公室时、我会尝试一下。

    谢谢

    Ki

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

    是的、我正在使用此演示:  

    C:\ti\radar_toolbox_3_20_00_04\source\ti\examples\Automotive_adas_and_Parking\high_end_cordder_radar\automotive src

    它们确实开箱即用、但跟踪器无法正确初始化。

    享受你的假期!

    此致、

    标记

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

    谢谢、我构建并运行了这些示例、并应用了另一个线程中的修复程序。 但由于某种原因、它似乎无法正常运行。 我需要进一步研究这一点。

    然而,我做了一个基本测试的观察点在 R5 和它对我有效。 您能尝试一下这个极其简单的测试吗:

    创建全局整数变量。 然后在源中以某种方式访问它。 然后编译/加载程序并设置一个观察点、该观察点将在任何访问时触发停止。 查看它是否触发停止。

    这方面的一个例子是:

    执行第 3113 行时、观察点将检测&GVAR 处的读取访问并触发停止。

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

    您好、Ki、

    我按照指示操作、观察点工作:

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

    基本观察点功能似乎有效。 我尝试了两个内存写和任何,都似乎工作的预期。 问题是为什么它不能为您处理问题中的变量。 你可以尝试“any"存储“存储器,看看是否至少会触发任何东西?

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

    您好、Ki、  

    您是否尝试对函数范围变量进行定位? 我尝试像所示的示例中那样做、但它不起作用。

    也许我不理解正确的内容、但据我所知、由于此变量已初始化、它在存储器位置应该相同。

    此致、

    标记  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是否尝试将函数作用域变量放置在位置?

    编号 您不希望对局部变量执行此操作、因为每次调用函数时地址都可以更改、因为局部变量通常存储在堆栈上以及堆栈的动态性质。

    观察点通常用于全局/静态变量。