Utvinna Arduino´s själen / Extrayendo el Alma de Arduino / Arduino bootloader (2 / 10 steg)
Steg 2: Un poco de pojkflicka... Bootloader (gestor de arranque)
Como se mencionó anteriormente, dentro de la memoria de programa Flash del microcontrolador incluido sv las placas Arduino viene pregrabado un pequeño programa llamado "bootloader" o "gestor de arranque" que provstycken imprescindible para un cómodo y fácil manejo de la placa sv cuestión. Este programvara (también llamado "firmware", porque es un tipo de programvara que raramente se ändringar) ocupa en la placa Arduino UNO, 512 byte de espacio sv FN apartado o sección especial de la memoria Flash, el llamado "bootloader block", pero sv otros modelos de placas Arduino puede ocupar más (por ejemplo sv el Arduino Leonardo ocupa 4 kilobyte).
La función de este firmware es gestionar de forma automática el proceso de grabación en la memoria flash del programa que queremos que el microcontrolador ejecute. Lógicamente, el bootloader realizara esta grabación más allá del "bootloader block" para ingen sobrescribirse en sí mismo.
Más concretamente, el bootloader se encarga de recibir nuestro programa de parte del entorno de desarrollo Arduino (normalmente mediante una transmisión realizada en través de conexión USB desde la computadora donde se está ejecutando dicho entorno hasta la placa) para proceder seguidamente en su correcto almacenamiento en la memoria flash del microcontrolador. UNA vez realizado el proceso de grabación, el bootloader domstolstvist su ejecución y el microcontrolador dispone en procesar de omedelbar y de forma permanente (mientras este encendido) las instrucciones recientemente grabadas.
En la placa Arduino UNO, el bootloader siempre se ejecuta durante el primer segundo de cada reinicio. Durante estos instantes, el gestor de arranque se espera en recibir una serie de instrucciones concretas de parte del entorno de desarrollo para interpretarlas y así realizar la correspondiente carga de un posible programa. SI elektriska/elektroniska underenheter instrucciones ingen llegan pasado ese tiempo, el bootloader domstolstvist su ejecución e igualmente se empieza en procesar lo que haya sv ese momento sv la memoria flash.
Estas instrucciones internas de programación de memorias Flash son ligeramente diferentes según el tipo de bootloader que tenga la placa, pero casi todas son variantes 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). FN: S ejemplo es el bootloader que tiene pregrabado el ATMEGA238P del Arduino UNO, basado en FN: s firmware libre llamado Optiboot (http://code.google.com/p/optiboot), el cual logra una velocidad de grabación de 115 kbit de programa en cargar por segundo gracias al uso de instrucciones propias derivadas del "estándar" STK500. Otro ejemplo de bootloader derivado del protocolo STK500 es el bootloader "ledningar", grabado de fábrica en el microcontrolador de la placa Arduino Mega. El bootloader que viene sv la placa Leonardo (llamado "Caterina") es diferente, ya que entiende otro conjunto de instrucciones 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 ingen dispondrá del bootloader, por lo que deberemos incorporarle uno nosotros "a mano" para hacer uso de él en partir de entonces, o bien ingen utilizar nunca ningún bootloader y cargar entonces siempre nuestros programas en la memoria flash utgående. Sv ambos casos, el procedimiento requiere el uso de un aparato especifico (sv concreto, FN: s "programador ISP" – i System programmerare –) que debemos adquirir aparte. Este aparato de ha de conectar por un lado en nuestro computador y por otro a la placa Arduino, y suple la ausencia de bootloader haciendo de intermediario en nuestro entorno de desarrollo y la memoria flash del microcontrolador. Por lo tanto, podemos resumir diciendo que el gestor de arranque es el elemento que permite programar nuestro Arduino utgående 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 lite lite de los bootloaders oficiales que vienen grabados en los diferentes microcontroladores Arduino. Estas copias exactas son ficheros con extensión "hex" que tienen un formato interno llamado "Intel Hex Format". Para el uso normala de nuestra placa inga necesitamos para nada estos ficheros "hex", pero si dispusiéramos de un programador ISP y sv algún momento tuviéramos que "reponer" FN bootloader dañado (o bien grabar FN bootloader en algún microcontrolador que ingen tuviera ninguno), Arduino nos ofrece estos ficheros para cargarlos en la memoria flash de nuestro microcontrolador siempre que queramos.
El formato Intel Hex-Format es el utilizado por todos los chips AVR para almacenar contenido sv sus memorias Flash, por lo que hay que aclarar que inget solamente los bootloaders son alojados internamente de esta forma en la memoria Flash, si ingen que todos nuestros propios programas que escribamos en el entorno de desarrollo también serán alojados allí en formato "hex".
Evidentemente, los bootloaders Arduino también son software libre, por lo que al igual que ocurre con el entorno de programación Arduino, siempre tendremos disponible su código fuente (escrito sv leguaje C) para poder Sven cómo funciona internamente e incluso para poderlo modificar, si así se uppskatt oportuno.