OpenOCD provides on-chip programming and debugging support with a layered architecture of JTAG interface and TAP support