Autor Tema: Bootloader para PIC16F877A por cable serial desde cero  (Leído 17252 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Bootloader para PIC16F877A por cable serial desde cero
« en: 05 de Enero de 2011, 23:55:16 »
Hola amigos de TodoPIC, tengo aproximadamente 1 año en el foro, pero nunca habia publicado nada, después de dedicarme a succionar información muy buena e interesante de este foro y de internet en general, creo que ya va siendo hora de retribuir un poco a la sociedad que me vio nacer.

El último proyecto en el que estoy trabajando es en realizar un bootloader para el PIC16F877A ya que anteriormente habia escuchado sobre los bootloader para los pics 18, supuse que también se podrían realizar para los 16, y efectivamente se puede, así que me di a la tarea de investigar como realizarlo, no fue facil, pero por fin heche a andar mi bootloader que anda de 10!.

Cabe destacar que gracias al programa que utilicé para cargarlo en el PIC NO necesito modificar ningún programa para que funcione con el bootloader, ya que este se encuentra ubicado en la parte baja de la memoria.

Poco a poco ire publicando info y fotos de como lo lleve a cabo, les proporcionare todos los archivos necesarios para lograrlo y la explicación correspondiente desde el inicio, hasta hacerlo funcional, espero que este tema no este ya en el foro y que sea de su interes, me gustaria saber su opinión al respecto.
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado fidodido18

  • PIC18
  • ****
  • Mensajes: 312
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #1 en: 06 de Enero de 2011, 00:01:50 »
Hola amigos de TodoPIC, tengo aproximadamente 1 año en el foro, pero nunca habia publicado nada, después de dedicarme a succionar información muy buena e interesante de este foro y de internet en general, creo que ya va siendo hora de retribuir un poco a la sociedad que me vio nacer.

El último proyecto en el que estoy trabajando es en realizar un bootloader para el PIC16F877A ya que anteriormente habia escuchado sobre los bootloader para los pics 18, supuse que también se podrían realizar para los 16, y efectivamente se puede, así que me di a la tarea de investigar como realizarlo, no fue facil, pero por fin heche a andar mi bootloader que anda de 10!.

Cabe destacar que gracias al programa que utilicé para cargarlo en el PIC NO necesito modificar ningún programa para que funcione con el bootloader, ya que este se encuentra ubicado en la parte baja de la memoria.

Poco a poco ire publicando info y fotos de como lo lleve a cabo, les proporcionare todos los archi
vos necesarios para lograrlo y la explicación correspondiente desde el inicio, hasta hacerlo funcional, espero que este tema no este ya en el foro y que sea de su interes, me gustaria saber su opinión al respecto.

bueno ya es hora de que los foreros succionen el bootloader!  ;-) esperando avances

Desconectado darck_khronos

  • PIC18
  • ****
  • Mensajes: 493
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #2 en: 06 de Enero de 2011, 00:10:10 »
En la carpeta de CCS viene un Boot para los pic 16, en los microchip solutions tambien vienen, incluso los que usan el breener tienen el bootloader con el 877 y el 88, pero hay que ver el tuyo para ver la interfase

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #3 en: 06 de Enero de 2011, 10:52:11 »
Esperando tu sistema de bootloader para pic 16 y en especifico el pic16f7877A, por lo que explicas usted construyo hasta el codigo bootloader que va carga al pic para que luego sin necesidad de un programador solo via rs232 pueda cargar el codigo que cumplira con una funcion determinada para que el pic opere.

haa y logico que debe haber una interface MAX232 para la comunicacion con el PC o caso contrario que el codigo se le cargue con otro micro y la comunicacion sea ya directa TTL.

Saludos espero ver su proyecto.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #4 en: 08 de Enero de 2011, 00:29:37 »
Bueno, en realidad me falto proporcionar un poco de información, realmente el firmware del PIC no lo escribí yo, ya que esos programas para realizar bootloader son algo complejos, la intención de este post es describir paso a paso el proceso de puesta a punto del sistema de booteo desde donde conseguir los archivos necesarios, hasta grabar programas serialmente.

Ahora si, a lo que nos compete, primero que nada, espero que sepan lo que es un bootloader, a grandes rasgos es una interfaz que permite programarle directamente al micro los datos que conforman el programa, por medio de un puerto, en este caso el puerto serial, como el PIC 16F877a trae USART, solamente es necesario dotarlo de conectividad y a programar, (no se preocupen, posteriormente abordaré a detalle el circuito), dicha interfaz programa directamente la memoria flash del PIC, por lo que no es necesario un programador, funcional no creen?

