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.

[参考译文] TMS320F280037C:启用具有特定存储器位置的编程观察点

Guru**** 2478765 points


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

https://e2e.ti.com/support/microcontrollers/c2000-microcontrollers-group/c2000/f/c2000-microcontrollers-forum/1465887/tms320f280037c-enabling-coditional-watchpoints-with-specific-memory-location

器件型号:TMS320F280037C

工具与软件:

您好!

我已经对 CAN 应用程序进行了一段时间的调试、因为我们遇到了以下问题。 在通信环路中、存在很少出现且完全随机的错误。 似乎我们发送的其中一条消息中包含相应标识符的标识符0x00。 我非常肯定的是、该消息正在传输到具有所需标识符的 MCAN 消息 RAM、但在某个时候它会更改其值。 我想放弃任何人正在写入存储器中另一个值的说法、我认为使用条件观察点来指向该特定的加数、然后看看写入的值是否为0x00。

我遇到的问题是、如果观察点指向微控制器寄存器、则无法触发观察点。 我尝试了 GPIO DAT 寄存器并尝试以受控方式启用 GPIO、但未能捕捉到。 如果观察点指向代码中的任何变量、我可以毫无问题地捕获调试器。 但是、当我尝试使用存储器位置、寄存器或 RAM 的观察点时、无法触发。

我一直在寻找更多的信息,但我找不到任何可以帮助我的信息。 您能给我提供一些帮助吗? 此外、我想为该观察点尝试 GEL 脚本、但我尚未通过示例找到任何有关该事项的教程。

此致、

David

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

    尊敬的 David:

    您使用的 CCS 的具体版本是什么?

    谢谢

    Ki

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

    您好 Ki、

    我目前使用 CCS 12.2。

    此致、

    David

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

    David、

    您提到过、它对变量是有效的。  我预计对全局变量地址的设置与对另一个存储器地址的设置之间不会有任何差异。  对于我来说、我将直接在我的其中一个变量(在本例中为0xA80A)的地址上设置观察点。  这会在我编写时触发正常。  然后、我更新观察点以查找特定的值、这也会触发良好操作。  我同时尝试了 CCSv20.0.1和12.2.0。

    我确实看到数据大小有其他属性、或许这很重要?

    您设置监视点的地址是什么? 我不熟悉 CAN 存储器在这款器件上的工作原理。  我怀疑我们必须把这个发送回器件团队进行评论。

    此致、

    John

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

    John、您好!

    感谢您的答复。 当一个特定的内存地址被写入特定的值时、完全有可能是我没有正确地使用掩码和值。 我将重试、如果我不成功、我将添加一些配置图片。 我将尝试观察 GPIO 设置寄存器、因为展开会容易得多。

    同时、对于可添加到观察点的 GEL expression、我在哪里可以看到一些用法示例、以提高其 sintaxis 的性能?

    此致、

    David

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

    关于您的最后一个问题、我将尝试在 RAM 消息中设置观察点。写入的任何方向对我都有效、它是消息在发送之前存储的位置。 它是可配置的、因此每个器件的确切存储器位置不同。 但是、可以指向起始地址为0x00058000U 的任何 RAM 消息位置。

    David

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

    David、

    我们已经尝试在观察点(或断点)上设置 GEL 条件好几年了。  需要记住的一点是、此处的评估是在主机上进行的、而不是在器件中进行的。  也就是说、观察点的地址和值比较会在器件上发生、但使用 GEL 表达式、观察点会触发停止、那么 GEL 表达式将在主机上计算得出、并且根据该表达式是 true 还是 false、我们将再次运行目标。  因此、它在外露上具有很强的侵入性。 我过去用它来跟踪穷人的数据。  使用 GEL 表达式设置观察点、halt、打印值、然后再次运行。

    我在这里有一个观察点、我放置一个条件。  我有一个定义函数 condition()的 john.gel 文件。  为了进行演示、我需要一个用于返回值的参数、该参数主要用于确定目标是否保持停止。

    在第一个示例中、我的条件调用为0。  可以看到它不停地打印。

    然后我将条件替换为条件(1)。 我再次运行、您可以看到它输出 hello 1一次、然后停止。

    这些屏幕截图来自 CCSv20、但12.2部分的功能相同。

    此致、

    John