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.
您好!
我正在尝试 为我的代码创建插件。
在我的插件中、我需要制作变量的图形。
为此、我使用的是 Eclipse Committers 4.14、它可通过 CCS 10.1.1进行调节。
我的问题是、如何从 Eclipse Committers IDE 访问 TMS570LC4357上的变量。
我应该怎么做? 我不想使用串行通信、因为 UART 代码会减慢代码速度、所以在 Code Composer Studio 的"Expression"选项卡上直接访问变量至关重要。
我正在等待您的回复、
此致、
创建一个需要目标 JTAG 访问的 Eclipse 插件可能是一项艰巨的任务。 如果您正在寻找一个 GUI 来在目标存储器中绘制值、GUI Composer 可能是更好的选择?
https://dev.ti.com/tirex/explore/node?node=AHRqIjVQoVumrpNUHZ8-ZQ__FUz-xrs__LATEST
谢谢
Ki
您好、先生、
我曾尝试过您的建议、但在"TI 云代理"文档的"支持的器件"部分中、它说不包括 Hercules。
我的板是 TMS570LC4357、它是 Hercules。 先生、这不是问题吗?
此外、这种方法不适合我。 我不想 使用云系统。
有什么建议可供我参考?
谢谢、
此致、
我曾尝试过您的建议、但在"TI 云代理"文档的"支持的器件"部分中、它说不包括 Hercules。
我的板是 TMS570LC4357、它是 Hercules。 先生、这不是问题吗?
此外、这种方法不适合我。 我不想 使用云系统。
[/报价]啊... 是的、在 Hercules 上、您的选项更有限。 很抱歉、我没有在您提到该器件的地方输入您的线路。
GUI Composer 仍然是一个选项、但不太理想。 您仍然可以创建不使用 Cloud Agent 的 GUI Composer 应用程序、并生成不需要云的独立 GUI 软件包。 但是、这需要一个不使用 JTAG 的通信传输、例如 UART、您表示不想这样做。
嗯... 我仍然不认为创建 Eclipse 插件来通过 JTAG 与目标进行通信是有效的。 如果定制 Eclipse 插件不尝试访问调试器(或目标)、则它们可以正常工作。 我认为创建自己的与 DSS 连接的自定义应用程序可能是最佳选择(请参阅下面我的旧文章中提到的选项3):
谢谢
Ki
我搜索了 DSS,它太棒了!
就像我想找的一样、非常感谢!
但是、在"C:\ti\ccs1011\ccs\ccs_base\scripting\docs\GetingStarted.html"文件中、我找到了一个 API 文档。
在 API 文档中、我找不到我的目标系列。 没有 TMS570。(在下图中、您可以看到。)
我认为我需要电路板的 CCXML 文件或其他东西吗?
为了使用此 DSS,我应该怎么做?
等待您的回复、
谢谢、
您好!
[引用 userid="4965AG39" URL"~/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1033261/tms570lc4357-code-composer-10-1-1-creating-plugin/3822572 #3822572">在 API 文档中,我找不到目标系列。 没有 TMS570。(在下图中、您可以看到。)[/quot]Hercules (包括 TMS570)绝对受 DSS 支持。 TMS470/570具有与 TMS470相同的支持、有时它们都集中在一起。
基本上、如果 CCS 支持目标、则 DSS 支持该目标。 CCS 和 DSS 在下面使用相同的调试引擎。
谢谢
Ki
谢谢 Ki、我正在尝试开发一个.js 程序、以便我能够访问并保存我的变量与内存。
在我一直在处理的 javascript 文件中、我可以在 main 函数上找到一个变量。 我无法访问其他.c 文件上的变量。
这是我的 JS 代码。
我在 CCS 代码上有一个变量 temp、然后在.js 文件中、我将像 myglobaldeclation 一样对其进行解密。
var myglobaldecleration = "temp" try { var address = debugSession.symbol.getAddress(myglobaldecleration) } catch (ex) { script.traceWrite(" address error"); quit(); // call custom quit routine to do some cleanup to gracefully exit the script }
请注意 、当调试器(通过 DSS)尝试访问变量时、变量(在目标上)必须在作用域中。 例如、当进行 symbol.getAddress 调用时、目标上的"temp"变量必须在作用域中。 是这样吗?
是的、就是这样。 但是、当我尝试使用 symbol.getAddress 调用通过 DSS 访问变量时、我只访问 mainc 函数中的变量。
我无法访问另一个变量、该变量位于代码中的其他 c 文件中。 我的意思是 DSS 尝试在 main 函数中查找该变量,当它找不到时,它将显示 catch 段,并提供“地址错误”。
我应该怎么做?
谢谢 Ki、
它听起来像是在调用 getAddress API 时、目标上的程序处于"main"中、而其他变量超出范围(不在 main 中、也不是全局变量中)。
我的假设是否正确? main 中的目标和您尝试访问的变量是否是在另一个函数中声明的局部变量?
我编写了一个面向对象的 c 代码。 我正在使用 FreeRTOS。 我是说,在主函数中,我正在创建任务(事件)。 然后、我有另一个.c 项目、负责测量任务的某些方面。 在该.c 文件中、我有一个全局变量、该变量在函数上进行了解密。 它是普遍称为全局变量。 希望我能代表自己。
我无法通过 DSS 访问我创建的.c 文件中的全局变量、该文件包含一些测量函数。
也许我可以联系他们、比如在 RAM 上为该全局变量分配特定的存储器、然后读取该地址??
有什么建议吗?
谢谢、
创建变量后、您应该能够访问应用程序中的任何位置的全局变量。 我不知道 DSS 为什么无法获取它的地址。
您可以尝试在 CCS 中加载和运行程序、然后查看是否可以从表达式视图获取全局变量的地址、以及是否可以 从 脚本控制台运行 activeDS.symbol.getAddress ("temp")。
当然、您可以通过自己传递准确的地址来访问变量内容。
还可以!! 我可以从 Scripting Console 获取它的地址。 谢谢你。 如何读取通过脚本控制台知道其地址的变量的值?
我不知道应该向脚本控制台写入什么内容?
非常感谢、
DSS 和 Scripting Console 的工作方式相同。 它们都可以使用相同的 API 访问调试引擎。 假设在两种情况下加载相同的程序和调试符号、则应能够以相同的方式获取全局变量的地址。 实际上、您可以从脚本控制台"按原样"运行 DSS 脚本。 您能试试吗?
谢谢
Ki
您好 Ki、
我终于到达了我的全局变量。。。 非常感谢! 但我无法实时看到它。
如何管理?
谢谢、
您是否说问题是您必须停止目标以获取地址、并且您希望在目标运行时进行此访问?
在实时监控时、变量的值是否未显示预期变化的问题?
实时调试器使用 DAP 来读取存储器、而不是在暂停时读取 CPU。
由于 TMS570LC4357中的 Cortex-R5F 具有缓存、因此如果变量位于处理器缓存中、DAP 可能会看到"过时"值。 这在基于 Cortex-A 的器 件上是一个问题-请参阅 CCS/AM3359:CCS 表达式持续刷新问题、解决方法是更改代码以使需要实时监控的变量的缓存回写。
我不记得是否在启用了缓存的 Cortex-R5F 器件上执行过类似的测试。
Hİ μ A、
在我的程序缓存中已禁用。 因为我无法在 CCS 的表达式视图中看到我的变量。 调试服务器不会向我显示变量的实时值。 因为不提供实时一致性。
因此、在我的案例中、缓存已被禁用。 这不是为什么我看不到 DSS 的情况。
我认为这是因为 javascript 代码中的十进式部分、即:
long addressMain = debugSession.symbol.getAddress("main"); if (debugSession.memory.readRegister("PC") != addressMain) { int bp = debugSession.breakpoint.add(addressMain); debugSession.target.run(); }
可能是因为程序计数器。
或在该行中:
address = debugSession.symbol.getAddress("temp"); long myVariable = debugSession.memory.readData(Memory.Page.PROGRAM, address,32); System.out.println("My variable is : " + myVariable);
谢谢、
实际上、我要做的是"连续刷新按钮"在 CCS 中执行的操作、我希望在编写脚本时执行相同的操作。
提示:我的缓存已禁用,因此我不需要引起 Chester Gillon 在下面的链接中向我展示的一致性问题。
我尝试添加一个断点、然后它起作用了。 但是、由于我添加了软件断点、它使我的程序有点慢。 因此、我认为我需要使用硬件断点、尤其是观察点。
在 ti 安装目录中、我查看了示例、并找到了一个示例。
名称是:" C:\ti\ccs1011\ccs\ccs_base\scripting\examples\DebugServerExamples\MSP430F169_watchpoints.js "
我在我的代码中尝试过它、但它给了我错误;
由于代码是为 MP430编写的、因此其硬件配置不适用于我的 LaunchPad。
如何找到主板的硬件配置?
谢谢、
手动添加全局变量后、全局变量应在表达式视图中可见。
我不确定为什么您的变量无法显示在这里。
您应该能够实时访问全局变量、因为 DAP 将用于非侵入式存储器访问。 DSS 也应该是这种情况。
您能否 提供测试案例? 我只需要一个可以在目标上运行的简单示例以及一个简单的 DSS js 脚本示例。 请使代码尽可能通用。 它可以像更新 while 循环中的全局变量一样简单。
您能澄清一下:
1.使用的是哪种调试探针?
2.您是否在 CCS 表达式视图中报告了变量的任何错误?
3.变量是静态变量,文件还是函数作用域?
1)和2)请记住 、在不同的 Hercules 器件上、Segger J-Link 无法连续刷新-请参阅 TMDS570LS31HDK:如何连续观察观察表达式中的全局变量值?
如果变量为静态变量、请参阅 CCS/CC2640:如何查看静态变量
最简单的方法是通过 CCS IDE 根据需要设置观察点。然后、您可以查看 CCS IDE 中的观察点属性、并将其用作在 DSS 中创建断点属性对象的引用。 有关更多详细信息、请参阅用户指南中的以下部分:
https://software-dl.ti.com/ccs/esd/documents/users_guide/sdto_dss_handbook.html#breakpoints
谢谢
Ki