JTAG Virtual Communication Channel
DebugJet supports an advanced protocol to enable communication between target and host applications using the target processor JTAG port. This allows an application running on the target system, such as a data logging or a monitor application, to send and receive data with an application, such as a data viewer, running on a host computer. DebugJet allows up to 4 concurrent channels to be active at the same time for multiple communication links.
The DebugJet communication channel is a memory based channel that the user maps to the target memory space during the compile process. The user can also configure the operation of the channel, if the default setup is not suitable, to allow the user a wide variety of operations such as interrupt driven communication, data buffer size or communication bandwidth and speed.
EmuTec offers a comprehensive software library to facilitate such operation on the target system. The library, written in "C", offers simple I/O functions such as send and receive data, check for data or buffer availability as well as setting up and initiating the communication channel.
On the host side, an application can communicate with DebugJet target server using a TCP/IP port to send and receive data. Optionally, a dynamic link library can be used to allow a host application to communicate with an application running on the target system directly without the need to use the target server application to achieve higher bandwidth.
Since the communication channel is memory based, DebugJet must access target memory space to facilitate the data transfer. If the CPU allows DebugJet to access the memory space via the JTAG port while the CPU is running, DebugJet will utilize this feature. Otherwise the target CPU must be stopped to access the target CPU memory space.
To avoid stopping the target CPU while accessing the memory space using the JTAG port, a PROMJet with an ICE option can be used. This allows accessing target processor memory without stopping the CPU since the JTAG port will not be used for such access. DebugJet will automatically redirect channel traffic through PROMJet and facilitate the communication functions without stopping the target CPU.
Some CPUs, such as ARm7 and ARM9 offer a JTAG register that can be accessed from the host and target side without stopping the CPU. DebugJet also offers a driver for such setup but it has a limited bandwidth since it can only transfer one word at a time.
The diagram above shows a basic setup for such a virtual communication channel. Once the target applications initializes the communication channel, the host application can start sending and receiving data with the target application. The data will go over the JTAG port or optionally over the PROMJet link if available and then over DebugJet link (USB or Ethernet) to the DebugJet host server. Since DebugJet target server uses a TCP/IP port to communicate, the host application can reside on the same or a remote computer.
Allow host and target applications to send and receive data over a JTAG link.
Fully integrated with PROMJet to use its ability to access memory on-the-fly without stopping the target CPU.
Multiple concurrent channels can operate at same time and even during a debug session.
Target and host libraries are available to directly integrate with customer applications.
Supports target processor abilities to access memory on-the-fly if permitted.
DebugJet Virtual Communication Channel software is available for free download from the support section.