Debug port
A debug port is a chip-level diagnostic interface (akin to a computer port) included in an integrated circuit to aid design, fabrication, development, bootstrapping, configuration, debugging, and post-sale in-system programming. In general terms, a debug port is not necessary for end-use function and is often hidden or disabled in finished products.

When constituted in a high availability or safety critical system, a debug port may continue to operate as a system monitor for integrity validation in the finished product. In low-cost or high-volume electronics, debug ports are sometimes left enabled to avoid costs of design changes, and can be used by modders and hackers to gain control of the device and/or access to extra functionality.

Due to their high complexity, debug ports are nearly universal in microprocessors (CPUs) and microcontrollers (MCUs). These are discussed below.

Hardware debug ports

 Ubiquitous JTAG ports on ICs
 Low Pin Count debug port on the original Xbox, used by modders
 Serial Wire Debug (SWD), ubiquitous on Arm Cortex-M microcontrollers
 Background Debug Mode interface (BDM)
 Program and Debug Interface
 Nexus debug

Debug ports on microprocessors

Microprocessors are exceptionally complex devices which commonly contain more than a billion transistors internally and sometimes exceed more than one trillion.

Debug ports on microcontrollers

Microcontrollers are generally smaller than mainstream CPUs, but have now evolved so far into system on a chip (SoC) territory, that an MCU can be nearly the only complex chip remaining on an end-use application board (with additional chips devoted to specialized electrical functions such as level shifting and enhanced ESD protection).

SoC MCUs usually internal flash memory as a program store and may also contain internal EEPROM-based configuration fuses whose correct configuration is essential to the MCU powering up in the correct operating mode; the debug port may be the only way to initially configure the clock tree or to load the first software program post-manufacture.

USB Device Firmware Upgrade

Since around 2010, a broad class of MCUs now have integrated USB peripherals with device firmware upgrade (DFU) in factory ROM. This class of MCUs appeals to hobbyists who do not wish to invest in the hardware tools needed to access specialized debug ports such as JTAG.

These devices are designed to be resistant to being bricked. A bad firmware load is easily recovered by holding a special pin in the active state, which caused the chip to boot up using its internal factory ROM, which makes a programming interface available through its build-in USB controller. DFU can be viewed as a form of debug port implemented in software rather than hardware. However, this largely defeats the debug functionality of a dedicated hardware debug port, as it is inherently fragile to debug software which also implements your debug interface—but only when functioning correctly.

See also

 electronic design automation
 in-target probe
 in-circuit emulation
 in-system programming
 board support package
 microprocessor
 microcontroller
 system on a chip

References

Hardware testing