Hello All,
I have a design with multiple CPU JTAG TAPs. OpenOCD supports them just fine and GDB can access the information it needs.
However, I would also like to add other JTAG TAPs on the same JTAG chain that support completely different functionality. Possible examples are: a TAP to scan out debug information, a JTAG UART to implement a console etc.
An external client such as a debug status windows or a console application would need to continuously monitor those additional TAPs, in addition to still being able to run GDB.
Since OpenOCD is the master JTAG server that drives the physical JTAG dongle, one way or the other, I will need to tell OpenOCD to issue the correct JTAG instructions to the correct TAP and fetch the information that I need.
Which leads to my question: how does OpenOCD arbitrate between multiple servers?
In the current implementation, OpenOCD already has 3 servers with TCP/IP endpoints: GDB server, telnet server, and tcl server.
When a program is up and running on GDB, GDB will continuously operate the JTAG interface to check the execution state. While this is happening, I can also still issue OpenOCD commands through telnet.
What does OpenOCD do to select between these two servers and how does it prevent the two servers from stepping on each other’s toes?
Second question: how would you as an expert go about implementing the system that I need?
I’m currently thinking of writing a python script that ties in to the tcl server. Is that a workable approach?
Thanks!
Tom