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:python 中多核测试的 DSS 脚本:使用非侵入式断点在内核之间发出信号

Guru**** 2589280 points


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

https://e2e.ti.com/support/tools/code-composer-studio-group/ccs/f/code-composer-studio-forum/612372/ccs-dss-scripting-of-multicore-test-in-python-using-non-intrusive-breakpoints-to-signal-between-cores

工具/软件:Code Composer Studio

我正在修改 MCPI 测试框架通用代码中的一些 python DSS 脚本以进行多核测试、并可以使用一些帮助了解如何使用断点在内核之间发出信号。  在一个测试中、我们尝试让从内核异步运行、直到它达到准备好让另一个内核开始写入的点。  我要查看的断点的使用是用于非内部断点以生成一种事件、然后我可以在该事件之后开始运行主内核。  从器件中有一个 slave_ready 位置、我可以观察该位置是否触发断点。

我有两个问题。  

首先、在断点属性上设置的字符串中、似乎有"Debugger Response.Action.Start Address"、"myDataSymbol"等命令。

请参阅 、例如 http://processors.wiki.ti.com/index.php/Breakpoint

bpProperties.setString("Debugger Response.Action.File"、outputFile);
bpProperties.setString("Debugger Response.Action.Format"、"Hex");
bpProperties.setString("Debugger Response.Action.Start Address"、"myDataSymbol");

什么是 Debugger Response 类、在哪里可以找到它的参考?  另外,什么是 Response.Action 类?  我在 CCSv7附带的 DSS API 参考中找不到它。  这些 Java 类是否属于 DSS API?  它是在 CCS 内核代码中吗?  它是否是 Eclipse 的一部分、因此实现 Java 代码是开放源码、我可以查看它吗?

其次、 在过去的这篇文章中、海报描述了检查"PC"以确定已触发的断点是否为他/她期望的断点 、然后他/她开始执行 javascript。  我想知道是否有人可以解释"PC"的含义以及该人的流程。

此外、任何建议或指示都将非常有用。

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

    您好、Annette、

    [引用 user="Annette Keller"] 我正在查看的断点的使用是用于非内部断点以生成一种事件,然后我可以在该事件之后启动主内核运行。

    您使用的确切目标是什么?CPU 是从器件和主器件?

    [引用 USER="Annette Keller)]什么是调试器响应类,在哪里可以找到它的参考?  另外,什么是 Response.Action 类?  我在 CCSv7附带的 DSS API 参考中找不到它。  这些 Java 类是否属于 DSS API?  它是否在 CCS 内核代码中?[/quot]

    遗憾的是、我不认为他们在任何地方都有完整的文档记录。 它是 CCS 内核代码。 如 wiki 中所述、了解哪些选项可用的最佳方法是查看断点属性对话框。 如果您使用 printProperties API、您还应该获得器件的可用列表以及简短说明(我认为)。

    [引用 USER="Annette Keller]其次 、在这篇过去的文章中、海报描述了检查"PC"以确定已触发的断点是否为他/她期望的断点 、然后他/她启动 javascript。  我想知道是否有人可以解释"PC"的含义以及该人的流程。


    PC =程序计数器

    该线程的 OP (原始海报)要求在触发特定断点时调用 javascript 函数。 当目标被暂停时、可以检查程序计数器以查看地址是否与所提到的断点的地址相匹配。 如果是、则他们可以让 DSS 脚本调用一些用户定义的函数。 我建议的另一个选项是让断点调用自定义 GEL 脚本。 您实际上可以通过断点属性来配置它:

    VAR bpProps2 = session.breakpoint.createProperties(1);

    bpProps2.setString("Miscellaneous.Name"、"Breakpoint");   //必须选择断点
    bpProps2.setString("Hardware Configuration.Location"、0x500);   //在 PC 地址处破孔

    bpProps2.setString("Debugger Response.Action"、"Execute Expression (GEL)");
    bpProps2.setString("Debugger Response.Action.Expression"、"GEL_DriverString (\"SIM_Exception、on\")");  //设置要执行的 GEL 命令

    谢谢

    Ki

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

    您好 Ki、

    非常感谢您的回答

    > 您使用的确切目标是什么?CPU 是从器件和主器件?

    我有毫米波 SOC:ir1642 (从器件)和 ir1443 (主器件)。

    我们在 python 中工作、中提供的文档似乎是可用的 /ccsv7/ccs_base/scripting/docs/ds_API 适用于 JavaScript、与我们对 DS API 的超薄 python 实现不匹配。  例如,对于 DebugSession 对象,我找不到读取内存的方法,即使 DS API 文档将“MEMORY”列为 DebugSession 的属性,而 MEMORY 具有 ReadData()方法。 当我尝试调用它时、我会得到一个错误。  我可以在 DebugSession 对象中看到 MEMORY 属性、但当我列出 DebugSession 实例的 MEMORY 属性的属性时、不存在诸如 ReadData()之类的方法。  因此、我不确定 DS_API 的 python 实现是否完整。  

    我们只能使用 DSS.py 文件中的 DSSExecuteTestcase 类来读取存储器、该文件随德州仪器的 MCPI 测试框架1.2一起分发。  它仅执行在 dss.py 中实现的函数。  DSSExecuteTestcase 类具有读取或写入存储器的函数、但只能通过与 Java 的 python 连接(称为 py4j (www.py4j.org))来执行命令。  因此、我们的 python 实现脚本中的所有 DSS 命令都是通过 py4j 网关执行的、但我们的方法是尝试使用单个 DebugSession 对象(在这些对象上、我们没有向我们公开读取/写入方法)。

    如果无法从 DebugSession 对象中读取存储器位置、我不确定如何在主器件和从器件之间发出信号、而无需为每个器件打开新的网关、因为我无法访问 DebugSession.Memory 读取和写入函数。  因此、我一直在研究使用非侵入式断点和引发事件来观察 slaveReady 读取并发出信号。

    >该线程的 OP (原始海报)要求在触发特定断点时调用 javascript 函数。 当目标被暂停时、可以检查程序计数器以查看地址是否与所提到的断点的地址相匹配。 如果是、则他们可以让 DSS 脚本调用一些用户定义的函数。 我建议的另一个选项是让断点调用自定义 GEL 脚本。 您实际上可以通过断点属性来配置它

    感谢您的解释和建议、ki。

    Annette

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

    [引用 user="Annette Keller">我们正在使用 Python、中提供的文档似乎是可用的 /ccsv7/ccs_base/scripting/docs/ds_API 适用于 JavaScript、与我们对 DS API 的超薄 python 实现不匹配。  [/报价]

    JavaScript 是我们在 DSS 中正式支持的语言。 尽管可以 通过 Jython 在 DSS 中使用 python

    [引用 user="Annette Keller">例如,对于 DebugSession 对象,我找不到读取内存的方法,即使 DS API 文档将“MEMORY”列为 DebugSession 的属性,而 MEMORY 具有 ReadData()方法。 当我尝试调用它时、我会得到一个错误。  我可以在 DebugSession 对象中看到 MEMORY 属性、但当我列出 DebugSession 实例的 MEMORY 属性的属性时、不存在诸如 ReadData()之类的方法。  因此、我不确定 DS_API 的 python 实现是否完整。  [/报价]

    我能够通过 Jython 使用存储器对象。类似下面的内容应该在 python 脚本中起作用(假设 debugSession指向 有效的开放会话)

    debugSession.memory.ReadData (0、addr、32)

    您看到了什么错误? 是否正确设置了类路径?

    谢谢

    Ki