请阅读【ARM Coresight SoC-400/SoC-600 专栏导读】
1.1 swj-dp.tcl 介绍
介绍之前我们先了解下什么是 SWJ-DP, SWJ-DP (Serial Wire JTAG Debug Port) 是 ARM CoreSight 架构中的一个重要部分,它提供了一个调试端口,允许调试工具通过 JTAG 或 SWD (Serial Wire Debug) 接口访问目标设备。
SWJ-DP 有以下主要特性:
- 可以通过 JTAG 或 SWD 接口进行访问,可以在这两种接口之间动态切换。这使得 SWJ-DP 可以在支持传统 JTAG 调试以及更简单、更省电的 SWD 调试之间进行选择。
- 集成了 DP (Debug Port) 和 AP (Access Port) 的功能。DP 用于管理调试会话和处理调试请求,AP 用于访问目标系统的内存和寄存器。这使得 SWJ-DP 可以提供对目标系统的全面调试控制。
- 支持多种类型的 AP,包括 MEM-AP(用于内存访问)和 JTAG-AP(用于 JTAG 链访问)等等。这使得 SWJ-DP 可以访问目标系统中的各种不同类型的资源。
在 OpenOCD 中,可以使用 jtag newtap
命令创建一个 SWJ-DP TAP:
jtag newtap <chip_name> <tap_name> -irlen 4 -ircapture 0x1 -irmask 0xf -expected-id <id>
然后,可以使用 dap create
命令创建一个 SWJ-DP DAP:
dap create <dap_name> -chain-position <tap_name>
在这些命令中,<chip_name>
和 <tap_name>
是你自己选择的名称,<id>
是 SWJ-DP 的 ID 码,通常可以从目标设备的数据手册中找到。
1.1.1 source [find target/swj-dp.tcl]
source and find commands,命令格式:
source [find FILENAME]
使用的规则:
-
find
命令和参数FILENAME是放在[]中,命令返回的是该文件的完整路径(文件名不要用‘#’,‘#’是TCL的关键字) -
source
命令使用find到的文件,并以把这个文件作为脚本执行。
1.1.2 调试传输协议选择 transport selec
OpenOCD 的 transport select
命令用于选择一个调试传输协议。在OpenOCD中,"transport"指的是用于连接调试器和目标设备进行调试会话的协议。
transport select 的一般格式如下:
transport select <protocol>
其中,<protocol>
是你希望使用的调试传输协议。OpenOCD 支持多种不同的协议,包括 JTAG、SWD (Serial Wire Debug) 和 cJTAG
(Compact JTAG)。你应该根据你的调试硬件和目标设备选择合适的协议。
例如,以下命令将选择 SWD 协议:
transport select swd
你应该在指定任何目标配置(如 target create 或 jtag newtap)之前执行 transport select 命令。如果不指定 transport select 命令,OpenOCD 将使用默认的协议,这通常是 JTAG。
在文件 tcl/target/swj-dp.tcl
可以看到 它的使用方法:
if [catch {
transport select}] {
echo "Error: unable to select a session transport. Can't continue."
shutdown
}
这句是 tcl 命令,不是 OpenOCD 的命令。
catch
是一个错误捕捉器。有 1 到 2 个参数:
- 第一个参数是“要执行的代码”
- 第二个(可选)是错误消息的放置位置。
CATCH 成功时返回 0
,失败时返回 1
。文章来源:https://www.toymoban.com/news/detail-827966.html
1.1.3 newtap 命令介绍
这段命令的含义是判断文章来源地址https://www.toymoban.com/news/detail-827966.html
到了这里,关于【ARM Coresight OpenOCD 系列 2 -- OpenOCD 脚本语法详细介绍】的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!