Para poder programar dicho firmware en el PIC, necesitaremos programarlo una sola vez por el método convensional del programador, una vez que el firmware se encuentra cargado, ya podemos botar a la basura el programador jajaja, no se crean!.

Necesitamos 2 cosas:

1.- El firmware en formato hexadecimal, listo para grabarlo en nuestro PIC.
2.- El programa para PC desde donde cargaremos los programas.

todos los archivos necesarios se encuentran en la página de Microchipc (ojo, no Microchip), y se encuentra en el siguiente enlace bootloader 16F7877A

El nombre del archivo es Shane Tolmie PIC16F87xA bootloader v9-60, dentro de la página mencionada lo encontrarán dentro del cuadro rojo:


Una vez que lo bajaron y lo descomprimieron, van a encontrar que en su interior hay muchas carpetas, unas referente al codigo fuente en ensamblador para el 16F87x y otra para el 16F87xA, otras dos referentes al codigo fuente en hexadecimal igual, para ambos PICs, en este caso, abriremos la que dice "bootloader hex files for 16F87xA compatible bootloader", despues la carpeta legacy y allí dentro encontraran varias versiones distintas:


como se observa hay para el 16F873A, 16F876A y 16F877A, para cristal de 16 y de 20 MHz, y para velocidades de transmision de datos de 38400 baudios y de 56000 baudios, escojan la que se adecue más a sus necesidades. Yo escojí el cristal de 20 MHz y la velocidad de transmision de 56000 baudios. La velocidad de transmision que escojan, es la que le tienen que poner a todos sus programas que utilicen comunicación serial para que funcionen adecuadamente.

Bueno, pues lo que restaria es cargar el firmware que seleccionaron con el programador de su preferencia y dejar el PIC listo con dicho software, espero que en este tema no haya dudas.

Una vez que hemos cargado el firmware, toca hablar del software para la PC, también se encuentra dentro de los archivos que bajaron, como yo tengo Windows, hablare solamente del programa para windows, que se encuentra en la carpeta "Downloader Windows in BC++ plus terminal", es el "PICbootPlus", cuyo ícono es un micro. Aquí tienen una captura del programa:


Como se puede ver es sumamente sencillo, y además trae incluida una hiperterminal de comunicación serial, solamente seleccionan su puerto (en mi caso es el COM1), la velocidad del Baudrate que debe ser la misma que en sus programas (por lo general yo manejo 56000) y finalmente escoger su programa para cargarlo por rs-232. Esta parte la veré más a fondo después de hablarles del circuito que ocupo.

Tengo que ser franco con ustedes, no he usado el programa al 100%, por lo que no se para que son algunas funciones, como EEPROM, o las casillas CR->CR+LF in y out, la casilla Local eccho regresa el valor que se envia al PIC, para comprobar si llego bien.

Con estos pasos ya deberían de estar listos para programar por el bootloader, pero falta hablar sobre el circuito.


CIRCUITO DE PRUEBA

Debido a que yo buscaba una tarjeta que me sirviera para múltiples propósitos, me diseñé una propia, que se basa en el MAX232 para la comunicación, además le agregué algunas cosillas como 8 leds para jugar con las teclas, un puerto para LCD, para mostrar lo que está pasando y 9 conectores para servos, para que en el futuro pueda controlar un robot, claro, que para poder utilizarlos, hay que cargarle un programa adecuado.

Esta es la placa que diseñe y sus módulos:


Solamente hubo un pequeño problema al hacer mi placa, y es que la hice antes de meterme con el bootloader, por lo que no le deje un boton para cargarle el programa, lo cual es facilmente corregible.

Debido a que ya no pienso volver a hacer la placa, no corregí lo del boton, más sin embargo, les entrego los archivos del esquemático y del PCB en Eagle y les diré donde va el botón.

Archivos Eagle PCB y esquematico de interfaz RS232 PIC16F877A

Para ponerle el botón de carga del programa, se tiene que hacer lo siguiente:

debido a que cuando se programa por bootloader no se utiliza el conector ICSP, se pueden poner en los pines correspondientes a VPP, GND y VCC el botón y la resistencia de 10k.

OJO!!!! ES MUY IMPORTANTE QUE SE PONGA EL JUMPER QUE ESTÁ SEÑALADO EN LA IMAGEN, DEL LADO DE VPP, DE LO CONTRARIO EL BOOTLOADER NO SERVIRÁ.

