I’ve just bought a pirate 6 bus and I’m wondering if it’s compatible with openocd. I’d like to be able to use jtag with it.
I’ve set up openocd with the file /usr/share/openocd/scripts/interface/buspirate.cfg but I don’t know if we need to go through a specific mode in BS6.
This support is for BusPirate v3 there is still work to he done for BPv5+ support. I am also waiting for that functionality in firmware and in openocd as I have one JTAG only device to hack
There are a few projects floating around the forum that port various JTAG firmware to the Bus Pirate 5 that are openocd compatible. However, they have not been updated to BP6.
This may be a good time to devise a way to maintain a library of alternative firmwares for all hardware versions. Anyone have any thoughts?
if we want an auto-compile type thing, I might suggest:
Fork the projects we want
Make the forks submodules in a single repo containing the pirate-lib (contents of the /src/pirate/ folder)
Have the build server compile everything in the repo of submodules
I will start to get this going, but any input is welcome.
Maybe this is slightly off-topic, but has anyone compared dirtyJTAG, or the Buspirate-port of the Raspi debugprobe, to yapicoprobe?
yapicoprobe hasn’t been ported to the BP yet afaik, and it doesn’t yet work with the RP2350, but the features it offers look quite nice to me.
It already has a dedicated CDC serial channel that is used to control and configure it. So when used on the BP hardware this could be used to set the target voltage, read out the current as part of debugging and similar things.
With the right configuration it should work on 5 and 6. It needs to be updated with the /pirate/ drivers to use the buffered IO, which is a quick port.
Yapicoprobe looks fantastic! However, it is an SWD probe, not a JTAG probe. I think both interfaces are needed. dirtyJTAG has been primarily used for FPGA programming (using OpenFPGALoader) and non-ARM processors debugging.
On a related note, if there is an interest for the cJTAG interface, I can track down the repo of someone who adapted dirtyJTAG to build a bespoke cJTAG probe
Any thoughts on how to implement and centralize this? It’s not a problem to port (almost) any existing RP2040 project to the Bus Pirate (assuming enough pins). I’m just not sure how to package all that up in a neat way.
I can work on something like this. Any obvious pitfalls?
Of course there are pitfalls. Every choice has pros and cons. However, your proposed design follows some good practices.
Note: Might be a good time to create an organizational account.
To see a good implementation of this, check out the flipper zero’s app repo.
That sort of setup has a significant advantage that may not be immediately obvious: If there’s a need to change an API in the pirate lib, you immediately know if it breaks the builds for those apps. It also provides you a way to contact potentially impacted folks before making such changes to the pirate lib … so they can give input / avert disaster if they’d be impacted.