El gestor de arranque es un pequeño programa en el flash del AVR que nunca se sobrescribe y se ejecuta en el encendido. El trabajo del gestor de arranque es leer los datos del programa desde el UART y escribirlos en la memoria flash interna. Sin un cargador de arranque, la única forma de cargar código es usar ISP.
El AVR ATMega8 viene sin código en el flash. El código se puede cargar a través de los pines ISP (programación en el sistema), usando un programador AVR ISP (o incluso otro Arduino).
Para Arduino, el ISP se usa solo una vez (en la fabricación) - para cargar un cargador de arranque pequeño. En el encendido, el cargador de arranque se ejecuta y se comunica con el UART serie (pines TX + RX). Ahora, Arduino se puede programar a través de los pines serie utilizando el protocolo STK500.
Como los pines en serie están (normalmente) conectados a un FTDI USB a un chip en serie, el Arduino también puede programarse por USB.