====== 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.