A los que quieran utilizar otro hardware, pueden buscar algunos otros en internet.



Bueno, ya llegamos a la recta final, y esta es proceder a programar cualquier programa por bootloader, lo que hay que hacer es conectar la alimentación de 5 volts a la placa (la alimentación de salida es para alimentar otras placas), con lo que el LED verde se debe prender, luego, si disponemos de un LCD, lo podemos poner el el puerto para dicho fin, abrir el PICbootPlus, escoger todos los parámetros adecuados, escoger el programa, y presionar el boton "write", con lo que el programa se pondrá a la espera del bootloader, a continuacion vamos a la placa y presionamos una vez el boton que instalamos y se verá una barra de progreso, en poco tiempo y si no hay problemas, el programa se cargará adecuadamente y empeza a correr de inmediato.

Captura durante la programación y con el programa corriendo, mostrando información en la hyperteminal incluida

Y bueno, a grandes rasgos eso es todo para poder programar por bootloader, espero poder poner un video pronto del mismo en funcionamiento, pueden ver en los archivos del Eagle la configuración de los pines del LCD por si quieren usar mi placa.

Cualquier duda, será bienvenida.
 
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #5 en: 08 de Enero de 2011, 09:11:33 »
Buenos dias, oye disculpa mi sinceridad pense que se trataba de un modo especial de bootloader el metodo que has planteado es el clasico y conocido metodo de bootlader el cual consites el carga previamente un archivo que actuara como boot y el cual se direccion en un sector especial en el pic segun sus caracteristica y se carga con un programador, luego que el bootloder este cargado ya no hace falta usar mas progrmador para cargar los archivos hex que cumpliran una funcion determinada y para eso en tu caso se hace atraves de un adaptador de niveles ttl si es el caso de una PC (MAX232), haaa y para tal fin necesitas de un programa que comunique al pc con el bootloader.

Este metodo creo que ya esta planteado en el foro incluso el de usb yo lo hice para pic18f2550 y me funciono de maravilla ojo con esto no quiere decir que tus no deje  de ser un buen aporte para el foro pero seria  mejor si se le adiciona mas funciones a este metodo de bootloader, en una oportunidad converse con un miembro de este foro y decidimos hacer algo con bootloader pero que tuviera algo de seguridad y ademas de eso que el codigo se pudiera carga de forma remota ejemplo internet.

opciones que me gustaria adicionarle a este metodo de bootloader:

1) hacer el codigo bootloader con el fin de poder editar a necesidades personales( Es decir hacer el codigo boot en CCS o basic).
2) Dicho codigo bootloader que permita proteger el codigo que se carge al pic  con el fin de que terceros no tomen el trabajo ajeno.
3) Que el pic entre en modo bootlaoder de manera soft y no de manera hardware como se hace con el boton como ya lo explico el colega.

Saludos y esos seria opciones que me gustaria adicionarle al sistema de bootloader,  haa se me olvidaba algo muy importante que el cogigo boot permita carga codigos cifrados y este lo decifre porque sino cualquie tercero con un poco de conocimiento pudiera hacer un monitoreo del puerto serial y toma el codigo entrante que es el que cumple la funcion del pic y asi igual nos clonaria nuestra aplicacion.

Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #6 en: 08 de Enero de 2011, 21:49:52 »
Hola amigo Alexander, si tienes razón, el tema que expuse fue solo acerca de como implementar el bootloader que se encuentra por todos lados, decidí hacerlo así por que yo me lleve todo un día dando con el boot adecuado y lográndolo hechar a andar.

No esta mal tu idea, pero lamentablemente nunca he hecho algo parecido a escribir la flash por RS232, no obstante, no dudo que entre varios demos con una solución.  :lol:
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 664
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #7 en: 09 de Enero de 2011, 09:48:04 »
entiendo hermano y mas bien agradecido por su valioso tiempo y de igual forma su informacion es muy importante y esta bien explicada que s lo mejor muy didactico.
Pero no deseches las opciones si puedes estudia las posibilidades y ve sus ventajas a la hora de comercializar un proyecto la idea es darle seguridad para que terceros no te tomen tu proyecto.

Saludos y un abrazo hermano.
Atten.
Alexander Santana.
Venezuela-Barcelona.
EL APRENDER ES NADA; MEJOR ES COMPARTIR EL APRENDIZAJE

