I am trying to use the OpenOCD functionality of a BusBlaster to debug a MIPS target. However, it doesn't look as though my target MIPS chip is defined in the list of sample target chip configurations - in my directory for OpenOCD, version 0.7.0, I am looking in the tcl/target folder.

  1. How mature is the MIPS EJTAG functionality in OpenOCD? I see in the changelog that MIPS EJTAG support has been improved, but am having trouble finding details in the project about this and I don't yet have the familiarity with OpenOCD or EJTAG to understand what might be missing from the src/target/mips_ejtag files.
  2. What configuration steps are involved in setting up OpenOCD to do JTAG debugging on a new MIPS EJTAG target?
  • Any new hints on this subject? BusBlaster has a new VID/PID and even correcting those, I still cannot "halt" the MIPS-4KEc device. Thanks! Francisco
    – Francisco
    Mar 28, 2019 at 21:04
  • 1
    The answer form may only be used to post answers, not to ask questions. Typically you need to have some key information about your target, especially the register lengths. And if you're trying to load your own code, you typically need to know things like how to configure the DRAM controller and clocking, etc. For one SoC the module vendor sent me a command file for some proprietary tool that was intelligible enough to manually translate into an openocd script. Mar 28, 2019 at 21:10

1 Answer 1


I am going to take a stab at answering my own question, and may update the answer in the future with additional details about OpenOCD.

There are some things that I did not understand about the Bus Blaster and there are some things that I did not understand about OpenOCD, and in both cases reading the documentation better would have helped. I ended up compiling OpenOCD from source under Ubuntu.

The user documentation for OpenOCD is available on the OpenOCD website, and the instructions for creating configuration files are located here. There are three types of configuration files:

  • Interface. This is the configuration file which describes the device OpenOCD is connecting with - in my case, a Bus Blaster. The configuration file busblaster.cfg is located in the openocd-0.7.0/tcl/interface/ folder. Also, someone described the configuration file online on the BusBlaster OpenOCD guide. OpenOCD version 0.5.0 and older don't include the configuration file for the Bus Blaster.
  • Board. This is a configuration file which describes setup particular to the PCB you are connecting to - for example, details about external flash go in this file.
  • Target. These are details about the target processor, in my case a MIPS32 processor. MIPS32 is a variant of MIPS M4K. OpenOCD supports both of these, and the documentation says that MIPS32 is the only supported variant of MIPS M4K. If you allow OpenOCD to autoprobe, which it does if no target is specified, OpenOCD will produce lines like the ones below that describe a new TAP that could be created.

Warn : AUTO auto0.tap - use "jtag newtap auto0 tap -expected-id 0x???????? ..." Warn : AUTO auto0.tap - use "... -irlen ?"

You can use the autoprobed TAP lines to create a new target file in openocd-0.7.0/tcl/target. In addition to those lines, add a line declaring a new target (I borrowed this from another target configuration) specifying which architecture and variant it is when creating the TAP.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.