Anda di halaman 1dari 9

TODOPIC

Bienvenido(a), Visitante. Por favor, ingresa o regístrate. ¿Perdiste tu


email de activación?
Siempre Ingresar
Ingresar con nombre de usuario, contraseña y duración de la sesión

  Este tema Buscar

Inicio Ayuda Buscar Ingresar Registrarse

TODOPIC » Microcontroladores PIC » * PROYECTOS * (Moderadores: jfh900, MGLSOFT, LABmouse) » Bootloader USB para PIC18F4550 a full.

« anterior próximo »

Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12   Ir Abajo IMPRIMIR

Autor Tema: Bootloader USB para PIC18F4550 a full.  (Leído 133697 veces)
0 Usuarios y 1 Visitante están viendo este tema.

LABmouse Bootloader USB para PIC18F4550 a full.


« en: 21 de Septiembre de 2008, 01:13:23 »
Moderador Local
DsPIC30
Hola! Todo nace de este hilo.

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


Mensajes: 3574 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. que 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.
•   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.

Bueno, este hilo trata de cómo implementar un bootloader en un PIC18F4550 usando el


puerto USB 2.0 Ful-Speed que es su máximo atractivo.  

HARDWARE

El hardware es casi nada. El PIC y unas cuantas cositas para que pueda trabajar el puerto
USB ya esta. Ver imagen No 1.

Imagen No 1. Circuito basico para trabajar con el PIC18F4550 en modo Bootloader.

Para entrar en modo Bootloader, se debe presionar el botón conectado en RB4,


manteniéndolo presionado, de se debe dar RESET al pic con otro pulsador en el pin MCLR
o, como en este caso se conecta al puerto USB el PIC y listo, lo primero que hace el PIC
es preguntar por el estado del PIN RB4 donde esta el pulsador. De estar presionado este
botón, el PIC entra en modo Bootloader y si no ejecuta el código normal que le grabamos
al PIC.

El led conectado en el puerto RD1 que enciende y apaga cuando entra en modo
Bootloader.  

El esquemático mostrado, solo tiene la particularidad de tener un PIC18F4550


encapsulado QFN44.  En esta practica, usare el EMMini de la empresa Octoplus. Ver
fotografia No1.

Ampliar
Fotografía No 1. Mini sistema de desarrollo EMMini de la empresa Octoplus.

SOFTWARE

Como decía al principio, el Bootloader es un código residente en la memoria FLASH del


pic que será ejecutado cuando se le necesite y lo que hace el PIC es tomar los datos que
le llegaran por el puerto USB y reprogramar su memoria FLASH. Este código ocupara un
espacio de la memoria FLASH, específicamente  este es el reporte de MPLAB en el que se
ve la memoria usada.
Imagen No 2. Reporte de memoria usada por el Bootloader.

Este código residente no es necesario desarrollarlo, aunque no es muy complicado


hacerlo, no hay ninguna razón en dedicar tiempo en programación del Bootloader si ya el
fabricante de los microcontroladores MICROCHIP regala el código que se deba grabar por
primera vez en el PIC, el código fuente si se quiere ver como esta hecho, la plantilla sobre
la que debe programar las aplicaciones siguientes y también entrega programas de
ejemplo usando la plantilla.

También es indispensable tener una aplicación en el PC con la cual se pueda buscar el


archivo .hex que se quiere grabar en el PIC y con la que se pueda enviar los datos por el
USb al PIC. Esta también la regala MICROCHIP.

Para poder empezar a trabajar con esto, se debe descargar la aplicación desde la página
de MICROCHIP llamada USB Bootloader Setup.EXE después de descargarlo, solo se debe
instalar para generar los siguientes archivos:

Imagen No 3. Carpetas creadas al instalar el USB Bootloader Setup.EXE

Como vemos son 2 carpetas.

