Vous êtes sur la page 1sur 8

bootloader Desarrollo del gestor de arranque.

Que es un gestor de arranque? Vea esta pgina para una explicacin mas completa de que es un gestor de arranque y por que necesitamos usar uno. U s o si n g e s t o r d e a r r a n q u e . 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. G r a b a n do e l g e s t o r d e a r r a n q u e . Para grabar un gestor de arranque necesitaras comprar un AVR-ISP ( programador "insystem" ), 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 energa externa o directamente por un cable USB. Tambin debes asegurarte de tener correctamente seleccionada la opcin 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 ms, as que se paciente. G r a b a n do e l g e s t o r d e a r r a n q u e e n un a A r d u i no M i ni . Aqu estn las instrucciones para grabar el gestor de arranque, gracias a Gian Pablo Vilamil. E s t o t o da v a no f un c i o na ! ( p r o g r am ad o r p a r a l e l o co n W i n d o w s X P ) . Windows XP puede causar problemas en el puerto paralelo e interrumpir el proceso de grabacin 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. V e r s i o n e s d e l g e s to r d e ar r a n q u e . 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 versin Arduino 0009) son prcticamente idnticos para la Diecimila y la NG (con 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 automtico 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 despus de recibir datos no validos, as que si le envas datos inmediatamente despus de que se resetee tu sketch nunca se ejecutar. El gestor de arranque del Arduino BT hace una configuracin inicial del mdulo bluetooth. El gestor de arranque del ATmega8 slo ocupa 1 KB de memoria flash. Este tampoco espera despus de recibir datos no validos, necesitas estar seguro de que no le envas 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 parmetro serial.download_rate en el archivo preferencias a 9600. Terceras partes han hecho modificaciones en el gestor de arranque. Esta pgina contiene enlaces a algunos de ellos. C o m o tr a b aj a ? . Los comandos "Burn Bootloader" en el entorno Arduino utilizan una herramienta opensource, avrdude. Hay cuatro pasos: desbloquear la seccin del gestor de arranque en el chip, fijar los fusibles en el chip, subir el cdigo del gestor de arranque al chip y bloquear la seccin del gestor de arranque en el chip. Esto est controlado por determinados parmetros 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 seccin 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 aplicacin Arduino) que contiene el gestor de arranque precompilado. bootloader.atmega8.file (valor por defecto: ATmegaBOOT.hex) es el nombre del fichero que contiene el cdigo 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 seccin del gestor de arranque del ATmega8 (para no sobreescribir accidentalmente sobre ella al grabar un sketch). Para el ATmega168, estos son (donde <BOARD> es segn 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 seccin 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 aplicacin 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 seccin del gestor de arranque (para no escribir sobre ella por error al grabar un sketch). C di g o f u e n t e . El cdigo 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 ningn otro equipo adicional. Barato y divertido. (Ten en cuenta que este programador no permite la comunicacin entre el ordenador y los programas que ejecute Arduino. Para eso necesitars un cable serie).

Vista trasera del conector.

Equipo
Herramientas: Soldador Pistola de silicona caliente (opcional) Componentes: (2x) Resistencia 470 ohmios (amarillo-morado-marrn) (1x) Resistencia 220 ohmios (rojo-rojo-marrn) (1x) Cable puerto paralelo o adaptador serie - paralelo (2x) Tres cables con conectores hembra en un extremo, sin conector en el otro extremo.

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

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).

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).

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, asegurndote de que cualquier cable sin aislar queda separado. Tambin puedes usar cinta aislante para mantenerlos aislados.

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

Software
Necesitars descargar giveio de MIT's Microcomputer Project Laboratory (gracias Jim!) y ejecutar el archivo ginstal.bat. Mira la pagina de bootloader para ms detalles sobre cmo 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, tambin a Massimo Banzi por las instrucciones)

Vous aimerez peut-être aussi