There are two ways to program an AVR microcontroller. One is to reprogram the entire chip using an AVR programmer. The other is to use a bootloader that is pre-programmed onto the chip that allows the chip to re-program itself. An AVR programmer is more powerful: you can really mess with anything on the chip and the entire 32K of memory is available. Using the bootloader is safer: there's no way to mess with the fuse settings (which could brick the chip) but you only get 30K of memory since 2K is used by the bootloader. Not a big deal, but if you are working on a big project which requires tons of flash space, you may need it
Note that to program an AVR you need an AVR programmer (like a USBtinyISP ), but to upload using the bootloader you need a computer-serial connection (such as an FTDI cable). Unfortunately, they are not the same device! If you're not a microcontroller wiz, I suggest going with the bootloader (FTDI) method. Its as fast (or faster), allows you to debug as well, and theres virtually no way to damage/brick the chip by messing with the fuses. If you're familiar with microcontroller programming, and you have a programmer, then feel free to go that direction.
- AVR programmers are more powerful in that you can program any AVR, even blank ones from the factory. But that also means you have a pretty good chance of 'bricking' the chip!
- FTDI adapters can send any serial data back and forth including updating AVRs with a bootloader on them. But you need to get that bootloader on there first, which basically requires an AVR programmer.
If you use an AVR programmer to write to chip with a bootloader on it, you'll overwrite the bootloader so just be aware of that!