
The Ardupilot guys have posted this brief tutorial on how to program the ATMega328p using the Bus Pirate and AVRDUDE software:
Connect the Bus Pirate and check that everything is working. You will need to use the same technique to locate the serial port name for the Bus Pirate that you use with Arduino. Note that if you are using the Bus Pirate in ‘native’ mode, use -c buspirate. You do not need to apply any power to the ArduPilotMega board. Bus Pirate supplies the necessary 3.3v.
Get an assembled Bus Pirate for $30, including world-wide shipping. Also available from our friendly distributors.

Nice job :)
And for a Atmel Cortex M0+ ? :D
http://www.atmel.com/devices/SAM_D20J18.aspx
Nice to see a way to purpose the Bus Pirate like this.
But generally I recommend buying an “AVR Dragon” instead. No avrdude nonsense, fully compatible with AVR Studio, inline and socket HVSP capability (yest, change fuses), JTAG and ISP target support. Fifty bucks (USD). Worth every penny.
Please no replies to this post denigrating the Dragon. There is enough of that out “there” already.
If you’re serious about the likes of ATMEL’s MCU’s, the Dragon is the way to go at first start. NO it is not “fragile” as many say on the Web (just use common sense when interfacing). Early Dragon versions were a bit fragile, but current versions have been improved – don’t worry. Just use common-sense. Plus, ATMEL removed all memory limits in the Dragon for some time now, no longer “Crippled” by the likes of Marketing Goons.