TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: El_Guitre en 19 de Septiembre de 2008, 19:37:18

Título: Botloader para 18F4550
Publicado por: El_Guitre en 19 de Septiembre de 2008, 19:37:18
Hola amigos, resulta que estamos ideando algunas modificaciones para el robot sumo y una de las ideas es cargarle un botloader al PIC para poder modificar el programa "in situ" (sobre la pista) conectando el bot a una notebook. Se me ocurrió que podría ser con un botloader USB, aprovechando que estamos usando un 18F4550 y que las notebook que tenemos no tienen puerto serie.

Alguien sabe de algún botloader de estas características, nunca he usado uno y no encontré tampoco. Gracias de antemano.   
Título: Re: Botloader para 18F4550
Publicado por: LABmouse en 19 de Septiembre de 2008, 19:50:30
Microchip te regala el Bootloader para el PIC18F4550. Si quieres empezamos a trabajarle para entender como usarlo.

Para empezar, solo debes descargarte el archivo USB Bootloader Setup.EXE (http://ww1.microchip.com/downloads/en/DeviceDoc/USB_Bootloader_Setup.exe).

Instalarlo y listo a trabajar con el.

Debes tener previamente instalado C18 para poder trabajar con este bootloader.

Para usarlo se debe programar por primera vez el microcontrolador usando un programador externo por el pierto ICSP de siempre. Ya con ese código residente en memoria del PIC, solo es necesario usar una aplicación.exe que quedo también instalada con lo que bajamos anteriormente y le enviamos el .hex al pic por USB y que el mismo se programe.

La unica exigencia es que cada vez que quieras desarrollar otro programa, es necesario y obligatorio trabajar en C18 y usando la plantilla que tambien te da MICROCHIP.

No perdemos nada intentando y bueno, quedaria aca para que quien trabaje C18 usen el modo bootloader.

En un rato seguimos con este hilo, primero voy a ensamblar el programador y el PIC con el que trabajare esta practica.. En un rato nos hablamos!

SALUDOS!
Título: Re: Botloader para 18F4550
Publicado por: El_Guitre en 19 de Septiembre de 2008, 19:56:26
Muchas gracias PICMouse por tu respuesta, me parece barbara tu propuesta, mi unico problema es que siempre programe con CCS y de C18 cero idea. Pero es cuestien de ponerse.... vamos a intentarlo. A ver que sale. En un rato descargo el archivo de microchip
Título: Re: Botloader para 18F4550
Publicado por: LABmouse en 19 de Septiembre de 2008, 20:08:13
Lo de C18, a mi me pasa igual, siempre trabajo con CCS, pero hagamosle con C18, luego pasamos a CCS y vamos a ver a donde llegamos jejeje :D.

Bueno...Me acabo de enterar que hoy es el día del Amor y la Amistad y pues no se puede dejar pasar asi que primero ensamblo el programador y el PIC4550 que usare, luego salgo un rato con mi esposa y mas adelante nos veremos para trabajar en este proyecto.

SALUDOS!!
Título: Re: Botloader para 18F4550
Publicado por: El_Guitre en 20 de Septiembre de 2008, 13:18:13
Bueno  Ernesto, espero que lo hayas pasado lindo en el dia del amor y la amistad con tu esposa.

Ya tengo descargado e instalado lo que me pasaste de microchip, tambien descargue la version de evaluacion por 45 dias del picc18 pero tengo problemas para activarlo  :? espero solucionarlo en los priximos minutos, por lo demas ya estoy listo para empezar a traaar en nuestra practica. Ahora voy a comer algo y vuelvo para seguir con esto... Saludos.
Título: Re: Botloader para 18F4550
Publicado por: jeremylf en 20 de Septiembre de 2008, 13:26:51
Buenas.

El CCS tb tiene un ejemplo para un bootloader, que concretamente es el EX_LOAD.c que hace uso de la libreria LOADER.c que funciono bien hasta cierto punto, cuando le puse junto con USB daba fallos  :?  Pero acabo de ver que hay dos ejemplos mas: ex_bootload y ex_bootloader, recien me doy cuenta de ellos xD

Quiza por ahi algo funcione bien.

Suerte.
Salu2.
Título: Re: Botloader para 18F4550
Publicado por: El_Guitre en 20 de Septiembre de 2008, 13:35:08
Gracias por el dato jremyf, ahora los chequeo y veo como trabajar tambien con ellos, seria bueno poder implementar lo mismo a la par con picc18 y ccs asi nos sirve a todos. Ya veremos...

Bien, mientras espero de la ayuda de Ernesto con el C18, voy a ir tratando de avanzar con la version de CCS. Acabo de abrir el ejemplo EX_USB_BOOTLOADER.C, este ejemplo nos ofrece un bootloader USB haciendo uso de la clase CDC creandonos un puerto COM virtual en la PC por donde cargaremos el bootloader. A primera vista es justo lo que estoy necesitando.

Ahora a montar el pic y dems componentes para realizar unas pruebas....
Título: Re: Botloader para 18F4550
Publicado por: jeremylf en 20 de Septiembre de 2008, 13:57:31
De nada.

Bueno, por ayudar en algo.. El LOADER.c lo que hace es esperar via 232 caracteres de un correspondiente .hex, esto asta que se encuentre el caracter de "retorno de carro" (0xD, que es cuando se aprieta "ENTER") o el buffer este lleno. Cuando pase esto el programa verifica si el primer caracter enviado es ':' que en todos los archivos HEX esta, que es como su iniciacion para algo nuevo o algo asi xD.

Lo que no entiendo bien, es que, cuando le llega toda una linea de codigo hex el programa ahi mismo lo ejecuta y lo guarda en la ROM y RAM correspondiente dependiendo de lo que haga el hex enviado y para cuando se termine de enviar todas las lineas del hex el programa aun sige en operacion normal como si hubiera si se necesitara del reset para cargarlo definitivamente... es por esto que alfinal ponen reset_cpu().

Bueno no estoy del todo seguro.
Salu2
Título: pipo2
Publicado por: Antagonist en 17 de Junio de 2009, 17:54:37
hola, tengo el programador pipo2, es posible cargar el bootloader con este programador, me hago lio por lo del icsp que mencionan mas arriba. Pero si no estoy mal creo que es posible, corrijan me si estoy mal.
gracias.
Título: Re: Botloader para 18F4550
Publicado por: Nocturno en 17 de Junio de 2009, 18:20:50
El bootloader de CCS va estupendamente y no cuesta mucho ponerlo en marcha. Para descargar un fichero HEX al PIC basta con abrir el SIOW.EXE que también viene con CCS y pulsar el botón "Download".
Título: Re: Botloader para 18F4550
Publicado por: c4_esp_VR en 19 de Junio de 2009, 04:57:40
Hola compañeros:

Tambien estoy interesado en el bootloader por usb con CCS y me gustaría al menos probarlo. Pero para ello alguien podría poner algún esquemático de como sería el bootloader en un 18f2550 o un 18f4550 o similar y como funcionoría, más que nada porque creo recordar que hay que poner un botón o una serie de botones para programarlo si no me equivoco.

Un saludete y gracias.
Título: Re: Botloader para 18F4550
Publicado por: stk500 en 19 de Junio de 2009, 05:56:20
Yo creo es este? no ???
http://www.create.ucsb.edu/~dano/CUI/

saludo
Título: Re: Botloader para 18F4550
Publicado por: c4_esp_VR en 19 de Junio de 2009, 06:48:51
Muy bueno stk500:

Por otro lado antiguamente había problemas de meter programas en el PIC con el CCS debido al espacio que le hace falta al pic para meter el programa y había que realizar un org3000 o algo así creo recordar. ¿¿¿Dicho tema con las nuevas librerias de bootloader de ccs se han solucionado???

Muchas gracias compañeros foreros.
Título: Re: Botloader para 18F4550
Publicado por: Nocturno en 19 de Junio de 2009, 07:03:20
Efectivamente, sólo tienes que poner un include al principio de tu programa y el bootloader se encarga de colocar cada cosa en la zona de memoria que le toca.
Título: Re: Botloader para 18F4550
Publicado por: c4_esp_VR en 19 de Junio de 2009, 08:02:03
Hola a todos:

Bueno voy a centrarme un poco e intentar ver los pasos que hay que realizar para el bootloader.

1.-Instalar el bootloader en el pic con un programador ICSP preferiblemente, es decir el programa USB_BOOTLOADER.H
2.-Crear un programa con el CCS como viene siendo habitualmente al estilo

Código: [Seleccionar]
#include <18F4550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP //fuses
#use delay(clock=12000000)
#use rs232(baud=115200, xmit=PIN_C6, rcv=PIN_C7, stream=PC)

#if __USB_PIC_PERIF__ && defined(__PCH__)
 #define USB_CON_SENSE_PIN PIN_B5
#endif

/*
 Configure, then load the bootloader definitions
*/
#define _bootloader
#include <usb_bootloader.h>

#define LOADER_ISR 0x28
#build(interrupt=LOADER_ISR)

// Includes all USB code and interrupts, as well as the CDC API
#include <usb_cdc.h>

void main()
{
printf("PIC iniciado");
delay_ms(2000);
while(TRUE)
{
printf("Hola Mundo");
delay_ms(1000);
}
}

3.- Iniciar el programa SIOW.EXE
4.- Pulsar el botón de programación del PIC, es decir el de la placa que está conectado el RB5 de nuestro PIC.
5.- Pulsar el botón de SIOW.EXE de programación del PIC.

Con estos pasos tendríamos el programa en nuestro micro a través de bootloader...

Seguriiiisiimo que me equivoco en algo así que corregirme en todo lo que podais  :mrgreen: :mrgreen: :mrgreen:

Un saludete y gracias.

P.D: Estoy muy contento ya que es mi post número 300 :-/ :-/ :-/
Título: Re: Botloader para 18F4550
Publicado por: Nocturno en 19 de Junio de 2009, 08:19:28
Primero tienes que compilar el ejemplo que trae CCS, creo que se llama ex_usb_bootloader.c y grabarlo en el micro.

Luego pones el include que has mencionado en tu código y lo compilas.
El HEX que acabas de generar será el que puedas subir mediante SIOW.
Título: Re: Botloader para 18F4550
Publicado por: albermillan69 en 03 de Julio de 2010, 12:37:13
Buenas a todos!!

Primero tienes que compilar el ejemplo que trae CCS, creo que se llama ex_usb_bootloader.c y grabarlo en el micro.

Luego pones el include que has mencionado en tu código y lo compilas.
El HEX que acabas de generar será el que puedas subir mediante SIOW.

Ok una vez q grabo el pic (18f4550) con el programa ex_usb_bootloader (ya compilado y grabado en el pic)

dices q luego se colocan la librerias!! cuales librerias?

y donde consigo el SIOW.EXE?

Estoy usando PCWHD COMPILER 4.093

Espero su ayuda!!! Gracias....
Título: Re: Botloader para 18F4550
Publicado por: droky en 03 de Julio de 2010, 15:10:15
El SIOW está en el directorio donde tienes instalado el PICC compilador de CCS.
Como bien mostró c4_esp_VR  el proceso es simple y ha dejado un ejemplo de programa con bootloader.
Solo tienes que añadir tus includes, defines.. etc y tus funciones. Sustituyes la funcion main por la tuya propia y lo compilas.
No tienes que preocuparte por el tema de las librerías. El CCS se encarga de ponerlas en su sitio.
Salu2
Título: Re: Botloader para 18F4550
Publicado por: albermillan69 en 03 de Julio de 2010, 17:59:40
Es q lo q no entiendo es para coloca esto?? si segun no hace falta mas nada!!

Código: [Seleccionar]
#if __USB_PIC_PERIF__ && defined(__PCH__)
 #define USB_CON_SENSE_PIN PIN_B5
#endif

/*
 Configure, then load the bootloader definitions
*/
#define _bootloader
#include <usb_bootloader.h>

#define LOADER_ISR 0x28
#build(interrupt=LOADER_ISR)

// Includes all USB code and interrupts, as well as the CDC API
#include <usb_cdc.h>