OpenOCD
JTAG APIs

For new developers unfamiliar with the technology, OpenOCD JTAG Primer provides a brief introduction to the IEEE JTAG interface.

The OpenOCD JTAG library API covers several functional areas. The jtag core communicates through the minidriver API with either its full driver implementation (src/jtag/jtag_driver.c) or a minidriver . Internally, the command API is used by the JTAG driver for managing asynchronous transactions.

  • JTAG Core API
  • JTAG TCL API
    • private TCL handling routines
    • defined in src/jtag/tcl.c
    • registers and handles Jim commands that configure and use the JTAG core
  • JTAG Command API
    • private command queue API
    • declared in src/jtag/commands.h
    • provides routines used internally by the full JTAG drivers.
  • JTAG Interface API
    • private interface driver API
    • declared in src/jtag/interface.h
    • used by the core, minidrivers, and the full interface device drivers.
      • allows implementing new interface device drivers.
      • includes the Cable/TAP API (commands starting with tap_)
  • JTAG Minidriver API
    • private minidriver API
    • declared in src/jtag/minidriver.h
    • used only by the core and minidriver implementations:
      • jtag_driver.c (in-tree OpenOCD drivers)
      • future implementations (on other embedded hosts)
      • interface device drivers do not need this API.