10
bootloader Desarrollo del gestor de arranque. ¿Que es un gestor de arranque? Vea esta página para una explicación mas completa de que es un gestor de arranque y por que necesitamos usar uno. Uso sin gestor de arranque. Si quieres utilizar el total de la memoria disponible para tus programas o evitar el retraso que se produce al encender la placa puedes utilizar cargar tus sketches utilizando un programador externo. Grabando el gestor de arranque. Para grabar un gestor de arranque necesitaras comprar un AVR-ISP ( programador "in-system" ), USBtinyISP o construir un programador paralelo . El programador se puede conectar la los pines ICSP ( las 2 filas de 3 pines ) - Asegurate de de conectarlo de la forma correcta. La placa debe ser alimentada por una fuente de energía externa o directamente por un cable USB. También debes asegurarte de tener correctamente seleccionada la opción correcta en el menú Tools | Board. Por último solo hay que lanzar el comando apropiado desde el menú Tools > Burn Bootloader del Arduino IDE. Grabar un gestor de arranque puede durar 15 segundos o más, así que se paciente. Grabando el gestor de arranque en una Arduino Mini. Aquí están las instrucciones para grabar el gestor de arranque , gracias a Gian Pablo Vilamil. Esto todavía no funciona! (programador paralelo con Windows XP). Windows XP puede causar problemas en el puerto paralelo e interrumpir el proceso de grabación del gestor de arranque. Necesitas este parche : [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport\Parameters] "DisableWarmPoll"=dword:00000001

Boot Loader

Embed Size (px)

Citation preview

Page 1: Boot Loader

bootloader

Desarrollo del gestor de arranque.

¿Que es un gestor de arranque?

Vea esta página para una explicación mas completa de que es un gestor de arranque y por que necesitamos usar uno.

Uso sin gestor de arranque.

Si quieres utilizar el total de la memoria disponible para tus programas o evitar el retraso que se produce al encender la placa puedes utilizar cargar tus sketches utilizando un programador externo.

Grabando el gestor de arranque.

Para grabar un gestor de arranque necesitaras comprar un AVR-ISP ( programador "in-system" ), USBtinyISP o construir un programador paralelo. El programador se puede conectar la los pines ICSP ( las 2 filas de 3 pines ) - Asegurate de de conectarlo de la forma correcta. La placa debe ser alimentada por una fuente de energía externa o directamente por un cable USB.También debes asegurarte de tener correctamente seleccionada la opción correcta en el menú Tools | Board. Por último solo hay que lanzar el comando apropiado desde el menú Tools > Burn Bootloader del Arduino IDE. Grabar un gestor de arranque puede durar 15 segundos o más, así que se paciente.

Grabando el gestor de arranque en una Arduino Mini.

Aquí están las instrucciones para grabar el gestor de arranque, gracias a Gian Pablo Vilamil.

Esto todavía no funciona! (programador paralelo con Windows XP).

Windows XP puede causar problemas en el puerto paralelo e interrumpir el proceso de grabación del gestor de arranque. Necesitas este parche: [HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001\Services\Parport\Parameters]"DisableWarmPoll"=dword:00000001

Mira en este hilo del foro para mas detalles.

Versiones del gestor de arranque.

Hay diferentes versiones del gestor de arranque para trabajar sobre dispositivos diferentes o por que han cambiado a lo largo del tiempo.Los gestores de arranque actuales ( p. e. el incluido en la versión Arduino 0009) son prácticamente idénticos para la Diecimila y la NG (con

Page 2: Boot Loader

ATmega168). Ambos corren a 19200 baudios y ocupan unos 2 KB de memoria flash en el ATmega168. La única diferencia está en el tiempo que el gestor de arranque espera para que un nuevo programa llegue y el numero de destellos que emite el LED del pin 13 cuando arranca. Por que en el reseto automático de la Diecimila este gestor de arranque emplea muy poco tiempo de espera, menos de un segundo, y para ahorrar tiempo el LED del pin 13 solo destella una vez. El gestor de arranque de la NG espera de 6 a 8 segundos y el LED del pin 13 destella 3 veces.El gestor de arranque que actualmente carga la Arduino NG es ligeramente diferente. Este activa la resistencia interna pull-up en el pin RX. Tampoco espera después de recibir datos no validos, así que si le envías datos inmediatamente después de que se resetee tu sketch nunca se ejecutará.El gestor de arranque del Arduino BT hace una configuración inicial del módulo bluetooth.El gestor de arranque del ATmega8 sólo ocupa 1 KB de memoria flash. Este tampoco espera después de recibir datos no validos, necesitas estar seguro de que no le envías nada durante los 6 u 8 segundos que tarda en ejecutarse.Algunas versiones antiguas del gestor de arranque funcionan a 9600 baudios (en lugar de 19200). Para asegurarnos el éxito a la hora de cargar sketches con este gestor de arranque necesitamos cambiar el valor del parámetro serial.download_rate en el archivo preferencias a 9600. Terceras partes han hecho modificaciones en el gestor de arranque. Esta página contiene enlaces a algunos de ellos.

¿Como trabaja?.

Los comandos "Burn Bootloader" en el entorno Arduino utilizan una herramienta open-source, avrdude. Hay cuatro pasos: desbloquear la sección del gestor de arranque en el chip, fijar los fusibles en el chip, subir el código del gestor de arranque al chip y bloquear la sección del gestor de arranque en el chip. Esto está controlado por determinados parámetros del archivo de preferencias.Para el gestor de arranque del ATmega8 son:

bootloader.atmega8.programmer (valor por defecto: stk500) es el protocolo usado por el gestor de arranque.

