c# - OpenOCD Tcl 接口
问题描述
我正在编写一个 C# 应用程序,该应用程序将用于在生产期间对 STM32 微控制器进行编程和测试。我想对芯片进行编程和验证,然后将一些配置写入闪存,最后设置读出保护。作为后端,我决定使用 OpenOCD 及其在端口 6666 上运行的 Tcl 接口。
问题:我能够执行命令并获得结果,但我不知道如何检查命令是否成功执行。例如,reset
无论目标是否连接,该命令都返回空字符串......其他一些命令,如mdw
返回数据或错误字符串,但我正在寻找一些通用方法来检查命令是否成功。
谢谢你的想法。
解决方案
假设你的 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 的远程调试工具使用几乎完全相同的技巧。
推荐阅读
- swift - XIB 无法从主包中加载。.... 为什么?
- google-text-to-speech - 使用 Google Text to Speech 暂停或中断
- c# - 使用 RestSharp 方法时,Visual Studio 中断
- python - 根据“好”或“坏”输入选择随机行
- node.js - 在开发中使用自定义电子协议
- sql - 递归 CTE 以获得顶级结果
- pandas - 在 Pandas 中将我自己的日期分配给格式为 HH:MM:SSS.000 的日期列
- python - 尝试检查用户输入是否为整数,然后运行 while 循环
- python - 如何用空单元格的情况解析数据
- jquery - 我无法使用 HideSeek 定位“标题”属性