TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado 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.
-
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!
-
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
-
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!!
-
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.
-
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.
-
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....
-
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
-
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.
-
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".
-
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.
-
Yo creo es este? no ???
http://www.create.ucsb.edu/~dano/CUI/
saludo
-
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.
-
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.
-
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
#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 :-/ :-/ :-/
-
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.
-
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....
-
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
-
Es q lo q no entiendo es para coloca esto?? si segun no hace falta mas nada!!
#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>