OpenOCD Tcl 接口

问题描述

我正在编写一个 C# 应用程序,该应用程序将用于在生产过程中对 STM32 微控制器进行编程和测试。我想对芯片进行编程和验证,然后将一些配置写入闪存,最后设置读出保护。作为后端,我决定使用 OpenOCD 及其在端口 6666 上运行的 Tcl 接口。

问题:我能够执行命令并获得它们的结果,但我不知道如何检查命令是否成功执行。例如。 <a href="https://stackoverflow.com/" class="fa fa-link"></a> 命令返回空字符串,无论目标是否连接...成功与否。

谢谢你的想法。

解决方法

假设您的 Tcl 代码在其核心部分执行 sendBack [eval $script],您可以将其更改为:

set code [catch {eval $script} result]
sendBack [list $code $result]

甚至这个:

set code [catch {eval $script} result options]
sendBack [list $code $result $options]

您需要在另一侧打开该列表。第一个元素是结果代码(0 表示成功,1 表示错误,理论上还有一些其他元素,但您可能不会看到它们),第二个是结果值或错误消息,第三个(如果您使用第二个)代码片段)是一个选项字典,可以包含各种对调试有用的东西(包括结构化错误代码、堆栈跟踪等)


传回完整的结果元组是将整个结果从一个上下文转移到另一个上下文的方式。许多用于 Tcl 的远程调试工具使用几乎完全相同的技巧。