Understanding JTAG Debugging and CMSIS-DAP

CMSIS-DAP (Cortex Microcontroller Software Interface Standard – Debug Access Port) is a debug interface standard defined by ARM. In the introduction to JTAG debugging – DAP, it mentions that an implementation of ARM ADI is called DAP, so does CMSIS-DAP with the DAP suffix mean it is an implementation of DAP? See the diagram from the official website below:Understanding JTAG Debugging and CMSIS-DAPIntroduction: CMSIS-DAP is the interface firmware for a Debug Unit that connects the Debug Port to USB. Debuggers, which execute on a host computer, connect via USB to the Debug Unit and to the Device that runs the application software. The Debug Unit connects via JTAG or SW to the target Device. ARM Cortex processors provide the CoreSight Debug and Trace Unit. CMSIS-DAP supports target devices that contain one or more Cortex processors.Since it connects to the Cortex’s CoreSight components via SWD/JTAG, it is not an implementation of ADI; it is a USB to JTAG firmware reference implementation. The code can be found at the following GitHub link:

https://github.com/ARM-software/CMSIS-DAP
A protocol specification and a firmware implementation that enables standardized access to Arm CoreSight Debug Access Port (DAP) for debugging embedded software programs.

The code is implemented in C language and includes the following files (screenshot):Understanding JTAG Debugging and CMSIS-DAPDue to the open-source firmware mentioned above, a JTAG hardware box can be implemented using a microcontroller + USB device chip, similar to the hardware box based on the FTDI chip mentioned in JTAG debugging – hardware box. One example is MCU-Link.MCU-Link developed jointly by NXP and Embedded Artists, is a powerful and cost-effective hardware debugger compatible with third-party IDEs that support the CMSIS-DAP protocol. It uses the LPC55S69 chip (produced by NXP, featuring a dual-core Cortex-M and two USB interfaces), and the firmware running on this chip is modified from the CMSIS-DAP open-source project:Understanding JTAG Debugging and CMSIS-DAP

Leave a Comment