Figuring Out the Bus Pirate

I've been reading here and there about the interesting things you can do with a JTAG interface on a piece of equipment. Wanting to experiment with JTAG (and with other hardware protocols) I picked up a Bus Pirate to see what the fuss was all about. I admit that I know very little about the Bus Pirate, but the idea of attaching wires from it to another device, and they monkeying around with it from a command prompt was just too tempting to pass up. I found a nice blog that covered getting started with a Bus Pirate and JTAG here at http://cybermashup.com/2014/05/01/jtag-debugging-made-easy-with-bus-pirate-and-openocd/. When I got to the "upload the firmware" stage I ran into trouble when it erased the firmware but wouldn't write to it.

Uh-oh. "Oh man, I just bricked it," I thought to myself. Well, I never really figure anything out until I break it and have to fix it.

Eventually I found that the magic to get the firmware update to work was to connect the PGD and PGC pins on the ICSP header on the board (and make sure that you don't have minicom connected to it hogging the USB connection.)

After that mishap I spent a lot of time figuring out how to get it to talk to an I2C device. I'll cover that later. I wanted to put this part down by itself in case another person is stuck in a similar jam and is googling: "bus pirate unbrick" or "bus pirate firmware upgrade fail"