HappyKillmore has been doing some tremendous work on solving tricky ArduPilot problems, from integrating the Remzibi OSD to his latest tutorial, unbricking a corrupted ArduPilot.
ArduPilot is meant to be programmed via the Arduino IDE, and comes with a preloaded "bootloader" that allows it to communicate with that software. Meanwhile, the failsafe processor (an Attiny45) is not meant to be programmed by regular users at all (it also comes with the code loaded at the factory).
But sometimes things can go wrong, corrupting either that bootloader or the failsafe code (causes can range from power glitches to cosmic rays!). When that happens, you need a different process to reload this low-level code, and that requires an AVR programmer such as the AVR ISP 2.
HappyK's tutorial is an excellent step-by-step illustrated guide on how to use that with ArduPilot. Highly recommended!
Comments
http://www.fourwalledcubicle.com/ButtLoad.php
features
Unlike other programmers, ButtLoad allows you to store a complete application into the on board Dataflash for later retrieval or computer-less programming. That means you can program your AVRs without the necessity of a computer after the initial storage!
$20, works fine with WinAVR, has an extra Uart, and some o-scope functions.
Since they are cheap enough, I have several hard mounted to my robots/drones. Never had a problem with any.