bootloader hid

10
Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo." BOOTLOADER Ustedes se preguntaran ¿Qué es el bootloader? Efectivamente es de mucha utilidad poder "Programar tu PIC si necesidad de un Programador". Esto que digo es relativo, ya que al menos una vez debes programar como siempre un código residente en memoria flash, que se encargara de tomar los datos y re- programar su propia memoria Flash. Mejor dicho, hablemos que es un Bootloader. El termino bootloader hace referencia a un pequeño programa que se realiza para determinado microcontrolador, ya sea PIC, Freescale, Atmel, etc. Este código lo que hace es tomar los datos que se le enviaran por puerto serial (UART), USB, Ethernet, el que sea que pueda enviar una cadena de Bytes al microcontrolador. El microcontrolador va tomando esos datos que le van llegando y los va "Programando" en su propia memoria Flash. Qué obtenemos con eso, que puedes actualizar en cualquier momento el código del PIC. Utilidades de esto, son grandes, puedes desarrollar un producto o un proyecto y el usuario final no necesita un programador de PIC para poder actualizarlo. Un fiel y gran ejemplo de esto es lo que implementan los programadores ("Quemadores") profesionales de PICs. El programador te llega a casa totalmente funcional, pero en cualquier momento aparece una nueva referencia de microcontrolador y si quieres actualizar el programador, solo te bajas de internet la actualización, conectas el micro al USB y listo, le envías la actualización al programador. Listo el se autoprogramó la FLASH y ya tiene la nueva referencia del micro para trabajar con este. Lo anterior permite sacar las siguientes conclusiones: Es necesario tener un programador para usarlo solo una vez y así grabarle el programa residente en memoria FLASH. Ya después de esto se usa el Bootloader para grabar la flash del micro. El programa residente ocupa memoria flash y por ende tienes un poco menos de memoria para la aplicación real del micro. No es mucha la que quita, pero hay que tener eso claro. Por ningún motivo se puede sobrescribir las posiciones de memoria FLASH en la que se encentra el programa residente Bootloader. Si se borra por algún error, pierdes el bootloader y toca nuevamente programarlo con un grabador externo.

Upload: ricardo-diaz

Post on 04-Aug-2015

66 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

BOOTLOADER

Ustedes se preguntaran ¿Qué es el bootloader?

Efectivamente es de mucha utilidad poder "Programar tu PIC si necesidad de un

Programador". Esto que digo es relativo, ya que al menos una vez debes programar como

siempre un código residente en memoria flash, que se encargara de tomar los datos y re-

programar su propia memoria Flash. Mejor dicho, hablemos que es un Bootloader.

El termino bootloader hace referencia a un pequeño programa que se realiza para

determinado microcontrolador, ya sea PIC, Freescale, Atmel, etc. Este código lo que hace

es tomar los datos que se le enviaran por puerto serial (UART), USB, Ethernet, el que sea

que pueda enviar una cadena de Bytes al microcontrolador. El microcontrolador va

tomando esos datos que le van llegando y los va "Programando" en su propia memoria

Flash. Qué obtenemos con eso, que puedes actualizar en cualquier momento el código del

PIC. Utilidades de esto, son grandes, puedes desarrollar un producto o un proyecto y el

usuario final no necesita un programador de PIC para poder actualizarlo. Un fiel y gran

ejemplo de esto es lo que implementan los programadores ("Quemadores") profesionales de

PICs. El programador te llega a casa totalmente funcional, pero en cualquier momento

aparece una nueva referencia de microcontrolador y si quieres actualizar el programador,

solo te bajas de internet la actualización, conectas el micro al USB y listo, le envías la

actualización al programador. Listo el se autoprogramó la FLASH y ya tiene la nueva

referencia del micro para trabajar con este.

Lo anterior permite sacar las siguientes conclusiones:

• Es necesario tener un programador para usarlo solo una vez y así grabarle el programa

