la interfaz usb en un arduino te lleva al puerto serie avr, donde necesitas un cargador de arranque, etc. Usando la interfaz ISP o como lo llamen (creo que es SPI) puedes tomar el chip y recargar el cargador de arranque (puede tener limitaciones de fusibles). Supongo que depende del binario que está cargando y de dónde quiere cargar.
El protocolo del cargador de arranque a menudo se refiere a algún protocolo estándar (dentro del mundo avr), pero si realmente observa la fuente del cargador de arranque (bastante fácil de leer y seguir), encontrará que la mayoría de los cargadores de arranque apenas admiten ese protocolo y cada uno La encarnación tiene sus propias características. Me resulta más fácil simplemente mirar el protocolo utilizado por el gestor de arranque y no pasar mucho tiempo fuera de eso.
En cuanto a las otras interfaces de programación, el xmega tiene una interfaz interesante, pdi que no es difícil de usar, y existe la interfaz spi que utilizan otros dispositivos avr más pequeños. Ambos están documentados con los chips mismos.