TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: arnoldojrm en 14 de Julio de 2004, 00:05:00

Título: que es el bootloader
Publicado por: arnoldojrm en 14 de Julio de 2004, 00:05:00
hola amigos, alguien me podria indicar que es un bootloader, para que sirve?

Saludos desde Venezuela

y felicidades por este grandioso foro
Título: RE: que es el bootloader
Publicado por: RGL en 14 de Julio de 2004, 03:01:00
es un pequeño programa que se carga en el microntrolador (no todos lo soportan) que sirve para cargar por la puerta serie el programa que estemos desarrollando. Esto te da comodidad a la hora de desarrollar. Compilas y mandas por la puerta serie tu programa y se carga en el micro, todo esto sin sacar el micro de la placa.

Funciona bien y es útil en tiempo de desarrollo.
Saludos
Ricky
Madrid-España
Título: RE: que es el bootloader
Publicado por: Abago en 18 de Julio de 2004, 20:49:00
Ricky, parece que tu respuesta ha impactado...  
Título: RE: que es el bootloader
Publicado por: RGL en 19 de Julio de 2004, 02:39:00
Eso parece
Título: RE: que es el bootloader
Publicado por: Modulay en 19 de Julio de 2004, 09:00:00
¿Que diferencia hay entonces entre usar un bootloader y programar normalmente el pic mediante un programador en circuito?
Título: RE: que es el bootloader
Publicado por: Abago en 19 de Julio de 2004, 10:46:00
El ICSP se hace por medio de los pines data/clock... y necesitas de la alimentación del vpp.... y alguna cosita mas...

con el loader, solo necesitas conectar los pines de rx/tx al pc, y mandar el programa por puerto serie...

cada uno tiene sus pros y sus contras...
Título: RE: que es el bootloader
Publicado por: Modulay en 19 de Julio de 2004, 13:09:00
Mi placa base para 16F877 y su programador ICSP me traen loco y esto del bootloader puede ser mi salvación.
¿Te importaría volver a colocarlo para que me pueda hacer con él?
Título: RE: que es el bootloader
Publicado por: Abago en 19 de Julio de 2004, 15:07:00
el bootloader viene integrado en el Microcode Studio Plus...
supongo que lo tendrás...
Título: RE: que es el bootloader
Publicado por: Modulay en 19 de Julio de 2004, 16:39:00
Pero si no sé ni lo que es!! jajaj
No manejo picbasic,abago.
Es igual,ya lo busco por ahí
Saludos
Título: RE: que es el bootloader
Publicado por: RGL en 20 de Julio de 2004, 05:55:00
El bootloader no es algo específico de PBP. En la herramienta MicroCodeStudio viene integrado uno, pero existen para C, para asm, etc. De hecho los bootloader están escritos en asm.

La utilidad (por así decirlo) del bootloader consta de dos partes:
 1.- un fichero .HEX que se carga en el micro en cuestión. A esta parte se le llama bootloader

2.- De un programa de PC (es lo normal, aunque se puede enviar desde cualquier dispositivo) que se llama loader y que se encarga de transmitir por la puerta serie el fichero .HEX que hemos desarrollado para el microcontrolador.

Hay en internet algunos bootloader con sus loaders, incluso Microchip tiene desarrollados en su página web. Yo uso el de Microcode, pero si buscas en GOOGLE la palabra bootloader te saldrán bastantes.

Saludos
Ricky
Madrid-España
Título: RE: que es el bootloader
Publicado por: Modulay en 20 de Julio de 2004, 11:42:00
Acabo de bajarme el bootloader de microchip.Esto tiene muchas cositas para ir echandole un vistazo;pero hay un par de ellas que me llamaron la atención y las comento.
Según acabo de leer,parece que el booloader no funciona en la gama 16F8xx con cristales de 20 MHz (ese es precisamente el que tiene pueso mi paca base).
También pone que para los 16FxxxA el  archivo .hex debe ser,en tamaño,múltiplo de 4 bytes,lo cual me parece lógico por cuestión de que la memoria de programa se debe escribir en bloques de 4.Ya traté con ese tema aquí:

http://miarroba.com/foros/ver.php?temaid=2185699&foroid=6510

