The Bus Pirate can be used as an ARM JTAG debugger with OpenOCD. Joby Taffey set up the OpenOCD/Bus Pirate tool chain, and used it to work with a Stellaris LM3S9B90 (ARM Cortex-M3).
Get a Bus Pirate for $30, including worldwide shipping at Seeed Studio. Adafruit also has the Bus Pirate and probe cables in stock and ready to ship.
It does work on the Stellaris LM3S9B90. But, the picture is of a AT91SAM7X256 dev board from Olimex/Sparkfun.
It has also been tested with STM32 (Cortex-M3) :)
I had seen comments that JTAG support was missing in the lastest versions. Has this been rectified?
I’m looking to use this for JTAG’ing a DNS323 (ARM926EJ-S). Can anyone tell me what the appropriate pinouts should be from the bus pirate to the ARM JTAG interface? Seems like it is definitely not a straight through connection, based on the pictures above.
Please check the manual for JTAG:
I don’t know why you people keep referring to “The Manual” when all that is written is:
These features have been temporarily removed.
* JTAG (user terminal mode only, see OpenOCD support above)
What does that mean!?
Just face it, the BusPirate is NOT supporting JTAG without complicated/firmware modifications!
You’re totally right, the Bus Pirate is a slow serial port device intended for human-speed interaction. It was NEVER intended to do JTAG duties. Because it’s open source, cheap, and versitile, the community hacked various JTAG features into it. They’re great in a pinch, but no substitute for the real thing!
The Bus Pirate supports JTAG in three ways:
1. As a debugger using OpenOCD, the major source JTAG debug app (as shown here)
2. As a stand-alone XSVF player to program CPLDs/FPGAs. This requires a simple firmware swap. More details here:
3. The “bonus” firmware has the deprecated user terminal JTAG mode. This was moved from the main firmware because nobody used it, it isn’t particularly useful to enter JTAG commands manual, and OpenOCD support is MUCH more robust. Overview of the JTAG terminal mode here:
I’m sorry the documentation was inadequate, I freshened it with a summary of the info presented in this comment.
Well, thanks for surprisingly quick response!
a) But it is still not clear what is a “bonus” firmware? What’s the difference between “bonus” FW and the “main” (factory?) one that comes with the BPv3?
b) So what should I use if I just wanna read the boot-loader console messages from some router using the JTAG connector? (Which is why I bought the BPv3 in the first place.)
c) What if I need to respond to that boot-up process, for example, by pressing a key to stop default booting? Can I do this directly from the BP console or do I need to install OpenOCD or change the BP firmware?
Well my serial port is burnt so that’s why I need a JTAG to flash.
BUT you keep on stating the partial JTAG support, even though you have removed that support from the latest firmware release (5.10) that was shipped with my BPv3b! If you mean by “bunus” the 5.9+ “extras” file that can be downloaded. It is only available for the 5.9 release, as has been already stated in the JTAG forum. So please, either update the “extras” hex file or include OpenOCD terminal support in the next firmware edition.
“As of v5.2 the JTAG terminal library has not been ported to the v5+ branch. v5+ does include support for the OpenOCD debugger.” ==>
This is either wrong or a very confusing statement!
I’m sorry you’re having problems with the Bus Pirate and JTAG support. I understand your frustration, JTAG is a tough topic to tackle. I will do the best I can to help you, but please keep your discourse civil, this is an open source project developed and supported by volunteers.
I moved this to the forum. People experienced with JTAG in the Bus Pirate can also help. This is an old thread that nobody will see but me.
Please see my reply here:
Please see firmware:
And User mode documentation:
Usually the bootloader console is a serial UART connection, not JTAG. JTAG is a way of reading registers and pin states, or executing instructions, inside a chip core. As far as I know, there is no console concept for a JTAG chain connection, and never a place where content is displayed and user interacts. That said, JTAG just means a 4 wire connection (like SPI), manufacturers do whatever they want with it. In general, you need a debug tool like OpenOCD to debug the JTAG chain.
If it is a serial bootloader (much more normal) I would recommend the UART mode in the standard firmware. Perhaps with the serial bridge macro for user IO. See the UART documentation here:
There are several pass-through serial port/UART demos (look for UART keyword) here:
i have not understand what i have to upload to my pirate bus v3 bought from sparkfun: i need to use OCD or an other linux jtag app in order to put a firmware into a blackfin BF532 and BF537 board i am developing at. Is it possible or not ?
I have put the BPv3-frimware-v6.1.hex into the BFv3 but i can’t see any jtag support
i have also put the BPv3-Firmware-v5.9-extras.hex but i can’t see any jtag support
i am confused a bit, the BPv3-Firmware-production is not adding any jtag, too
could you explain, please ?
Hi, here is a crashcourse on using openOCD with the buspirate: http://dangerousprototypes.com/docs/Gonemad%27s_Bus_Pirate/OpenOCD_walk_through
You can also visit our forum, there is a dedicated openocd (jtag) forum: http://dangerousprototypes.com/forum/viewforum.php?f=27
Your email address will not be published. Required fields are marked *
Notify me of followup comments via e-mail. You can also subscribe without commenting.