====== Details of Using OpenOCD ======
OpenOCD starts with a board configuration file. Therein, a configuration file for the processor, the debug interface and a file with initialization sripts can be found.
===== Scan Chain =====
Our scan chain contains the PL (programmable logic) and the PS (processing system).
Open On-Chip Debugger 0.10.0
Licensed under GNU GPL v2
For bug reports, read
http://openocd.org/doc/doxygen/bugs.html
srst_only separate srst_gates_jtag srst_push_pull connect_deassert_srst
adapter_nsrst_delay: 40
Info : auto-selecting first available session transport "jtag". To override use 'transport select '.
adapter speed: 1000 kHz
adapter speed: 10000 kHz
Info : ftdi: if you experience problems at higher adapter clocks, try the command "ftdi_tdo_sample_edge falling"
Info : clock speed 10000 kHz
Info : JTAG tap: zynq_pl.bs tap/device found: 0x13722093 (mfg: 0x049 (Xilinx), part: 0x3722, ver: 0x1)
Info : JTAG tap: zynq.dap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Info : zynq.cpu0: hardware has 6 breakpoints, 4 watchpoints
Info : zynq.cpu1: hardware has 6 breakpoints, 4 watchpoints
TapName Enabled IdCode Expected IrLen IrCap IrMask
-- ------------------- -------- ---------- ---------- ----- ----- ------
0 zynq_pl.bs Y 0x13722093 0x23727093 6 0x01 0x03
0x13722093
0x03727093
1 zynq.dap Y 0x4ba00477 0x4ba00477 4 0x01 0x0f
===== Using Telnet Terminal =====
Usually, deep will open a telnet connection to the OpenOCD server running on the host (through the OpenOCDinterface). For testing purposes it is convenient to open a second telnet connection, e.g. with a terminal program such as Putty.
===== Targets =====
The PS includes two targets, //zynq.cpu0// and //zynq.cpu1//. These can be listed with the command ''targets''.
TargetName Type Endian TapName State
-- ------------------ ---------- ------ ------------------ ------------
0* zynq.cpu0 cortex_a little zynq.dap running
1 zynq.cpu1 cortex_a little zynq.dap running
The star denotes the current target, e.g. the ''reg'' command will list all registers. To list the registers of cpu1 you have to change the current target with ''targets zynq.cpu1''.
When halting the running targets with ''halt'', the state of the two targets are listed in the console, e.g.
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x60000113 pc: 0x00101834
MMU: disabled, D-Cache: disabled, I-Cache: disabled
target halted in ARM state due to debug-request, current mode: Supervisor
cpsr: 0x60000193 pc: 0xffffff34
MMU: disabled, D-Cache: disabled, I-Cache: disabled
The output shows the state of the two targets.
The first three lines always show the state of the current target, the next three lines the other target. If cpu1 is current, its state will be listed first followed by the state of cpu0.
===== Problems =====
Bad USB cable connections can lead to errors such as
Info : accepting 'telnet' connection on tcp/4444
Info : JTAG tap: zynq_pl.bs tap/device found: 0x13722093 (mfg: 0x049 (Xilinx), part: 0x3722, ver: 0x1)
Info : JTAG tap: zynq.dap tap/device found: 0x4ba00477 (mfg: 0x23b (ARM Ltd.), part: 0xba00, ver: 0x4)
Warn : zynq.cpu0: ran after reset and before halt ...
Warn : zynq.cpu1: ran after reset and before halt ...
Error: DSCR_DTR_RX_FULL, dscr 0x4b086003
In such a case, try another cable.