JTAG篇(5) OpenOCD 写入数据到TAP


OpenOCD为需要访问JTAG指令或数据寄存器的开发人员提供一些底层的控制命令,这些命令可以控制TAP控制器的状态转换的顺序。

  • drscan tapname [numbits value] + [-endstate tap_state]
    • tapname: 使用jtag newtap命令创建的TAP名
    • [numbits value]: 这个整体貌似可选(没有测试),vaule部分支持16进制和10进制,numbit指定需要传输的比特位数
    • [endstate tap_state]: 其中-endstate是选项, tap_state是一个枚举量,可供选择的状态名见下文
  • irscan [tapname instruction] + [-endstate tap_state]
    • [tapname instruction]: 这个整体也是可选的,可以不加,若输入时,tapname同drscaninstruction则与OpenOCD进行通信的JTAG TAP所对应jtag 命令编码(二进制码)
    • [endstate tap_state]: 同上
  • TAP state names (irscandrscan中tap_state可以选择其中一种)
    • RESET
    • RUN/IDLE
    • DRSELECT
    • DRCAPTURE
    • DRSHIFT
    • DREXIT1
    • DRPAUSE
    • DREXIT2
    • DRUPDATE
    • IRSELECT
    • IRCAPTURE
    • IRSHIFT
    • IREXIT1
    • IRPAUSE
    • IREXIT2
    • IRUPDATE

OpenOCD 配置文件

#interface_list
interface ftdi
ftdi_vid_pid 0x0403 0x6010

# ftdi_channel 0 is port ADBUS, ftdi_channel 1 is port BDBUS.
ftdi_channel 1

#adapter_name
transport select jtag
adapter_khz 10

# ftdi_layout_init data direction
ftdi_layout_init 0x0038 0x00FB
ftdi_layout_signal nSRST -oe 0x0040
ftdi_layout_signal TRST -oe 0x0010 -data 0x0010

ftdi_layout_signal led2 -data 0x0080 -oe 0x0080
ftdi_layout_signal led3 -data 0x0040 -oe 0x0040

set _CHINPNAME custom
jtag newtap custom tap -irlen 4 -expected-id 0x149511c5

init
#jtag_init
ftdi_set_signal led2 1
ftdi_set_signal led3 0


#verify_ircapture enable
#verify_jtag enable

#pathmove RESET  DRSELECT
foreach tapname [jtag names] {
    puts [format "TAP: %s\n" $tapname]
}

#irscan [EXTEST] + [-endstate RUN/IDLE]
#irscan [tap EXTEST] + [-endstate RUN/IDLE]
irscan custom.tap 0x8  -endstate RUN/IDLE
drscan custom.tap 16 0x1234 -endstate RUN/IDLE

JTAG TAP Controller

JATG篇(4)中展示的JTAG TAP中添加下面代码:

reg [63:0] input_shift_reg ;
always @ (posedge tck_pad_i or negedge trstn_pad_i)  begin
  if (~trstn_i) begin
    input_shift_reg <= 'h0;
  end else if(ir_debug && shift_dr_i)
    input_shift_reg <= {tdi_pad_i, input_shift_reg[63:1]};
end

Result

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值