Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/12/2013 #1
Moderador

Avatar de D@rkbytes

Bootloader para PIC16F87XA
Hace tiempo estuve buscando un programa Bootloader que fuera compatible con varios lenguajes de programación.
Me puse en la búsqueda de algunos de los que existen y me di cuenta que disponen de poca información, algunos son complejos de usar y requieren siempre un MAX232 para funcionar.

Si bien este Bootloader que realicé también puede funcionar con un MAX232, he diseñado la interfaz con tan solo tres transistores NPN para llevar a cabo la comunicación con el programa Downloader.

El programa Downloader está diseñado en base al código fuente de Petr Kolomaznik.
Y los programas Bootloader están basados en los códigos fuente de Peter Huemer.

La interfaz del programa Downloader está completamente en español y su uso es intuitivo.


Para aquellas personas que no sepan lo que es un programa Bootloader, daré una breve descripción.
Un Bootloader es un programa que se aloja en las últimas direcciones de memoria del microcontrolador.
Reservando de esta forma la mayor parte de espacio disponible en memoria para alojar el programa de usuario.
El programa Bootloader es grabado al microcontrolador de forma ordinaria con cualquier programador.
Lo interesante de tener un programa de arranque en el microcontrolador, es que podemos reprogramarlo en tiempo real como si se tratase de una programación ICSP pero sin la necesidad de apagar nuestro circuito.
Con esta ventaja se puede reprogramar el microcontrolador y ver inmediatamente los cambios realizados.
Para realizar la reprogramación del microcontrolador, se requiere de un programa Downloader que ingrese el código de usuario al chip, esto se hace ya sea por medio de comunicación a través del módulo USB del microcontrolador o como en este caso por medio de comunicación serial RS-232.

Una de las principales ventajas del Bootloader es para aquellas personas que realizan programas donde se requiere el uso de comunicación serial RS-232, ya que se puede modificar el programa e inmediatamente ver reflejados los cambios sobre la interfaz de monitoreo sin necesidad de desconectar el circuito.

En mi caso particular este sistema me ha permitido el desarrollo de un programa de monitoreo de temperatura y humedad basado en un sensor DHT11 del cual no existe un modelo simulable en ISIS.

Adjunto los archivos HEX para el Bootloader, el esquema de la interfaz y el programa Downloader.

Espero que esta información y los programas sean de utilidad.

Por ahora únicamente adjunto 4 archivos HEX compatibles para este programa en 4MHz y 20MHz.
Si requieren algún archivo hex para otra frecuencia de trabajo, pueden solicitarlo y lo adjunto.
También adjunto algunos programas sencillos para probar el sistema en varios lenguajes de programación.
PICC de CCS, Ensamblador, BoostC, PICBasic Pro 3 y PICBasic de Proton.

Suerte.
22/03/2016 #2

Avatar de Dario

Hola amigo Darkbytes, muy buen aporte. te cuento que por algun motivo no me ha funcionado, estoy usando win7 y un convertidor puerto usb a serie basado en el ch340g. saludosss
22/03/2016 #3


Que interesante !!! Se puede hacer con cualquier gama de micros ??? Uso frecuentemente los de gama media...16F628A...!!!

Dario, tenés confirmado que el convertidos anda ??? yo compré alguna vez alguno, con chip FT232 (creo que era ese) y anda para algunos periféricos solamente.
23/03/2016 #4

Avatar de Dario

Inductancio dijo: Ver Mensaje
Que interesante !!! Se puede hacer con cualquier gama de micros ??? Uso frecuentemente los de gama media...16F628A...!!!

Dario, tenés confirmado que el convertidos anda ??? yo compré alguna vez alguno, con chip FT232 (creo que era ese) y anda para algunos periféricos solamente.
Hola amigo, el que yo tengo funciona perfecto. tengo entendido que los ft tienen algun problema, no recuerdo en este momento que era, pero los ch340g si funcionan y muy bien. creo que el bootloader solo permite hasta pic16f88. saludosss
23/03/2016 #5
Moderador

Avatar de D@rkbytes

Dario dijo: Ver Mensaje
Hola amigo D@rkbytes, muy buen aporte. Te cuento que por algún motivo no me ha funcionado, estoy usando win7 y un convertidor puerto usb a serie basado en el ch340g.
Debe ser porque este Bootloader por comodidad para la detección de carga del programa, usa el pin RTS del puerto serial para hacer el reset del microcontrolador, pero se puede hacer manualmente como en otros sistemas de Bootloader.
Ahora, cuando se usa un adaptador de USB a TTL, ya no son necesarios los transistores para adaptar los niveles.
De esa forma ya se puede realizar la conexión directamente a los pines Tx y Rx del microcontrolador.
Inductancio dijo: Ver Mensaje
¡Que interesante! ¿Se puede hacer con cualquier gama de micros?
Uso frecuentemente los de gama media. 16F628A.
Un Bootloader se puede cargar en cualquier PIC que tenga la capacidad de auto escribir su memoria Flash.
(Self-programming mechanism for Flash program memory)
También se tiene que considerar un PIC con al menos unos 4 KB de memoria Flash para permitir el alojamiento del programa Bootloader y disponer de espacio para el programa de usuario.