residente en memoria FLASH. Ya después de esto se usa el Bootloader para grabar la flash

del micro.

• El programa residente ocupa memoria flash y por ende tienes un poco menos de

memoria para la aplicación real del micro. No es mucha la que quita, pero hay que tener eso

claro.

• Por ningún motivo se puede sobrescribir las posiciones de memoria FLASH en la que

se encentra el programa residente Bootloader. Si se borra por algún error, pierdes el

bootloader y toca nuevamente programarlo con un grabador externo.

Page 2: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

• No todos los micros pueden soportar Bootloder, esto se limita a aquellos que tienen la

capacidad de autograbar su memoria FlLASH. Por ejemplo el 16F84 no lo permite, por eso

sacaron la versión PIC16F628A que si lo deja y además tiene mejores prestaciones.

Ya con lo anterior en teoría, PODEMOS GRABAR EL PIC SIN NECESIDA DE UN

PROGRAMADOR.

Page 3: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

HARDWARE

El circuito que se empleará es el que se muestra a continuación. Falta el conector USB,

pero comparando con la figura que se muestra más adelante podrá terminar de construir el

circuito requerido.

Page 4: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

USB

El bus USB trasmite señales de datos (D+, D-) y de alimentación (5 voltios, 0 voltios) a

través de cuatro hilos y como buen protocolo serial de alta velocidad trabaja en modo

diferencial, es decir que detecta la información por medio de pequeñas diferencias de

tensión entre sus líneas de datos, es por esto que su voltaje máximo en estas líneas no

superan los 3.6 voltios, y es mas: algunos fabricantes especifican como voltaje máximo

solo 2.8 voltios. Como ves si, si se conecta un dispositivo USB en una toma frontal mal

instalada el daño en el dispositivo es seguro porque no existe ninguna protección.

En cuanto a la reparación, muchos dispositivos USB, llámense scanners, cámaras, pen

drives, etc… utilizan resistencias en serie con la entrada diferencial con un valor de 2.2

ohmios a 10 ohmios para lograr un mejor acople de impedancias en la línea, cuando estas

se ven expuestas a 5 voltios por algunos segundos se queman y se abren (aumentan su

resistencia al infinito) siendo este el único daño en el dispositivo, el problema radica en que

no todos los dispositivos USB cuentan con estas resistencias de acople, y la señal llega

directamente al circuito integrado encargado de decodificar estos pulsos diferenciales el

cual una vez dañado es difícil de conseguir, aunque si lo consigues lo mas seguro es que

puedas reparar el dispositivo.

Page 5: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

USB fue diseñado para estandarizar la conexión de periféricos, como mouse, teclados,

joysticks, escáneres, cámaras digitales, teléfonos móviles, reproductores multimedia,

impresoras, dispositivos multifuncionales, sistemas de adquisición de datos, módems,

tarjetas de red, tarjetas de sonido, tarjetas sintonizadoras de televisión y grabadora de DVD

externa, discos duros externos y disquetera externas. Su éxito ha sido total, habiendo

desplazado a conectores como el puerto serie, puerto paralelo, puerto de juegos, Apple

Desktop Bus o PS/2 a mercados-nicho o a la consideración de dispositivos obsoletos a

eliminar de los modernos ordenadores, pues muchos de ellos pueden sustituirse por

dispositivos USB que implementen esos conectores.

Para nuestra instalación es recomendable buscar la mejor conexión en nuestro pic , para

ello conseguir bornes maquilados como se muestra en la figura (se encuentran en las

tarjetas madres).

Page 6: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

Generación de código

El USB Bootloader es un pequeño programa de arranque, residente en las primeras 0x1000

bytes de la memoria de programa de un Microcontrolador Pic18F2550. El bootloader

funciona en el momento en que se carga el programa (justo cuando se reinicializa el PIC) y

es capaz de cargar un programa de aplicación en la memoria de programa del pic.

Es importante destacar el apartado #define LOADER_SIZE del programa el cual aísla el programa