1.   fw (Firmware). En esta están los códigos para el microcontrolador PIC. Vemos 4
nuevas carpetas.
1.1.   _factory_hex. Solo encontramos el archivo .hex a grabar en el PIC. Es decir el
programa residente.
1.2.   Boot. Es el código fuente del programa residente (Bootloader). Si se quiere, se
puede compilar este codigo fuente y trabajara igual que el .hex encontrado en la carpeta
anterior.
1.3.   Demo y Demo02. Son programas de ejemplo con cofigo fuente para saber como se
usa la plantilla para crear el programa que ejecutara el PIC cuando no esta en modo
Bootloader.

2.   Pc. Herramientas para usar en el PC.


2.1.   MCHPUSB Driver. Cuando el PIC entra en modo bootloader, el Windows detectara un
nuevo dispositivo conectado en uno de sus puertos USB. Seguido pedirá el Driver a
instalar.  En ese momento, se le debe buscar manualmente en esta carpeta.
2.2.   Mpusbapi.  Esta es un DLL  entregada por Microchip pues es con esta que se
desarrolla la aplicación de Windows que se encarga de enviarle los datos al PIC.  Con
esta podríamos desarrollar nuestra propia aplicación Windows.
2.3.   Pdfsusb. Es la aplicación que se debe usar siempre que se quiere programar el PIC
en modo Bootloader.

GRABANDO EL PIC

Si el PIC no tiene el programa residente, debemos usar un programar de PICs externo.


 Ver fotografía No 2. Con el grabaremos el archivo .hex encontrado en la carpeta
_factory_hex.

Ya grabado el PIC, se presiona el pulsador, manteniéndolo presionado conectarlo al


puerto USB. Inmediatamente el Windows lo reconocerá. Ver imagen No 4.

Imagen No 4. Instante en que Windows detecta al PIC entrando en modo Bootloader.

