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.

[参考译文] CCS/AWR1843

Guru**** 2555630 points
Other Parts Discussed in Thread: AWR1843, AWR1642, AWR2944

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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843

主题中讨论的其他器件:AWR1843AWR1642AWR2944

大家好,我正在使用 AWR1843、XSD110调试器和 CCS 软件来构建调试环境,当我调用 API 来编写脚本以实现自动测试时,我发现如果我调用 run() API,目标板可以成功运行,指示灯将闪烁。 但控制不会返回到主机应用程序/脚本,并且不会执行 run()命令之后的任何操作,从而使程序无法执行其他操作。 如果调用 runAsynch() API,则可以将控件返回到主机应用程序/脚本,并执行 runAsynch()之后的操作, 但 AWR1843目标板将无法成功运行、指示灯将不会闪烁、如果添加了超时设置、则会显示目标板无法运行、原因是什么? 是否有任何 API 允许目标板成功运行、使灯闪烁并将控制权返回到主机应用程序/脚本? 以下是执行结果和脚本文档、您能提供帮助吗? 非常感谢!

  e2e.ti.com/.../1682.perl_5F00_clientOne.txt

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843,我发现如果我调用 run() API,目标板可以成功运行,指示灯将闪烁,但控制不会返回到主机应用程序/脚本中, 并且不会执行 run()命令之后的任何操作,从而使程序无法执行其他操作。

    是的,这是真的。。。 除非您设置了超时。 尝试将超时设置为几秒。 这将强制 RUN() API 超时并返回(请注意,超时不会以任何方式影响运行目标)。 程序是否仍然成功运行?

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

    Ki、根据您所说的内容、我们为对应于两个内核的客户端设置了几秒的超时时间(首先运行的内核设置的超时时间比后来运行的内核设置的超时时间长)、 AWR1843目标板可以成功运行(如果设置相同的时间、目标板可能无法运行)、并且将返回超时过期后的控制、但 AWR1843目标板将在超时引发异常后停止运行。 我还记得、让我们将两个内核设置为一个组、调用 run() API 并设置超时、在这种情况下、超时返回控制权后、AWR1843目标板仍可继续运行、闪存将保持闪烁。 这是为什么? 为什么两个内核单独执行、并且目标板在超时后停止闪烁? 我们希望 AWR1843目标板运行、并且也可以返回控制、但该板不会停止运行、以便我们可以继续运行下一个脚本并执行其他命令操作。 是否有办法解决这个问题? 您能提供解决方案吗? 由于这与我们最近的项目有关、因此更为紧迫、我希望您能为我们提供帮助。 两国之间存在时间差异,是否有更有效的沟通方式? 例如、召开会议讨论我们何时都在网上、我认为以这种方式进行沟通可能更有效、您的想法是什么、哈哈

    谢谢!

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

    我一直在对此进行进一步调查、我相信我可以看到您报告的问题。 我有一个使 LED 闪烁的简单程序。 当我使用 runAsynch 运行它时、LED 会闪烁。 此外、当我使用"run"命令运行它时、LED 将闪烁、直到超时。 然后它将停止闪烁。 这也是您目睹的行为。 情况不应如此。 然后、我在标准 DSS javascript 中执行了类似的操作。 runAsynch()按预期工作(使 LED 闪烁)。 与具有超时的 run()调用相同。

    因此、TestServer 环境似乎存在一些问题。 乍一看、我看不到问题是什么。 更有趣的是,我添加了一个自定义 TestServer 命令,该命令查询目标状态以查看是否已停止(使用 isHalted() API)。 当我调用该命令时、它返回目标未停止(即使 LED 未闪烁)。 因此、您看到的目标运行不正确吗? 再说一次、我还不知道。

    对 TestServer 脚本的支持有些有限、因此可能需要一些时间才能到达其底部。 我对此问题深表歉意。

    Ki

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

    好的、感谢您的帮助、期待您的回复。

    在昨天设置超时后,我们调用了 run() API,并在该 API 之后执行了断点命令。 控制台执行会打印以下结果。 这是否意味着、如果使用脚本实现自动测试、当 AWR1843板运行时、它不能被中断、对吧? (精确地说、您可以点击硬件断点、或者先停止目标板、然后点击软件断点)。 但是、如果 CCS 软件用于手动操作、当目标板运行时、软件断点和硬件断点都可以命中。 这与脚本测试不同。 为什么? 如果我们使用脚本自动执行测试、断点类型是否有限制?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4218085 #4218085"]这是否意味着如果使用脚本执行自动测试、当 AWR1843板运行时、它不能被中断、对吧?

    大多数器件/CPU 要求在可以设置软件断点之前暂停目标。 软件早餐点是一个侵入式步骤、将停止操作码写入内存位置。 硬件断点不需要写入存储器。

    请注意、这与设置软件早餐有关。 一旦软件断点被设定、一个正在运行的目标将在一个断点(HW 或 SW)被命中时被暂停。

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4218085 #4218085"]

    UT 如果 CCS 软件用于手动操作、则在目标板运行时、可以命中软件断点和硬件断点。 这与脚本测试不同。 为什么? 如果我们使用脚本自动执行测试、断点类型是否有限制?

    [/报价]

    关于断点限制、由器件和调试器确定。 脚本编写和 CCS IDE 之间的区别是相同的。

    屏幕截图中的错误与设置软件断点有关。 如果您说能够在目标运行时在 IDE 中设置断点、但不能在脚本中设置断点、则可以在 IDE 中设置硬件断点。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="2210" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4217532 #4217532]TestServer 脚本的支持有些有限,因此可能需要一些时间才能达到此脚本的底部。 我对此问题深表歉意。[/引述]

    我为此提交了一个错误。 跟踪 ID: https://sir.ext.ti.com/jira/browse/EXT_EP-10926

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

    嗯、我知道。 但是、IDE 上的软件断点(目标板正在运行时)的位置与我们在脚本上添加的位置相同。 当目标板运行到断点时、它将停止。

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

    我看到你提交的错误。我想解释一下这个错误。我们的双核使用DSS JavaScript编写脚本调用runasynch () API,目标板无法运行;如果我们使用run ()和timeout () API,目标板可以成功运行并返回控制,但不能满足逐个运行脚本执行操作的要求,所以你以后给我们提供一个TestServer解决方案,对吧?TestServer解决方案的问题是我们使用run ()和timeout () API,控件会返回,但是超时后,目标板会停止,flash会停止闪烁。如果调用 runasynch() API,则返回控制,目标板既不运行也不闪烁。

    此外,我还想问,如果我们需要读取/写入全局变量的值或在断点处读取/写入局部变量的值,我们是否应该调用 read/writeData() API? 我们对该 API 的使用以及需要传递的参数并不是很了解。 有示例吗? 是否有方法读取/写入全局变量的值、并将其名称作为参数? 官方网站上的 API 手册没有解释如何使用这些类的某些方法(就像 runBenchmark() API 一样,我之前问过您有关时钟的问题,没有解释如何使用它 ), 这使我们使用起来有点困难。 我希望每个 API 都有一个用例。

    谢谢!μ A

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

    是的、我同意 API 文档稍微详细一点、可以使用更多示例。  

    至于 read/writeData() API,是的,您可以使用它来读取/写入全局变量。  

    有关参数的详细信息:

    公共 长 读数据(int nPage、
    长 nAddress、
    Int nTypeSize)
    抛出 ScriptingException
    从目标读取单个整数值、并以无符号整数的形式返回结果。 指定要在 nTypeSize 中读取的类型的位长度。
    参数:
    nPage -内存页
    nAddress -要从中读取的起始地址
    nTypeSize 位长度

    内存页值在大多数情况下为"0"、除非您有较旧的 C2000器件)

    -您将传递要读取的全局变量的地址

    位长度取决于变量类型。 例如、对于"long"或"worth"类型、您将传递"32"。

    若要查找全局变量的地址、可以使用 symbol.getAddress ("gVariable")、其中"gVariable"是全局变量。 该 API 将重新分配地址。

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

    我有一个 AWR1642、它有一个 Cortex-R4和一个 C674x。 看起来、DSP (C674x)支持在 CPU 运行时设置软件断点的功能。 必须暂停 R4以设置软件断点。 这是你看到的波哈维尔吗?

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

    是的、没错、我只是使用 IDE 进行了尝试。

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

    好的,非常感谢!μ A
    我想问我们的问题是否有解决办法? 此外、是否有人可以为我们提供支持以解决 CCS 问题?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4220561 #4220561"]是的,我刚刚使用 IDE 试用过它。

    这在 TestServer 中也能按预期工作。 我为 AWR1642设置了一个。端口4444用于 R4、端口4445用于 DSP。

    在下面的屏幕截图中、您可以看到、对于 R4、我无法在目标运行时设置断点。 对于 DSP、我做到了。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4220562 #4220562")我想问我们的问题是否有解决方案? 此外、是否有人可以为我们提供支持以解决 CCS 问题?

    关于我归档的错误、它似乎特定于 TestServer。 由于 TestServer 支持有限、因此没有太多工程资源可供研究。 我希望在本周晚些时候能有更多的细节。  

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

    是的、我们的黑色窗口中打印的信息与您相同。 调用 runAsynch() API 后,它返回 OK,但目标板指示灯不闪烁。

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

    好的、非常感谢您、我们期待您早日回复。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4222578 #4222578"]调用 runAsynch() API 后,它返回 OK,但目标板指示灯不闪烁。

    是的、这是我需要调查的秘密...

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="2210" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4223507 #4223507"]是的,这是我需要调查的秘密...

    在我的调查过程中、我可以看到、当执行 runAsynch 时、目标会运行一小段时间、但随后会立即停止。 它类似于运行命令发生超时的情况。 我不确定是什么触发了中止、我现在正在对此进行调查。

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

    但是、我们的目标板根本不会运行。 此问题最迟将在何时得到解答? 我们的项目正在逐步推进、集成测试即将开始、但环境尚未设置。
    谢谢

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

    我找到了问题的根本原因。

    TestServer 脚本将在关闭与客户端脚本的连接之前停止 CPU。 因此、当您调用 runAsynch、然后客户端脚本完成执行时、TestServer 脚本将在关闭连接之前停止目标。

    这本身并不是一个错误、因为脚本中明确提到了正在执行此操作。 不过、我想知道这种方法的总体目的是什么。 显然、如果您希望目标保持运行、这是一种不良行为。

    在任何情况下、您都可以通过注释"TestServer.js"中的第207行来解决该问题:

    感谢您的耐心等待。

    Ki

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

    ,Ki 您好、我们根据您说的方法对其进行了测试。 在第一个内核连接调用 runAsynch() API 后,控件成功返回到目标板,指示灯变为绿色。 第二个内核连接调用 runAsynch() API 后,也会返回控制,但目标板的指示灯不闪烁,这是为什么?  

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

    我们尝试使用其中一个内核添加两个断点,然后调用 runBenchmark() API 来读取两个断点之间的执行时间,并获得 long 类型的返回值。 该值的单位是多少? 毫秒还是秒? 它只是代码的执行时间、还是需要计算并转换为最终时间值? 我们的两个 perl 脚本命令如下所示、请帮助查看它是否正确、谢谢!

    e2e.ti.com/.../perl-script.txt

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

    Ki 今天外出。  他明天将看到你的帖子。

    谢谢、此致、

    乔治

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4360796 #4360796">我们根据您所说的方法对其进行了测试。 在第一个内核连接调用 runAsynch() API 后,控件成功返回到目标板,指示灯变为绿色。

    很棒!

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4360796 #4360796"]

    第二个内核连接调用 runAsynch() API 后,也会返回控制,但目标板的指示灯不闪烁,这是为什么?  

    [/报价]

    我不知道这个问题的原因。 但是、如果您只对第二个内核执行常规运行调用、它是否会按预期闪烁?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4360798 #4360798]此值的单位是什么? 毫秒还是秒? 它只是代码的执行时间、还是需要计算并转换为最终时间值?

    它是 CPU 周期。

    请参阅以下文章中名为"将周期转换为实际时间"的部分

    https://dev.ti.com/tirex/explore/node?node=A__ACh7aaTRwDWC-8ORL0EHMg__ccs_devtools__FUz-xrs__LATEST

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

    不可以、我想目标板上的指示灯仅在两个内核一起运行且未返回控制时才会闪烁。 因此,我们稍后尝试让两个内核直接调用 run() API,然后让其中一个内核继续运行,另一个内核添加两个断点并读取时钟值。 在整个过程中、目标板只有绿灯、但时钟将返回一个值、我们不确定该值是否是两个断点之间的执行时间(因为我们不知道目标板是否成功运行)、 因此、我希望您帮助我们查看我们的脚本是否正确写入,是这样的命令序列(在运行前添加断点、在运行后读取时钟值)?

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

    非常感谢您提供的信息、我们已经了解了如何计算时钟值。 另一个问题是、我们如何知道目标的工作频率、即我们如何知道 CLK 的值? 这是否与目标板相关? 还是大多数固定值都是300MHz?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4364813 #4364813"]另一个问题是,我们如何知道目标的工作频率,即我们如何知道 CLK 的值? 这是否与目标板相关? 还是大多数固定值都是300MHz?[/quot]

    CPU 频率将特定于器件。 此信息将显示在器件本身的文档中。 有关这方面的任何进一步问题应咨询器件专家。

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

    我看到您创建了一个名为"readClock"的命令。 您能描述一下此命令的作用吗? 您在哪里启用时钟?

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

    读取时钟命令用于读取两个断点之间的代码执行时间。 它调用 runBenchmark() API。 我们的执行序列是:添加断点->运行目标->读取时钟、脚本屏幕截图如下所示。 最终执行结果是、添加第一个断点后、返回时钟周期计数为1064;添加第二个断点后、返回时钟周期计数为1。 这不是我们所期望的。 我们认为添加第二个断点后的时钟周期计数值应大于第一个返回值、通过减去这两个数字获得的值将转换为两个断点之间的代码执行时间。 runBenchmark() API 是否会在每次计数前自动清除先前的计数?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4366344 #4366344]Read clock 命令用于读取两个断点之间的代码执行时间。 它调用 runBenchmark() API

    请注意 ,runBenchmark 会执行以下操作:

    启用并重置配置文件时钟  

    运行目标

    停止时返回周期计数。

    请注意、您的 perl 脚本正在发送"run"命令、后跟"readClock"命令。 以优先方式进行2次连续照射行程、仅返回第二次照射行程的循环计数。  

    这是您想要的吗?

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4366344 #4366344"] runBenchmark() API 是否会在每次计数前自动清除先前的计数?

    是的。 如果您不希望重置时钟、则应手动启用时钟、执行标准运行、然后执行标准读取时钟。

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

    感谢您的 Git 捆绑包。 我将查看在我有任何要报告的内容时立即通知您。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="2210" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4367487 #4367487">感谢您提供 git 包。 我将查看在我有任何要报告的内容时立即通知您。

    忽略最后一个帖子。 我打算对不同的线程进行回复、结果被混淆了。

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

    您好 Ki、感谢您的帮助、我们稍后将尝试使用脚本方法。 今天、我们手动调试代码、以计算 ccsIDE 上两个断点之间的执行时间并打开时钟。 当 awr2943的 R5_0内核在第一个硬件断点停止时,时钟周期计数为0, 然后,当它在第二个硬件断点停止时,时钟周期计数也是0 (根据官方操作文档,在运行到第一个硬件断点后,取消断点,然后添加第二个硬件断点,继续执行目标),为什么会这样做? 此外、我们发现目标板未输出任何信号。 是否需要先运行目标板、然后添加断点? 但 R5_0内核在运行期间无法添加断点。 将硬件断点更改为软件断点、时钟周期计数仍然为0。 您能帮助回答这个问题吗? 谢谢! 运行屏幕截图如下所示:

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

    您好 Ki,我们在 ccsIDE 上手动调试代码,这里有一个错误。 当我添加时钟事件和断点后开始运行 Coretex_R5_0时、会发生此问题。 我在网上没有找到任何相关的解决方案,示例帮助我解决这个问题,谢谢!

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

    大家好、Ki、我想问 CCS 中是否有其他方法可以读取两个断点之间代码的执行情况? 此外、还需要对事件和启用时钟进行计数。 我听说还有一个计算时间戳的 Cycleprofiler_getTimeStamp()函数? 如何使用它?

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

    测试后、我们发现在 cortex_R5_0内核下的文件中、断点停止后、时钟周期计数没有任何值。 但是、如果 C66xx_DSP 内核下的文件、在执行在断点处停止后、时钟周期计数具有一个值。  这是为什么? 它是原子核本身的内部机制吗?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4369507 #4369507")当 awr2943的 R5_0内核停止在第一个硬件断点时,时钟周期计数为0, 然后,当它在第二个硬件断点停止时,时钟周期计数也是0 (根据官方操作文档,在运行到第一个硬件断点后,取消断点,然后添加第二个硬件断点,继续执行目标),为什么会这样做? 此外、我们发现目标板未输出任何信号。 是否需要先运行目标板、然后添加断点? 但 R5_0内核在运行期间无法添加断点。 将硬件断点更改为软件断点、时钟周期计数仍然为0。 您能帮助回答这个问题吗? [/报价]

    我不确定计数器值为什么为0。 您可以尝试在"Run -> Clock"下使用 CCS 配置文件时钟吗? 有关配置文件时钟的更多详细信息、请参阅以下文章:

    https://dev.ti.com/tirex/explore/node?node=A__ACh7aaTRwDWC-8ORL0EHMg__ccs_devtools__FUz-xrs__LATEST

    配置文件时钟的值应与事件计数器相匹配、因为我认为它们使用相同的时钟。 我能够看到 AWR1642的 R4的有效周期计数。 我没有要测试的 AWR2943。

    另请查看您是否可以在单步执行时看到时钟值增量。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4369674 #4369674"]

    这里有一个错误。 当我添加时钟事件和断点后开始运行 Coretex_R5_0时、会发生此问题。 我在网上没有找到任何相关的解决方案,示例帮助我解决这个问题,谢谢!

    [/报价]

    我以前从未见过此错误。 我需要跟进工程

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4369958 #4369958"]嗨、Ki、我想问 CCS 中是否有其他方法可以读取两个断点之间的代码执行情况? 除了计数事件和启用时钟。

    如果您使用的是 SYS/BIOS、则有一些可用于性能分析的插入调用。 我对 SYS/BIOS 的了解有限、因此这是一个问题、最好分成另一个主题、并由器件专家(支持 SYS/BIOS)回答

    还有  

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4369958 #4369958"]我听说还有一个计算时间戳的循环分析器_getTimeStamp()函数? 如何使用它?[/quot]

    请参阅 :https://e2e.ti.com/support/sensors-group/sensors/f/sensors-forum/889677/iwr6843isk-ods-cycleprofiler_gettimestamp

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4370257 #4370257">测试后、我们发现在 cortex_R5_0内核下的文件中、断点停止后的时钟周期计数没有值。 但是、如果 C66xx_DSP 内核下的文件、在执行在断点处停止后、时钟周期计数具有一个值。  这是为什么? 它是原子核本身的内部机制吗?[/引述]

    AWR2943的 R5很可能没有配置文件时钟。 我已经看到其他器件也是如此。  

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="2210" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4371213 #4371213"]AWR2943的 R5很可能没有配置文件时钟。 我已经看到其他器件也是如此。  [/报价]

    我能够在 AWR2944 EVM 上进行测试、并可以确认配置文件时钟和事件计数器都在 R5上可用、看起来正常工作。

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

    ,抱歉,我们找到了原因、因为我们同时打开了配置中的时钟和时钟事件、导致时钟资源不足。 今天、我们使用配置中的时钟事件测试了两个断点之间的代码执行时间、但最终计算结果似乎并不正常、并且与估算值的偏差有点大。 我们在多个地方进行了测试、最后计算的时间有点短。 此时钟事件读取的时钟值是否准确?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4372202 #4372202"]哦,抱歉,我们找到了原因,因为我们同时打开了配置中的时钟和时钟事件,导致时钟资源不足。

    啊、好的。  

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4372202 #4372202]今天、我们在配置中的时钟事件测试了两个断点之间的代码执行时间、但最终计算结果似乎不正常、与估算值的偏差有点大。 我们在多个地方进行了测试、最后计算的时间有点短。 此时钟事件读取的时钟值是否准确?[/quot]

    报告的周期计数应该非常准确。 对于具有深海像素和高速缓存的器件、有一些注意事项、但如果您获得两个点之间的周期计数、它应该相当接近。

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

    Ki,好久不见了,我们最近用脚本重试了两个断点之间的时钟读取代码执行时间函数,脚本读取的时钟周期值与我们在 CCSIDE 上手动读取的时钟周期计数有很大不同。 我们的脚本执行结果和脚本内容如下、您能帮助我们检查脚本是否正确吗? 是否有任何方法来验证通过执行脚本获得的结果是否正确?谢谢!

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4390545 #4390545"]我们的脚本执行结果和脚本内容如下所示,您能帮助我们检查脚本是否正确吗?

    我相信 readClock 是您的自定义命令、它基本上会将 DSS API称为"runBenchmark"。 是这样吗? 如果是、则您的客户端脚本看起来正常。 我不能赞扬您对 readClock 命令的执行、因为您没有证明该命令的来源。

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4390545 #4390545"]是否有任何方法来验证通过执行脚本获得的结果是否正确?谢谢!

    在服务器脚本运行时打开 IDE 可见性。 这样,您就可以直观地查看脚本运行时发生的情况:

    https://software-dl.ti.com/ccs/esd/documents/dss_launching_ccs_from_dss.html

    这对于调试脚本非常有用、我实际上是这样做的、目的是找出您最初遇到的问题、即目标在运行 runAsych 后为什么停止

    创建 scritping 实例后、您可以在 TestServer 函数的"TestServer.js"脚本中添加此行以启动 IDE。

    谢谢

    Ki

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

    是的、readClock 是我的自定义命令、它基本上会调用 DSS API" runBenchmark"。 断点是否由 add.breakpoint API 在脚本硬件断点上添加? 因此、在启动时钟事件时、我需要先删除第一个断点、然后再添加第二个断点。 之后、我在添加第二个断点之前重试了删除第一个断点、时钟周期的值看起来更正常。 如您所说、我明天会再试一次、感谢您的帮助。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4391290 #4391290"]是否由 add.breakpoint API 在脚本硬件断点上添加断点?

    假设调试存储器映射配置正确、则会出现这种情况。 如果不是、您会收到一条失败消息。

    请记住、runBenchmark 只需运行到下一个断点并返回 cycte 计数。 修改脚本、以便在调用 readClock 之前以及之后读取 PC、这样您就可以从正确的地址计算周期数。 我认为读取寄存器没有测试服务器命令、您需要使用 DSS 来实现它。

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

    什么是 PC? Computer?我记得官方文档中说、当时钟事件打开时、一次只能添加一个硬件断点。  当时钟事件打开时、我们在 CCSIDE 上手动调试、在目标在断点处停止后、我们将删除断点、重新添加第二个断点、 然后再次运行目标板、当目标板在第二个断点停止时、时钟周期计数读取是两个断点之间的时钟周期、是这样吗? 如果是这种情况、正如我所理解的、当我在脚本上添加一个断点并调用 runBenchmark API 时、目标板会在我添加的断点处运行并停止、对吧? 或者、在我调用 runBenchmark API 之前、目标板是否在断点停止?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4391375 #4391375">什么是 PC? [/报价]

    程序计数器。 它是一个寄存器、具有程序计数器当前位置的地址。 您可以在"Register"视图中看到它

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4391375 #4391375"]我记得官方文档中说,在打开时钟事件时,每次只能添加一个硬件断点。

    这取决于器件、因为配置文件时钟将使用硬件断点资源。 某些器件(如旧版 C2000器件)只有两个资源。 其他器件/CPU 可能具有更多。 C6000和 ARM 上应该有两个以上。

    [引用 userid="532634" URL"~/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/1135911/ccs-awr1843/4391375 #4391375"] 当时钟事件打开时、我们会在 CCSIDE 上手动调试、目标在断点处停止后、我们将删除断点、重新添加第二个断点、 然后再次运行目标板、当目标板在第二个断点停止时、读取的时钟周期计数是两个断点之间的时钟周期、是这样吗?

    请注意、在 CCSIDE 内部、系统配置时钟将默认保持累积计数。 它在运行之间不会复位。 因此、如果时钟被启用、然后运行到一个断点、配置文件时钟将存储从启用时到到达第一个断点时的周期计数。 因此、如果您设置第二个断点并运行到该断点、则会将断点之间周期计数的值与从启用时钟到第一个断点的原始值进行添加。 双击时钟可将其复位。 您还可以调整时钟属性、以便在每次运行前自动重置。 默认行为是保留累积计数。