Visto lo visto,lo único que tengo que hacer es cargar el bootloader
en el pic como si fuera un programa normal,después conectar el pc al puerto serie de mi placa base 16F877 y ejecutar el downloader
para descargar al pic mi aplicación ¿no?
¿Alguien ha tenido el problemas con la velocidad del cristal?

Saludos
Título: RE: que es el bootloader
Publicado por: Abago en 20 de Julio de 2004, 12:08:00
Modulay, es tal como lo comentas.... cargar el loader... y después mandar el programa por medio de la usart...

sobre el tema del cristal... yo trabajo con 20Mhz, y funciona muy bien!!!
Título: RE: que es el bootloader
Publicado por: Modulay en 20 de Julio de 2004, 20:06:00
Que bonito es esto de la electrónica !!!
Ya soy felizzzz!!!
Una cuestión.Según el archivo de ayuda,hay que añadir la línea "org 5" al código de la aplicación que descarguemos al pic para que funcione.Sin embargo yo no lo hice y parece que funciona bien,eso sí,sólo he puesto un led a parpadear sin interrupciones ni nada.En el caso de que haya que hacerlo ¿en lenguaje C como sería y en qué parte del código?
Por cierto,Abago, ¡¡20 MHz y sin problemas!!
Título: RE: que es el bootloader
Publicado por: Abago en 20 de Julio de 2004, 23:53:00
enhorabuena modulay...
sobre el tema de como poner el org en C... no puedo ayudarte...
a ver si uno de los gurús del C dice algo...
Título: RE: que es el bootloader
Publicado por: pocher en 21 de Julio de 2004, 01:57:00
Para que al cargar el programa no se te machaque el bootloader hay que reservar sitio para el bootloader en memoria: #org 0x1F00,0x1FFF {} ----> lo situa entre esas posiciones de memoria

Un saludo
Título: RE: que es el bootloader
Publicado por: Modulay en 21 de Julio de 2004, 02:11:00
Gracias pocher por tu ayuda.Lo de reservar las últimas posiciones de memoria para no machacar el bootloader lo pillo.Mi duda está en los vectores de reset,interrupción y tal...
¿Hay que tenerlos en cuenta tb o basta con hacer lo que me comentas?
Saludos
Título: RE: que es el bootloader
Publicado por: pocher en 22 de Julio de 2004, 01:58:00
Solo eso, el resto "se os dará por añadidura" ... y es que los de CCS son muy listos.
Título: RE: que es el bootloader
Publicado por: odukec en 27 de Julio de 2004, 14:11:00
Hola amigos..

Que pena ser tan brutico.. pero si yo cargo a mi pic el bootloader y programo en c.. tengo que poner alguna cosa para que el programe en el pic se carge en algun sitio especifico de memoria y no sobre el bootloader, si es asi alguno me podria hacer el favor de explicarme.. es que a veces la cabeza no me da pa" tanto.. .

De antemano muchas gracias
Título: RE: que es el bootloader
Publicado por: Modulay en 28 de Julio de 2004, 00:22:00
Tienes que reservar las últimas 256 posiciones de memoria de programa.
Para un pic 16F877 sería añadiendo a tu programa la línea :
#org 0x1F00,0x1FFF {}
Y listo!!
Saludos
Título: RE: que es el bootloader
Publicado por: wofer en 25 de Septiembre de 2004, 16:12:00
¿Me puede alguien echar una mano con el bootloader?No consigo hacerlo funcionar.Lo ke hago es grabar primero el pic con el bootlr.hex,lo coloco en la placa board y luego le intento volcar un programa hecho en ccs usando el "pic downloader 1.07".pero no me funciona,se keda todo el rato "searching for bootloader".El programa ke intento volcarle en c es :

#include <16f876.h>
#org 0x1F00, 0x1FFF void loader16F876(void) {} //protect bootloader code for the 8k 16F876/
#use delay(clock=10000000)

#fuses HS,NOWDT,NOPROTECT,PUT,NOBROWNOUt,nolvp

main(){

     SET_TRIS_C (0b10000000);


     while(true){
     output_high(pin_c4);
     delay_ms(300);
     output_low(pin_c4);
     delay_ms(300);
   }
}


Por lo ke comenta RGL,¿hay un .asm especifico para C?


