Stap 2: Un poco de teoría... Bootloader (gestor de is)
Como se mencionó anteriormente, dentro de la memoria de programa Flash del microcontrolador trevlig nl las placas Arduino viene pregrabado un pequeño programa llamado "bootloader" o "gestor de verzorgen" que resulta imprescindible para un cómodo y fácil manejo de la placa nl cuestión. Este software (también llamado "firmware", porque es un tipo de software que raramente se modifica) ocupa nl la placa Arduino UNO 512 bytes de espacio nl VN-apartado o sección especial de la memoria Flash, el llamado "bootloader block", pero nl otros modelos de placas Arduino puede ocupar más (por ejemplo nl el Arduino Leonardo ocupa 4 Kilobytes).
La función de este firmware es beheren de forma support el proceso de grabación nl la memoria flash del programa que queremos que el microcontrolador ejecute. Lógicamente, para el bootloader realizara esta grabación más allá del "bootloader blok" geen sobrescribirse een sí mismo.
Más concretamente, el bootloader se Charge de recibir nuestro programa de parte del entorno de desarrollo Arduino (normalmente zwaartelijn una transmisión realizada een través de conexión USB desde la computadora donde se está ejecutando dicho entorno hasta la placa) para proceder seguidamente een su correcto almacenamiento nl la memoria flash del microcontrolador. Una vez realizado el proceso de grabación, el bootloader termina su ejecución y el microcontrolador dispone een procesar de inmediato y de forma permanente (mientras este encendido) las instrucciones recientemente grabadas.
Nl la placa Arduino UNO, el bootloader siempre se ejecuta durante el primer segundo de cada reinicio. Durante estos instantes, el gestor de is se espera een recibir una serie de instrucciones concretas de parte del entorno de desarrollo para interpretarlas y así realizar la correspondiente carga de VN posible programa. Si esas instrucciones geen llegan pasado ese tiempo, el bootloader termina su ejecución e igualmente se empieza een procesar lo que haya nl ese momento nl la memoria flash.
Estas instrucciones internas de programación de memorias Flash zoon ligeramente diferentes según el tipo de bootloader que tenga la placa, pero casi todas zoon verscheidene del conjunto de instrucciones ofrecido oficialmente por Atmel para la programación de sus microcontroladores, el llamado protocolo STK500 (http://www.atmel.com/tools/STK500.aspx). Un ejemplo es el bootloader que tiene pregrabado el ATMEGA238P del Arduino UNO, basado nl VN firmware libre llamado Optiboot (http://code.google.com/p/optiboot), el cual logra una velocidad de grabación de 115 kilobits de programa een cargar por segundo gracias al uso de instrucciones vliegtuigschroef derivadas del "Standard" STK500. Otro ejemplo de bootloader derivado del protocolo STK500 es el bootloader "bedrading", grabado de fábrica nl el microcontrolador de la placa Arduino Mega. El bootloader que viene nl la placa Leonardo (llamado "Caterina") es diferente, ya que entiende otro conjunto di istruzioni independiente llamado AVR109 (también oficial de Atmel). Toda esta información se puede obtener consultando el contenido del fichero llamado "boards.txt", descargado junto con el entorno de desarrollo Arduino.
Si adquirimos un microcontrolador ATMEGA328P hay que tener en cuenta que neen dispondrá del bootloader, por lo que deberemos incorporarle uno nosotros "a mano" para hacer uso de él een partir de entonces, o bien geen utilizar nunca ningun bootloader y cargar entonces siempre nuestros programas nl la memoria flash problem. Nl ambos casos, el procedimiento requiere el uso de VN aparato especifico (nl concreto, un "programador ISP" – In systeemprogrammeur –) que debemos adquirir aparte. Este aparato de ha de verbinden por un lado een nuestro computador y por otro a la placa Arduino, y suple la está de bootloader haciendo de intermediario een nuestro entorno de desarrollo y la memoria flash del microcontrolador. Por lo tanto, podemos resumir diciendo que el gestor de is es el elemento que permite programar nuestro Arduino problem con un kabel USB y nada más.
Por conveniencia, dentro del paquete instalador del entorno de desarrollo de Arduino (descargable se su web oficial) se distribuyen además copias exactas wat een beetje de los bootloaders oficiales que vienen grabados nl los diferentes microcontroladores Arduino. Estas copias exactas zoon Library con extensión ".hex" que tienen un formato interno llamado "Intel Hex Format". Para el uso normale de nuestra placa no necesitamos para nada estos Library ".hex", pero si dispusiéramos de VN programador ISP y nl algún momento tuviéramos que "reponer" un bootloader dañado (o bien grabar VN bootloader een algún microcontrolador que neen tuviera ninguno), Arduino amendementen ofrece estos Library para cargarlos nl la memoria flash de nuestro microcontrolador siempre que queramos.
El formato Intel Hex formaat es el utilizado por todos los chips AVR para pestañas contenido nl sus memorias Flash, por lo que hay que aclarar que geen solamente los bootloaders zoon alojados internamente de esta forma nl la memoria Flash, si neen que todos nuestros propios programas que escribamos en el entorno de desarrollo también serán alojados allí nl formato ".hex".
Evidentemente, los bootloaders Arduino también zoon software libre, por lo que al igual que wordt con el entorno de programación Arduino, siempre tendremos disponible su código fuente (escrito nl leguaje C) para poder conocer cómo funciona internamente e inclusief para poderlo modificar, si así se estima oportuno.