Ya luego solo queda buscar manualmente el driver. (Ver secuencia de instalación desde
imagen No 5 hasta la imagen No .
Imagen No 5. Paso uno en instalación de driver.

Imagen No 6. Paso dos en instalación de driver.

Imagen No 7. Paso tres en instalación de driver.

Imagen No 8. Paso cuatro. Verificación de instalación.

Antes que el Windows Instale el Driver, el led permanece apagado. Una vez completado el
proceso y el Windows instale el PIC, el led empezara a parpadear indicando espera de
archivo .hex.

En este momento, ejecutamos el archivo PDFSUSB.exe, se carga el archivo.hex y se


programa el microcontrolador. Ver Imagen No 9.

Imagen No 9. Identificación del software de control.

Si se graba el ejemplo que se encuentra en la carpeta Demo, veremos como el PIC al


entrar en modo normal, también se identifica con el Windows por puerto USB pero ahora
totalmente diferente al Bootloader. Esto permite concluir que en la aplicación normal, el
PIC también puede trabajar con el puerto USB y de forma totalmente diferente al
Bootloader. Si se quiere ver como trabaja este ejemplo, el mismo programa PDFSUSB
tiene otra aplicación denominada PICDEM FS USB. Ver imagen No 10.

Imagen No 10. Test del ejemplo Demo.

Espero les ayude en algo esta guía de cómo usar el Bootloader y aprovechar esta gran
ventaja que tienen en generar todos los micros que pueden reprogramar su memoria
FLASH. En particular este PIC al tener puerto USB, lo hace bastante práctico y potente, ni
fuente de voltaje se necesita porque se alimenta del puerto USB.

Saludos!

Ernesto.
« Última modificación: 18 de Noviembre de 2011, 17:13:37 por LABmouse » En línea

El_Guitre Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #1 en: 21 de Septiembre de 2008, 01:57:11
PIC24H
»

Ernesto, muy explicativa tu respuesta, la verdad de maravillas. Mañana mismo me pongo


Mensajes: 1046 a jugar con esto que de la forma que lo explicas parece tan sencillo. Felicitaciones por la
exposición. Saludos

En línea

jeremylf Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #2 en: 21 de Septiembre de 2008, 12:57:11
PIC24H
»
Vaya que gran trabajo PICmouse! deverdad que muy explicativo, no sabia que con ese
ejemplo se podria manejar dos distintas configuraciones de USB (porq mi aplicacion
trabaja con una) con solo apretar un boton.

Lo estare analizando bien porque el del ccs me dio algo de errores  Bueno, otra cosa,
el programa (el hex) lo guarda al principio del programa no?
Mensajes: 1339

Gracias, gran trabajo.


Salu2.

En línea

El_Guitre Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #3 en: 21 de Septiembre de 2008, 23:40:48
PIC24H
»

Mensajes: 1046 Probado y funcionando ok  ahora a aprender C18 para poder programar
desde la notebook.

En línea

scientist Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #4 en: 22 de Septiembre de 2008, 23:04:31
PIC24F
»

hola PICmouse, he intentado tu ejemplo, y me ha salido con un 18f2550, no se que tanto


Mensajes: 997 dependa esto, con respecto a que solo se puede utilizar programas compilados en c18,
mmm, hay alguna propabilidad de programarlos con algun truquillo, algun pragma,
bueno, sino tendre que empezar con el c18, muy buen articulo, saludos
En línea

NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

LABmouse Re: Bootloader USB para PIC18F4550 a


full.
Moderador Local
« Respuesta #5 en: 22 de Septiembre de 2008, 23:06:36
DsPIC30
»

Scientist, precisamente estoy trabajando en eso.  Ya casi lo tengo trabajando con CCS
Mensajes: 3574 también. Es decir, programar el Bootloader de C18, pero la plantilla de CCS.

SALUDOS!

En línea

scientist Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #6 en: 23 de Septiembre de 2008, 00:32:10
PIC24F
»

hola picmouse, ya logre hacer lo que queremos, hacerlo con ccs


Mensajes: 997  ahora,lo unico que tenemos que hacer, es no grabar nada de nuestro programa en las
direcciones de la 0x00 hasta la 0x7FF, ya probe varios programas y funcionan que dan
miedo, aqui lo unico que tenemos que anexar a nuestro programa es:

Código: [Seleccionar]

#define LOADER_END 0x7FF


#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition

aqui os pongo un ejemplo que funciona muy bien

Código: [Seleccionar]

#include <18F2550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#use delay(clock=48000000)
#include <usb_cdc.h>
#define LOADER_END 0x7FF
#define LOADER_SIZE 0x6FF
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition

void main() {

usb_cdc_init();
usb_init(); //inicializamos el USB

while (!usb_cdc_connected()) {}

solo hay que anexarlo a cualquier programa y chevere, cuando vayamos a programarlo
con el PDFUSB nos va a salir una advertencia, le decimos que no, y lo programamos, listo,
saludos y espero les haya ayudado

NOTA: solo una aclaracion, al parecer con el metodo que menciono, no podemos
configurar los FUSES, se quedarian como el programa del bootloader lo tiene
« Última modificación: 23 de Septiembre de 2008, 00:39:47 por scientist » En línea

NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

AKENAFAB Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #7 en: 23 de Septiembre de 2008, 03:01:16
DsPIC30
»

Hola

Les dejo este enlace , espero les sirva.

Es sobre el bootloader.
Mensajes: 3116
http://www.piccoder.co.uk/content/view/51/26

Saludos!

Instalo correctamente el boot , pero al cargar el driver me rompe las b*las , porque no
tiene soporte para 64 bits.

« Última modificación: 23 de Septiembre de 2008, 06:10:58 por AKENAFAB » En línea

https://twitter.com/AutoMaLab
http://amedialab.com/

El_Guitre Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #8 en: 23 de Septiembre de 2008, 07:22:38
PIC24H
»

Cita de: scientist en 23 de Septiembre de 2008, 00:32:10


Mensajes: 1046
NOTA: solo una aclaracion, al parecer con el metodo que menciono, no podemos configurar los FUSES,
se quedarian como el programa del bootloader lo tiene

Que bueno, felicitaciones, ahora podemos probar el bootloader sin aprender C18 antes,
respecto a los fuses, no se puede modificar el codigo del bootloader de C18 cambiando
los fuses en el? En este momento no recuerdo si microchip te da el codigo fuente o solo
el .hex

En línea

LABmouse Re: Bootloader USB para PIC18F4550 a


full.
Moderador Local
« Respuesta #9 en: 23 de Septiembre de 2008, 16:31:14
DsPIC30
»

Lo de los fusibles, es cierto, quedan tal cual como se programaron en el Bootloader, es


Mensajes: 3574 decirm, siempre vas con 20MHz, siempre vas a 48MHz , es decir, 24 Mips. Siempre con
MCLR, Siempre con.... Bueno los de siempre, ya que esos solo se pueden cambiar desde
el programador externo.

Cita de: scientist en 23 de Septiembre de 2008, 00:32:10

hola picmouse, ya logre hacer lo que queremos, hacerlo con ccs ahora,lo unico que tenemos que hacer,
es no grabar nada de nuestro programa en las direcciones de la 0x00 hasta la 0x7FF, ya probe varios
programas y funcionan que dan miedo.

Que bueno!  Apenas llegue a casa lo intentare.

SALUDOS!
En línea

El_Guitre Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #10 en: 23 de Septiembre de 2008,
PIC24H
18:47:16 »
Mensajes: 1046
Ya probe lo que proponía scientist y funciona, estoy cargando programas de ccs con el
bootloader de microchip y funcionan. Ahora bien, si necesitaramos cambiar algo, por
ejemplo el valor del oscilador, podríamos modificar la configuración en el código del
bootloader y volver a programar el microcontrolador (con el programador externo) con el
código del bootloader con los fusibles que necesitemos para la aplicación, estoy en lo
cierto?? 
En línea

WSalas Re: Bootloader USB para PIC18F4550 a


full.
PIC10
« Respuesta #11 en: 24 de Septiembre de 2008,
23:50:02 »

Mensajes: 36 Hola a todos, aqui les presento una aplicacion parecida.. para mas detalles ver aqui

Bootloader usando el PIC18F2550

Bootloader usando el PIC18F4550

« Última modificación: 25 de Septiembre de 2008, 00:25:57 por WSalas » En línea

scientist Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #12 en: 25 de Septiembre de 2008,
PIC24F
13:13:04 »

muy bonita la plaquita. precisamente estoy haciendo algo parecido, saludos


Mensajes: 997
En línea

NO le digas a DIOS que tienes un gran problema, dile a tu problema que tienes un GRAN DIOS!!
Alma mia y castillo mio, mi Dios en quien yo confiare....

jeremylf Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #13 en: 26 de Septiembre de 2008,
PIC24H
20:13:21 »

No entiendo algo, ocea que es necesario que en todos tus proyectos de ccs pongas ese
codigo para decir q grave despues de donde esta el bootloader de c18 ???

Salu2
Mensajes: 1339
En línea

El_Guitre Re: Bootloader USB para PIC18F4550 a


full.
Colaborador
« Respuesta #14 en: 27 de Septiembre de 2008,
PIC24H
01:08:49 »

Asi es en los proyectos que vayas a cargar en un PIC mediante el bootloader tenes que
Mensajes: 1046 incluir esas lineas para indicarle al compilador como organizar los datos en las
posiciones de memoria
En línea

Anuncios Google Descargar drivers USB Bootloader Pic USB

Páginas: [1] 2 3 4 5 6 7 8 9 10 11 12   Ir Arriba IMPRIMIR

« anterior próximo »

TODOPIC » Microcontroladores PIC » * PROYECTOS * (Moderadores: jfh900, MGLSOFT, LABmouse) » Bootloader USB para PIC18F4550 a full.

Ir a: => * PROYECTOS *   ir

SMF 2.0.14 | SMF © 2015, Simple Machines


SMFAds for Free Forums
XHTML RSS WAP2

Anda mungkin juga menyukai