Saludos!!
Título: RE: que es el bootloader
Publicado por: wofer en 26 de Septiembre de 2004, 10:48:00
Ya esta!!!esto es increible,hay ver la velocidad con la ke se carga el programa!!!!Lo ke me faltaba era hacer el reset cuando pone "searching for bootloader"....Si eske no me entero!

Saludos!!
Título: RE: que es el bootloader
Publicado por: Abago en 26 de Septiembre de 2004, 20:59:00
Lo peor de todo, es el atinar al dar al reset en el momento oportuno...

Enhorabuena wofer
Título: RE: que es el bootloader
Publicado por: Nocturno en 27 de Septiembre de 2004, 00:53:00
¿Qué bootloader utilizas Abago?, a mi se me queda en Searching for bootloader por tiempo indefinido hasta que pulso reset. No tengo que tener ninguna prisa al darle.

Además, hay un truco que me contó Sisco que consistía en enviar el reset por el puerto serie y entonces sí que resultaba cómodo.

Ahora no lo encuentro, pero en cuanto lo vea te lo paso.
Título: RE: que es el bootloader
Publicado por: wofer en 27 de Septiembre de 2004, 12:56:00
Gracias abago,la verdad eske me ha costado un poco,je,je
Yo coincido con nocturno,tambien se me keda por tiempo indefinido hasta ke se restea y entoces es cuando empieza a grabar.El ke yo utilizo es el "pic downloader v1.07" ke me lo he bajado de esta pagina y viene con los fuentes del delphi incluidos:

http://www.x-robotics.com/ (esta en la seccion de software).

Nocturno,si puedes, ami tambien me interesaria tener lo de enviar el reset por el puerto serie.De momento lo ke hago es enviarle una orden por el puerto serie para ke temporice un tiempo(el suficiente para cerrar el puerto y abrir el downloader), y al cabo de ese tiempo me active una salida en la cual hay un transistor conectado al MRLC.....plan xapucilla,pero mejor ke tener ke ir a la placa a pulsar el reset!


Saludos!!
Título: RE: que es el bootloader
Publicado por: Abago en 27 de Septiembre de 2004, 13:38:00
ahora solo queda hacer una modificación al loader, pera que nadie pueda sacar el código del pic....
Es una pena que no se pueda usar el fuse CP
Título: RE: que es el bootloader
Publicado por: Colores en 29 de Marzo de 2005, 13:03:00
Hola a todos!!!
Estoy intentando hacer funcionar un bootloader de: http://www.etc.ugal.ro/cchiculita/software/picbootloader.htm
Estoy probando con este porque me funcionó a la primera, el problema que a la segunda ya no...
Parece ser que una vez que descargo mi codigo éste sobreescribe el bootloader y no vuelve a funcionar.
Entiendo que tengo que agregar un par de líneas a mi programa para proteger el código de arranque del bootloader, como #org 0x1F00,0x1FFF o ORG 5 (como comentan por ahíGiño.
El problema es que no se hacer eso con Proton+. He intentado poniendo al principio la línea "DECLARE BOOTLOADER = ON" que en teoría sirve para el bootloader de Microcode pero tampoco funciona...
He intentado poner ORG 4 en Proton+ y me da un error de compilación "Overwriting previous address contents"
He intentado cambiar los valores de ORG en el .PBP y compilarlo con Mpasmwin.exe y me tira 284 errores...

Alguien me puede decir como hacer esto?
En la web del bootloader dice que basta con agregar:
org 0
;clrf STATUS
clrf PCLATH
goto Main ....  donde? como? no me funciona...

O algún ejemplo de algún programa hecho en Proton+ que incluya esto. No se si estoy poniendo las líneas esas en el lugar dónde deben ir. O será que Proton+ sólo funciona con su bootloader "nativo"?
El pic es un 16F877A y el bootloader funciona correctamente... pero una sola vez.

Muchas gracias.
Título: RE: que es el bootloader
Publicado por: LordLafebre en 30 de Marzo de 2005, 09:02:00
Hola Amigos:

Hay algun tipo de diferencia entre el Bootloader y un In circuit Debugger???? o es lo mismo???

Saludos desde ECUADOR!!!!!