Cabe destacar que mientras más liviano sea el programa Bootloader, se dispondrá de más memoria para el programa que se desea cargar.
Sin embargo, los programas Bootloader livianos, por poseer menos instrucciones de comprobación de carga, también son más propensos a fallas.
23/03/2016 #6

Avatar de Dario

Hola D@rkbytes, de hecho estoy conectando directamente el adaptador al micro, pero no me funciona... seguramente estoy haciendo algo mal... saludosss
23/03/2016 #7
Moderador

Avatar de D@rkbytes

OK. Seguramente sí estás haciendo algo mal.
Yo he he utilizado un FT232RL, también un PL2303 y con ambos funciona perfectamente.

Adjunto los archivos .hex para el Bootloader y un programa de prueba para encender y apagar un LED con un PIC16F876A.
Va incluido el diagrama de conexiones para usar un adaptador.

Notas de arranque para los archivos de prueba:
  • Ya grabado el programa del Bootloader en el microcontrolador, se ejecuta el programa "PIC16 Downloader.exe"
  • Se selecciona un Baudrate de 38400 y el puerto en donde esté el adaptador de USB a RS-232
  • (Ver el administrador de dispositivos de Windows para determinar el puerto COM)
  • A continuación se selecciona el programa de prueba a cargar en el microcontrolador. "Bootloader_Test.hex"
  • Presionar el botón "Grabar [F4]" (F4 significa que también se puede presionar la tecla F4 del teclado)
  • Dar reset al microcontrolador y se deberá establecer la comunicación para cargar el programa.
Si la carga del programa fue exitosa, se mostrará un aviso en el programa.


Enseguida debe empezar a destellar el LED en el pin RB7 (Pin 28 del PIC16F876A)

Eso es todo, no debe haber problema si se siguen bien las instrucciones y el montaje es correcto.

Suerte.
Imágenes Adjuntas
Tipo de Archivo: jpg BL Carga exitosa.jpg (72,3 KB (Kilobytes), 112 visitas)
Archivos Adjuntos
Tipo de Archivo: rar Archivos Prueba Bootloader.rar (6,2 KB (Kilobytes), 19 visitas)
14/09/2016 #8


D@rkbytes dijo: Ver Mensaje
Hace tiempo estuve buscando un programa Bootloader que fuera compatible con varios lenguajes de programación.
Me puse en la búsqueda de algunos de los que existen y me di cuenta que disponen de poca información, algunos son complejos de usar y requieren siempre un MAX232 para funcionar.

Si bien este Bootloader que realicé también puede funcionar con un MAX232, he diseñado la interfaz con tan solo tres transistores NPN para llevar a cabo la comunicación con el programa Downloader.

El programa Downloader está diseñado en base al código fuente de Petr Kolomaznik.
Y los programas Bootloader están basados en los códigos fuente de Peter Huemer.

La interfaz del programa Downloader está completamente en español y su uso es intuitivo.
http://www.forosdeelectronica.com/at...1&d=1388107683

Para aquellas personas que no sepan lo que es un programa Bootloader, daré una breve descripción.
Un Bootloader es un programa que se aloja en las últimas direcciones de memoria del microcontrolador.
Reservando de esta forma la mayor parte de espacio disponible en memoria para alojar el programa de usuario.
El programa Bootloader es grabado al microcontrolador de forma ordinaria con cualquier programador.
Lo interesante de tener un programa de arranque en el microcontrolador, es que podemos reprogramarlo en tiempo real como si se tratase de una programación ICSP pero sin la necesidad de apagar nuestro circuito.
Con esta ventaja se puede reprogramar el microcontrolador y ver inmediatamente los cambios realizados.
Para realizar la reprogramación del microcontrolador, se requiere de un programa Downloader que ingrese el código de usuario al chip, esto se hace ya sea por medio de comunicación a través del módulo USB del microcontrolador o como en este caso por medio de comunicación serial RS-232.

Una de las principales ventajas del Bootloader es para aquellas personas que realizan programas donde se requiere el uso de comunicación serial RS-232, ya que se puede modificar el programa e inmediatamente ver reflejados los cambios sobre la interfaz de monitoreo sin necesidad de desconectar el circuito.

En mi caso particular este sistema me ha permitido el desarrollo de un programa de monitoreo de temperatura y humedad basado en un sensor DHT11 del cual no existe un modelo simulable en ISIS.