bootloader.atmega8.unlock_bits (valor por defecto: 0xFF) es el valor para escribir en el ATmega8 un byte de bloqueo para desbloquear la sección del gestor de arranque.

bootloader.atmega8.high_fuses (valor por defecto: 0xca) escribe un byte alto en los fusibles del ATmega8.

bootloader.atmega8.low_fuses (valor por defecto: 0xdf) escribe un byte bajo en los fusibles del ATmega8.

bootloader.atmega8.path (valor por defecto: bootloader) es el subdirectorio (relativo al directorio en que se encuentra la aplicación Arduino) que contiene el gestor de arranque precompilado.

bootloader.atmega8.file (valor por defecto: ATmegaBOOT.hex) es el nombre del fichero que contiene el código precompilado del gestor de arranque (en bootloader.path).

bootloader.atmega8.lock_bits (valor por defecto: 0x0F) es el valor para escribir un byte de bloqueo para la sección del gestor de arranque del

Page 3: Boot Loader

ATmega8 (para no sobreescribir accidentalmente sobre ella al grabar un sketch).

Para el ATmega168, estos son (donde <BOARD> es según corresponda "diecimila" o "ng"):

bootloader.atmega168-<BOARD>.programmer (valor por defecto: avrispmkii) es el protocolo usado por el bootloader.

bootloader.atmega168-<BOARD>.unlock_bits (valor por defecto: 0x3F) es el valor para escribir en el ATmega168 un byte de bloqueo para desbloquear la sección del gestor de arranque.

bootloader.atmega168-<BOARD>.extended_fuses (valor por defecto: 0x00) es el valor para escribir un byte alto en los fusibles del ATmega168.

bootloader.atmega168-<BOARD>.high_fuses (valor por defecto: 0xdd) es el valor para escribir un byte alto en los fusibles del ATmega168.

bootloader.atmega168-<BOARD>.low_fuses (valor por defecto: 0xff) es el valor para escribir un byte bajo en los fusibles del ATmega168.

bootloader.atmega168-<BOARD>.path (valor por defecto: bootloader168) es el subdirectorio (relativo al directorio de la aplicación Arduino) que contiene el gestor de arranque precompilado.

bootloader.atmega168-<BOARD>.file (valor por defecto: ATmegaBOOT_168_<BOARD>.hex) es el nombre del fichero que contiene el bootloader precompilado (en bootloader.path).

bootloader.atmega168-<BOARD>.lock_bits (valor por defecto: 0x0F) es el valor para escribir en el ATmega168 un byte de bloqueo en la sección del gestor de arranque (para no escribir sobre ella por error al grabar un sketch).

Código fuente.

El código fuente del gestor de arranque.

Programador por puerto paralelo

Instrucciones para fabricar un programador por puerto paralelo para Arduino (o cualquier otro microcontrolador Atmega). Este programador permite programar la placa en Windows sin ningún otro equipo adicional. Barato y divertido. (Ten en cuenta que este programador no permite la comunicación entre el ordenador y los programas que ejecute Arduino. Para eso necesitarás un cable serie).

Page 4: Boot Loader

Vista trasera del conector.

Equipo

Herramientas:

Soldador Pistola de silicona caliente (opcional)

Componentes:

(2x) Resistencia 470 ohmios (amarillo-morado-marrón) (1x) Resistencia 220 ohmios (rojo-rojo-marrón) (1x) Cable puerto paralelo o adaptador serie - paralelo (2x) Tres cables con conectores hembra en un extremo, sin conector en el otro

extremo.

Page 5: Boot Loader

Instrucciones

Quita los cables (si existen) del conector paralelo.Suelda las resistencias de 470 ohmios a los pines 1 y 2 del conector paralelo.

Page 6: Boot Loader

Conector paralelo con una resistencia de 470 ohmios en el pin 1.Suelda una resistencia de 220 ohmios en el pin 11 del conector.Suelda, en orden, tres cables de uno de los cables a la resistencia del pin 11 (que va al pin 18 del Atmega8), a la resistencia del pin 1 (que va al pin 19 del Atmega8) y al pin 16 (que va al pin de reset, pin 1).

Page 7: Boot Loader

Conector paralelo con dos de los tres cables soldados a los pines 11 y 1.Suelda el cable del centro del segundo cable a la resistencia del pin 2 (que va al pin 17 del Atmega8) y uno de los otros cables al pin 18 (que va a tierra). (El tercer cable no se usa y se puede cortar).

Page 8: Boot Loader

Conector paralelo con los dos cables soldados en su lugar.Une los finales de los cables de forma que vistos desde el conector, el cable libre quede arriba a la izquierda y el cable que va al pin 11 arriba a la derecha (pin 1 del conector, este pin debe conectar con el pin 1 indicado en la placa Arudino).Usa silicona caliente para pegar los cables en el interior de la carcasa del conector paralelo, asegurándote de que cualquier cable sin aislar queda separado. También puedes usar cinta aislante para mantenerlos aislados.

Una vez que el pegamento se ha secado, vuelve a cerrar la carcasa del cable paralelo.

Page 9: Boot Loader

Software

Necesitarás descargar giveio de MIT's Microcomputer Project Laboratory (gracias Jim!) y ejecutar el archivo ginstal.bat.Mira la pagina de bootloader para más detalles sobre cómo usar tu nuevo programador por puerto paralelo para cargar el bootloader a Arduino.Si lo programas usando uisp directamente, puedes usar este comando:uisp -dprog=dapa -dpart=ATmega8 if=prog.hex -dlpt=0x378 --erase --upload@autor: David A. Mellis IDII (gracias a Erez Kikin-Gil por fabricar uno, también a Massimo Banzi por las instrucciones)