TODOPIC
Microcontroladores PIC => Programadores => Mensaje iniciado por: Menta en 11 de Abril de 2010, 05:18:34
-
Me interesa usar la técnica del bootloader para cargar un .hex en un pic18F4550.
Es para una aplicación comercial, y requiero que un programa que yo diseñado por mí en VB pueda, entre otras cosas, pasárselo por usb...
Es decir, no quiero usar el PDFSUSB.exe ni nada por el estilo... a no ser que lo pueda usar por líneas de comando, es que necesito que sea transparente y que el usuario para actualizar enchufe, apriete un botón y listo... el asunto es que no sé por dónde empezar. Qué me recomiendan?
Existe algún bootloader open source? o una AN para este fin?
me interesan ejemplos, links de lectura, webs, cualquier material es bien recibido.
Muchas Gracias
EDITO: a ver si me explico mejor con lo de open source... además de poder comandarlo en forma transparente desde la pc, necesito programarlo en SDCC y según lei en el hilo Bootloader USB para PIC18F4550 a full. (http://www.todopic.com.ar/foros/index.php?topic=23135.msg185279#msg185279) de picmouse sólo funciona con el C18 de microchip y lo mismo debe ocurrir con el de CCS o no? por eso necesito saber de alguno de código libre o en su defecto saber más o menos como encarar hacerlo uno mismo, no encuentro una AN al respecto :(
-
Hola Menta:
Creo que no has leído por completo ese hilo. Mira esta respuesta, es el 5º o 6º post, dice qué hay que hacer para que funcione en CCS
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, aqui lo unico que tenemos que anexar a nuestro programa es:
#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
#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()) {}
while (true)
{
usb_task();
if(usb_enumerated())
{
usb_cdc_putc(0x41);
}
}
}
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
Y en este enlace hablan de cómo hacer un bootloader con el SDCC
http://sourceforge.net/apps/trac/sdcc/wiki/Compile%20and%20link%20a%20bootloader%20using%20SDCC
Mi inglés es pésimo, pero me parece ver similitudes con la forma de hacerlo en CCS.
Saludos
-
Revisa el siguiente bootloader que ha comentado felixls en otro post, puede ser de mucha utilidad:
http://vasco.gforge.enseeiht.fr/
Edit: El anterior es solo para Linux :? Mejor este:
http://www.diolan.com/pic/bootloader_dwn.html?zenid=7e6216f3a88d0dbdd445ebaeb5b8a90c
:mrgreen:
Saludos!
-
gracias manofwar, tienes razón, no leí todo el hilo ya que mis dudas eran básicas y al poner bootloader en el buscador salen muchos hilos y lo que pedía era en sí un consejo de por dónde me convenía entrarle al tema... porque no sabía lo que estaba hecho y lo que no... al ver que decía picmouse que era sólo para c18 desestimé el hilo... mi inglés es como el tuyo... digamos que entiendo, pero voy muy lento y me saturo rápido... voy a intentar leerlo, muchas thanks...
gracias suky, creo que este último link me va a servir, justo lo acababa de encontrar... está hecho en mplab (asm) pero está super documentado, como para que hasta un tipo tan duro como yo lo entienda, sólo que ahora tengo que ponerme a leer todo, de principio a fin...
Algo muy interesante que no había tenido en cuenta... tiene un sistema de encriptación del .hex !!! Me es muy útil y ni siquiera lo había considerado.
-
Ese último enlace me va a servir a mí también. Estaba buscando algo del usb en asm.
Gracias Suky.
Saludos
-
bueno otra es que el PDFSUSB.exe y el HID usb de los bootloaders dentro de sus aplicaciones traen el Codigo fuente de estos para poder modificarlos a gusto o si no usando el ResHack y un editor Hexadecimal puedes retransformarlos sin problema alguno