Adjunto los archivos HEX para el Bootloader, el esquema de la interfaz y el programa Downloader.

Espero que esta información y los programas sean de utilidad.

Por ahora únicamente adjunto 4 archivos HEX compatibles para este programa en 4MHz y 20MHz.
Si requieren algún archivo hex para otra frecuencia de trabajo, pueden solicitarlo y lo adjunto.
También adjunto algunos programas sencillos para probar el sistema en varios lenguajes de programación.
PICC de CCS, Ensamblador, BoostC, PICBasic Pro 3 y PICBasic de Proton.

Suerte.
Mi enhorabuena D@rkbytes con esta aplicacion, me estaba volviendo loco y no conseguia grabar con todas las que habia probado, pensaba que lo estaba haciendo mal y buscando por el foro encontrado esta que creaste tu, es una pasada carga a una velocidad impresionante, gracias por tu aporte.
14/09/2016 #9


Una pregunta hago, si por necesidad necesito utilizar, en este caso un 16F877A, los pines C6 y C7 que son los de transmision y recepcion, para realizar otras funciones, como se deve hacer, si es que se puede?
14/09/2016 #10
Moderador

Avatar de D@rkbytes

Se supone que después de usar el Bootloader esos pines quedan libres, a menos de que los sigas usando como USART
14/09/2016 #11


Entendido, gracias.
Era por si cabia alguna posibilidad.
16/09/2016 #12


D@rkbytes te hago 2 preguntas, para saber el porque, son con referencia a las siguientes linias de codigo.
Código:
#org 0x1F00, 0X1FFF {}
#use rs232(baud=38400, xmit=PIN_C6, rcv=PIN_C7)
La primera linia, por lo que leido, da a entender que lo que hace es comprobar si el codigo que se va a cargar en el micro, tiene suficiente espacio, si no lo tiene, se supone que no lo deja cargar y te avisa no es asi?.

La segunda linia, es obligado cargarla para que las proximas veces, si se necesita cargar otros codigos, te deje cargarlos?, digo esto porque haciendo pruebas me deja cargar otros codigos, entonces cual es su funcion enconcreto?.
16/09/2016 #13


Este booloader hace ostento de ocupar unos 100bytes... Está disponible el código fuente, para personalizarlo, Yo lo mire rapidamente a ver si corria en un 16F819...
Para la mísma época finalmente logre que mis pequeños proyectos corran en los Atmega328p, con bootloader a 1, 4 y 8mhz asi que me olvide del asunto en los microchips pic.
En los Atmega empleo una de esas interfaces usb con ft232 tx, rx y una tercer linea para hacer el reset...

http://www.etc.ugal.ro/cchiculita/so...bootloader.htm
17/09/2016 #14


Te puedo decir que lo he probado y no consigo hacerlo funcionar.

Es cierto que utiliza menos bytes que con los de microchip y el de D@rkbytes, pero sinceramente con el de D@rbytes me va de lujo y el de microchip ya descubri por que no me hiba, era que no pulsaba bien el reset cuando le daba a cargar el programa, ahora con el de microchip tambien me va de lujo.

Los he comprobado los 2 y van como un tiro de rapidos.
19/09/2016 #15


Hola buenos dias, D@rkbytes o quien lo sepa, quiero hacer una pregunta, con los programas que uso para grabar el pic, tanto el de D@rkbytes como el de microchip, me dado cuenta, o eso creo yo, que no se puede leer lo que se graba en el pic, solo deja grabar.

La pregunta es simple,¿con que programa puedo leer lo grabado? es que estado mirando y no veo algo que me diga como leerlos sin tener que sacarlos de la tarjeta.
19/09/2016 #16
Moderador

Avatar de D@rkbytes

Un Bootloader sólo escribe el programa en la memoria flash del microcontrolador, por eso no requiere del voltaje VPP, y no está hecho para leer.
Si quieres leer el microcontrolador sin quitarlo de la tarjeta, realiza la lectura por las terminales ICSP.

A final de cuentas, podrás notar que ICSP es una mejor opción para grabar el PIC, pero de ésta forma sí se requiere el voltaje de +13 V para VPP.
19/09/2016 #17


Vale. Gracias, D@rbytes. Probaré a aprender hacerlo por ICSP, que veo que no es complicado.
Lo único, es que tendré que modificar los programas y las tarjetas para grabar y leer por ICSP.
Ya te cuento. De nuevo gracias por estar ahí chicarrón. Un saludote.

---------- Actualizado después de 3 horas ----------

Te comento, D@rkbytes. Ya he hecho mis primeras pruebas por ICSP y sinceramente me gusta más que por puerto serie, es una pasada lo bien que graba y todo funciona correctamente.

Nuevamente, gracias por tu ayuda.
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.