LordLafebre Sonrisa GiganteRebotado
Título: RE: que es el bootloader
Publicado por: Colores en 30 de Marzo de 2005, 19:14:00
No, no s lo mismo. El bootloader se usa para arrancar el pic en un modo que sirve para programarlo vía puerto serie, si pasa un tiempo determinado que el pic no recibe instrucciones para ser programado entonces comienza el programa del usuario. Es útil para reprogramar el pic sin sacarlo de su circuito.
El ICD sirve para debbugerar el programa. Existen simuladores que simulan el programa paso a paso mientras el pic envía por ICD la parte de código que está ejecutando.
Título: RE: que es el bootloader
Publicado por: Colores en 31 de Marzo de 2005, 11:28:00
Bueno, (me dije) me cansé... No pruebo más, ya no sé que hacer. El bootloader no funciona con Protón+, hace lo que quiere, graba una sola vez, el bootloader no lo sobreescribe porque sigue respondiendo, pero me dá error al grabar a la segunda vez.
Me autoconvencí que el sistema de Proton+ con el agregado del define de usar bootloader no funciona con otro boot + loader que no sea el de ellos.
Podrían haber previsto un par de parámetros extra en este define como para definir también el lugar que necesita el bootloader sin depender de esta instrucción que en realidad no se puede estar seguro de que está haciendo exactamente. Muy fácil para el usuario, pero no me funcionó...

Tomo aire de nuevo y encaro el problema desde otro punto de vista. Ya está!!! Si el problema es que no consigo el loader original de Protón+ y como quizás el problema está en que estoy usando un boot de terceros, me cambio de compilador BASIC a otro que tambien tenga loader y listo!!!

Me conseguí en MicroCode Studio Pro v2.42 con el loader y todo "full versión". Ahora si!!! Reescribí la mitad del código hecho en Proton para que funcionara en el basic de MicroCode, después de intentar compilar varias veces y reparar todos los errores salgo disparado a buscar el mítico .HEX del bootloader, donde estará?? Acá no, acá tampoco, a ver... Aca está!!!

Perfecto. NO HAY BOOTLOADER PARA EL 16F877A!!! Solo para el 16F877, me falta la "A".
Bueno. no hay que ser tan negativo, voy al sitio de Mecanique, http://www.mecanique.co.uk/ y me consigo un 16F877A.HEX que seguro está disponible como actualización del programa.
No hay nada sobre este micro... solo la frase. "If you require a free firmware file with a different configuration, please contact Mecanique." O sea, que tengo que mandar un mail para que me lo envíen.
Es que nadie usa este PIC? Tan raro es publicar un par de archivos de cosas que no se previeron anteriormente?
Lo mejor es que:
El compilador lo soporta y...
En la página de Mecanique dicen que el boot también.

Creo que mejor me voy a dedicar a otra cosa...
Alguien puede ayudarme de alguna manera?

Muchas gracias.
Título: RE: que es el bootloader
Publicado por: jorgeansuini en 31 de Marzo de 2005, 12:04:00
Hola:

Con respecto a microcode studio,estuve viendo y si tiene en su libreria el bootloader para el 877A.-

No tengo a mano el proton+,pero casi te aseguraria que tambien lo tiene.-

Saludos
Jorge
Título: RE: que es el bootloader
Publicado por: Colores en 31 de Marzo de 2005, 12:39:00
Muchas gracias por responder!!!
Ok, vuelvo a probar. MI MicroCode no tiene el .HEX del 877A. Si alguien me lo puede enviar a nightmixes@gmail.com
O si alguien tiene el loader del Proton+... tambien sirve (con su correspondiente .hex)

Gracias!!!
Título: RE: que es el bootloader
Publicado por: akydes_ en 01 de Abril de 2005, 04:12:00
bootloader para el 16F877A lo puedes encontrar en
http://microchipc.com

Es muy bueno y sencillo de usar.
Título: RE: que es el bootloader
Publicado por: Colores en 01 de Abril de 2005, 10:43:00
Gracias akydes_ , ya lo probé, tampoco me funciona.
No se si es un problema del boot o del programa mío que le cargo.
La situación actual es la siguiente:

-Tengo un programa hecho en Proton+ con el DEFINE BOOTLOADER ON (no me acuerdo exactamente como se escribe).

-Tengo el programador P16PRO que funciona correctamente.

-Grabo el boot con PICALL que tambien me funcionó siempre bien sin errores, inclusive lo verifico y está todo bien.