Desconectado yesbond

  • PIC10
  • *
  • Mensajes: 11
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #8 en: 05 de Marzo de 2011, 20:55:08 »
Hey falflores,
Muchas gracias por el aporte, la verdad no sabia que habia bootolader para la familia de los 16f, ademas lo explicaste muy bien y eso es bastante bueno para los que estamos aprendiendo sobre los PIC; talves otras personas con mucha mas experiencia lo realicen a ojos cerrados, pero para mi me parecio excelente el aporte.
Tienes depronto un video en el que se vea funcionando el sistema?

Gracias por el aporte y si tienes mas informacion, me ayudarias enormemente.

Atte: Yesbond

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #9 en: 08 de Marzo de 2011, 04:50:06 »
Hey falflores,
Muchas gracias por el aporte, la verdad no sabia que habia bootolader para la familia de los 16f, ademas lo explicaste muy bien y eso es bastante bueno para los que estamos aprendiendo sobre los PIC; talves otras personas con mucha mas experiencia lo realicen a ojos cerrados, pero para mi me parecio excelente el aporte.
Tienes depronto un video en el que se vea funcionando el sistema?

Gracias por el aporte y si tienes mas informacion, me ayudarias enormemente.

Atte: Yesbond

Hola amigo Yesbond

Eres el Yesbond que siempre tiene algo interesante que aportar en los reportajes de Mario Sacco?  :D

Creo que tengo un video, pero está en la camara aún, tengo que pasarlo a la PC y subirlo, si me das unos días lo subo.

Yo también no sabía que habia bootloader para PIC16, un día me dio curiosidad y Vualá! resulto que si.

Que bueno que te sirvio la info.
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado yesbond

  • PIC10
  • *
  • Mensajes: 11
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #10 en: 08 de Marzo de 2011, 12:05:31 »
Hola falflores,  :P si soy el mismo, ahora estoy por aca aprendiendo en esta pagina tan buena.
Me sirvio mucho claro, siempre es bueno un bootolader, y para los pic16f estan muy buenos.

Saludos

Yesbond

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Diagrama de bootloader para PIC16F877A
« Respuesta #11 en: 13 de Abril de 2011, 00:07:53 »
Bueno, aqui adjunto el diagrama mínimo del hardware para que funcione el bootloader, cabe señalar que falta cualquier hardware que le quieran agregar (LEDs, botones, LCD, etc.), este es solo para que funcione la grabación del programa.


« Última modificación: 13 de Abril de 2011, 00:21:31 por falflores »
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado Ridick10

  • PIC10
  • *
  • Mensajes: 4
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #12 en: 04 de Mayo de 2011, 14:34:22 »
buenas compañeros soy nuevo en el foro y necesito un plus de ayuda en un proyecto que empiezo, bueno quisiera que me colaboraran con la comunicacion de un pic de gama media bien puede ser 16f873 para que este se pueda conectar con la tarjeta red del equipo y poder obtener la MAC del mismo, agradezco su pronta ayuda.

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #13 en: 04 de Mayo de 2011, 14:47:27 »
buenas compañeros soy nuevo en el foro y necesito un plus de ayuda en un proyecto que empiezo, bueno quisiera que me colaboraran con la comunicacion de un pic de gama media bien puede ser 16f873 para que este se pueda conectar con la tarjeta red del equipo y poder obtener la MAC del mismo, agradezco su pronta ayuda.

Hola Ridick10, bienvenido al foro, ya buscaste en el foro?, de seguro hay algún proyecto parecido, y es que no es recomendable que cambies el hilo de un post, por que como este post ya esta algo viejo, no van a ver tu mensaje la mayoría, solo los que ya han respondido en este, que como verás son MUY pocos, te recomiendo que busques, y si no hay ningún tema parecido, publiques un nuevo tema, para que así lo vean todos. Saludos!
Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com

Desconectado falflores

  • PIC16
  • ***
  • Mensajes: 173
    • Control, electrónica y programación en español
Re: Bootloader para PIC16F877A por cable serial desde cero
« Respuesta #14 en: 17 de Agosto de 2012, 03:14:21 »
Actualización: Para hacer todavía más funcional este bootloader, lo hé vuelto inalámbrico, por medio de 2 módulos bluetooth, cabe destacar que va de maravilla y es una forma muy maja de programar sin cables, por ejemplo, un vehículo a control remoto con baterias. La única pega es que sigue siendo necesario el maldito boton del modo bootloader, pero que va de presionar un boton, a conectar y desconectar un programador. Aquí les dejo un video:

Los invito a mi blog "Control, electrónica y programación en español" www.robotnias.blogspot.com


 

anything