del bootloader para no ser borrado tras una nueva carga, es importante tenerlo en cuenta cuando

se simula en Proteus comentarlos y cuando se vaya a descargar al PIC habilitarlo.

(colocar o quitar comentarios)

#define LOADER_SIZE 0x1000 //4096 Bytes. #build(reset=LOADER_SIZE, interrupt=LOADER_SIZE+0x08) #org 0, (LOADER_SIZE-1) {} PROGRAMA “PLANTILLA DE PROYECTOS” //************************************************ /* Publicado: ING. Baltazar de Jesus Zapata Arceo # Balzarc# Instituto Tecnológico de Lerma */ //************************************************ #include <18F2550.h> #fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL2,CPUDIV1,VREGEN,MCLR //#define ADC=10 // Habilítalo cuando necesites que el adc sea de 10 bits #use delay(clock=48000000) /// MICROCHIP_BOOTLOADER.H /// NOTA: FUNCIONA CON LA VERSION DE USB_BOOTLOADER.EXE (HID) V.2.9a /// NO FUNCIONA CON LA VERSION DE USB_BOOTLOADER.EXE HID V2.3. /// CODIGO BOOTLOADER, PARA SIMULAR EN PROTEUS, PONER COMO COMENTARIO PARA GRABAR EN MICROCONTROLADOR, QUITAR COMENTARIO #define LOADER_SIZE 0x1000 //4096 Bytes. #build(reset=LOADER_SIZE, interrupt=LOADER_SIZE+0x08) #org 0, (LOADER_SIZE-1) {} #use standard_io(a) #use standard_io(b) #use standard_io(c)

Page 7: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

void main() { /// Configuracion Embebida //// setup_adc_ports(NO_ANALOGS); setup_adc(ADC_OFF); setup_wdt(WDT_OFF); setup_timer_0(RTCC_8_BIT|RTCC_DIV_128); setup_timer_1(T1_DISABLED); setup_timer_2(T2_DISABLED,0,1); setup_timer_3(T3_DISABLED|T3_DIV_BY_1); setup_comparator(NC_NC_NC_NC); setup_vref(FALSE); for(;;){ ///////////·······poner programa desde aquí········//////////// //////////··········fin de programa···········/////// } }

Page 8: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

DESCARGAR PROGRAMA CON BOOTLOADER HID

GRABANDO EL PIC

Abrimos la aplicación USB Boottloader V2.90 ( la encuentras en la dirección

http://balzarc-proyectositl.blogspot.mx/)

Se conecta el PIC al puerto USB. Una vez que Windows detecta que la PC tiene conectado

un dispositivo nuevo, se inicia el asistente para instalar drivers de hardware nuevo.

Para entrar en el modo USB Bootloader, se presiona el botón Reset conectado a la

terminal MCLR, luego se presiona el botón Bootloader y se libera nuevamente el

botón Reset. Lo anterior se realiza porque el programa bootloader del PIC primero

examina el nivel lógico de la termina Bootloader donde se encuentra conectado el

pushbutton. Si el botón está presionado el PIC entra en modo Bootloader y si no lo está

ejecuta el programa de aplicación que tenga grabado.

Page 9: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

Automáticamente la aplicación lo detecta y el hardware solo emitirá unos destellos de

bootloader .

Cargamos nuestro proyecto extensión “.h” dando click en el icono de la carpeta o

file / import firmware image.

Y el último paso es descargar el proyecto que es nombrado como Erase/Program/Verify

Device como se ve en la imagen .

Se demora unos cuantos segundos, terminado el proceso se procede a resetear el PIC (por

hardware “el botón externo” ó software “Reset Device” )

Page 10: Bootloader Hid

Instituto Tecnológico de Lerma Ing. Baltazar de Jesús Zapata Arceo

Recuerden: "La peor derrota de una persona es cuando pierde su entusiasmo."

Listo es hora de realizar las prácticas