-El Tiny Bootloader graba bien mi codigo una sola vez, a la segunda ya no funciona, me da error. Cuando tengo ese error solo me deja usar la opcion de borrar flash.

-El bootloader de microchipc no me funcionó nunca. Tira errores al resetear el pic, si no lo reseteo tampoco funciona...

-El bootloader de Protón y de Microcode Studio no incluyen .HEX para el 16F877A por lo tanto tampoco me da ninguna solución.

-En mi programa los únicos fuses que dejo en ON son los de Power Up y Brown Out con oscilador en HS.

Espero que sirva para dar una idea de dónde estoy y en que le estoy errando.

Muchas gracias.
Título: RE: que es el bootloader
Publicado por: Colores en 04 de Abril de 2005, 21:01:00
Ok. jorgeansuini me paso el .Hex del boot para el 877A. Lo grabé en el pic, hice un programa basico (parpadear un led) y intenté con el MicroCode Loader ver 1.0.1.7.
El código de mi programa está hecho con MicroCode versión 2.42 (versión del PicBasic) y le agregué al principio la línea "DEFINE LOADER_USED 1".
Cuando en el loader pido la info del boot me dice "Firmware version 1.4", hasta ahí bien (creo), después intento grabarlo y primero me da un error como que el programa mío está hecho para otro modelo de pic, le pongo ignorar y grabar y me dice "Unable to write user code as the address extends into protected bootloader code space located at $0000".
Abro mi programa con el PICALL (programador) y veo que comienza en la posición 0 con el caracter " (tilde), 3 posiciones con un punto, y luego sigue. Sería así:

"...xxxxxxx donde las x son caracteres surtidos.

El bootloader comienza así:
vkkkvvvvv donde la v es una posición vacía, las k son cuadrados negros y el resto va todo vacío hasta casi el final, donde se aloja el bootloader.

No sé si esta información le puede servir a alguien, pero sigue sin funcionar.
A mi me está pareciendo que esto de los bootloader"s es un mito.

Salu2.

vkkkvvvvvvvvvkkkvvvvvvkkkvvvvvd
Título: RE: que es el bootloader
Publicado por: jorgeansuini en 05 de Abril de 2005, 06:29:00
Hola:

La versión que decís es la del pic basic pro ,quizas el problema es que la del microcode loader sea mas vieja, pero te aseguro que funcionan los loader ,porque es la manera usual que tengo para grabar micros .-

Si he visto que para usar pic basic pro y grabar y regrabar sin problemas los programas ,hay que usar microcode loader .-

Si uso proton ,grabo con el loader de proton y si uso CCS lo hago con el downloader.-

Por supuesto trato de adaptarme a las frecuencias que traen los distintos loader.-

Saludos
Jorge
Título: RE: que es el bootloader
Publicado por: Colores en 05 de Abril de 2005, 07:04:00
Voy a probar con una versión mas nueva de loader y te cuento.
Salu2.
Título: RE: que es el bootloader
Publicado por: Colores en 05 de Abril de 2005, 22:54:00
Funcionó!!!
Ahora si que no me para nadie!!! Me descargué la última version del MiroCode y funciona perfectamente con el .Hex que me pasó mi nuevo amigo (gracias nuevamente jorgeansuini).
Pero tuvo que ser con la ayuda que encontré en la sección Amigotes del foro, donde gracias a Luis Frino me enteré de que había salido una nueva versión del PBP de MicroCode y gracias a Lager que pubicó un truquito... je je!
Lástima que el ICD no funciona con el 877A, pero ese es otro tema (no se puede todo en la vida).

Realmente este foro es grande! Me sigo sorprendiendo de lo que aprendí y lo que adelanté con mi proyecto. Si la ayuda de ustedes no sabría ni siquiera lo que es un pic ni para que sirve y un montón de cosas más que aprendo todos los días gracias a este foro y su gente.

Salu2.
Título: RE: que es el bootloader
Publicado por: jorgeansuini en 06 de Abril de 2005, 06:49:00
Hola:

Te comento que el 877A si tiene ICD en microcode.-

Saludos

Jorge
Título: RE: que es el bootloader
Publicado por: Lager. en 06 de Abril de 2005, 20:27:00
Que onda pana Colores2,
Si bajaste la actualizacion(2.1.0.8) del link ........ TIENE habilitado ese pic.
SAlu2 pana