创建 JTAG 序列对象。
语法
jtag sequence
创建 JTAG 序列对象。描述:jtag sequence 命令会创建一个新的序列对象。创建后,此序列为空。以下序列对象命令可供使用:
sequence state new-state [count]
将 JTAG 状态机移至 <new-state>
,然后生成 <count>
JTAG 时钟。如果已给定 <clock>
并且 <new-state>
未处于循环状态(RESET、IDLE、IRSHIFT、IRPAUSE、DRSHIFT 或 DRPAUSE),那么状态机将移至 RESET 状态。
sequence irshift [options] [bits [data]]
sequence drshift [options] bits [data]:对处于 IRSHIFT 或 DRSHIFT 状态的数据进行移位。数据将被赋予最后一个实参,或者如果给定 -tdi 选项,那么根据给予 -tdi 的实参,数据将全部为 0 或 1。如果已指定 -register 选项,那么,<bits>
和 <data>
实参不用于 irshift。可用选项:
- -register
<name>
:按名称选择指令寄存器。仅限 irshift 才支持该选项。-tdi<value>
:将用于处于 SHIFT 状态的所有时钟的 TDI 值。 - -binary:
<data>
采用二进制格式,例如,来自文件的数据或者来自二进制格式的数据。 - -integer:
<data>
采用整数格式。数据的最低有效位首先移位。 - -bits:
<data>
采用二进制文本字符串格式。字符串中的第一个位首先移位。 - -hex:
<data>
采用十六进制文本字符串格式。字符串中的第一个字节的最低有效位首先移位。 - -capture:在移位期间和从序列运行命令返回期间捕获 TDO 数据。
- -state
<new-state>
移位完成后要进入的状态。默认为 RESET。
sequence delay usec
在序列命令之间生成延迟。延迟期间将不生成 JTAG 时钟。延迟保证至少达 <usec>
微秒,但对于不生成 JTAG 时钟的情况下就不支持延迟的电缆,则延迟可能更长。
sequence get_pin pin
获取 <pin>
的值。受支持的管脚因电缆而异。
sequence set_pin pin value
将 <pin>
的值设置为 <value>
。受支持的管脚因电缆而异。
sequence atomic enable
置位或清空原子序列。这可用于创建保证按精确时序运行(否则即告失败)的序列。原子序列应尽可能短,以最大程度降低失败风险。
sequence run [options]
针对当前选定的 jtag 目标按顺序运行 JTAG 操作。此命令将返回使用 -capture 选项的移位命令的结果和 get_pin 命令的结果。
以下列出了可用选项:
- binary:返回值采用二进制格式。移出的第一个位即返回的首个字节中的最低有效位。
- -integer:返回值采用整数格式。移出的第一个位即整数的最低有效位。
- -bits:返回值采用二进制文本字符串格式。移出的第一个位即字符串中的第一个字符。
- -hex:返回值采用十六进制文本字符串格式。移出的第一个位即字符串的首个字节中的最低有效位。
- -single:将所有返回值组合为单一数据。如果不使用该选项,那么返回值即为列表,列表中每个条目对应于含 -capture 的每次移位和每个 get_pin。
sequence clear
移除序列中的所有命令。
sequence delete
删除序列。
返回
JTAG 序列对象。
示例
set seqname [jtag sequence]
$seqname state RESET
$seqname drshift -capture -tdi 0 256
set result [$seqname run]
$seqname delete