Autor Tema: ¿Cómo reprogramar un PIC remotamente?  (Leído 2895 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
¿Cómo reprogramar un PIC remotamente?
« en: 04 de Octubre de 2016, 15:25:10 »
Hola a todos,
¿Alguien tiene idea de como podría implementar una programación o actualización del firmware remotamente?
Es decir: El PIC  esta conectado a un modulo Ethernet por UART  (Este modulo es independiente, no tiene ningún control, lo que entrar por IP sale por TTL)

Mi idea es poder actualizar dicho PIC remotamente, a través de la conexión IP que hace el módulo (es una conexión transparente, y totalmente independiente del PIC)

En resumen, quiero actualizar el PIC desde el puerto UART. ¿Será posible?

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #1 en: 04 de Octubre de 2016, 16:32:28 »
Imagino que si el PIC tiene la posibilidad de grabar la flash, que tambien se destine memoria a un bootloader, pienso que es posible.
El tema esta en que conversor ethernet a UART usas, si es un ENC28J60 deberias tener todo el stack TCP/IP en el bootloader. Porque el ENC28 solo es MAC/PHY.

El otro problema que se me puede llegar a venir a la mente es como compartir las rutinas del stack TCP/IP con ambos, y lo mas simple seria tenerlo 2 veces, uno para el bootloader y otro para el programa principal. Esto significa mucho mas espacio necesario.

Cuando le envias cierto comando (en funcionamiento normal), activas una variable, reseteas y al estar activa esa variable sabes que tenes que grabar todo lo que llega, entras en tu modo de bootloader. Finalizado (y verificado) limpias la variable y otro reset.

Asi contado tan facil, obviamente que no es, pero de poder se puede.
« Última modificación: 04 de Octubre de 2016, 16:35:59 por KILLERJC »

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #2 en: 05 de Octubre de 2016, 00:14:12 »
Que tal cvargcal;

Tal como lo menciona KILLERJC, es posible realizar lo que tu necesitas.
Lo que yo haria seria utilizar un bootloader y cargarlo en el micro. Yo te recomiendo el tiny Multi Booloader+ que solamente usa 100 palabras de codigo, y este está localizado en la parte final de la memoria de programa.
Este es el link:http://tinypicbootload.sourceforge.net/
Tambien como lo menciona KILLERJC, tendrias que realizar una modificacion al bootloader de tal manera que el reset del micro lo realice cuando le envias un comando y de esta manera entre al "modo de programacion", es decir al bootloader. Una vez que esta alli simplemente transfieres el archivo hex via serial a traves de tu conversor ethernet a serial.
El software usa un puerto COM, que actualmente son virtuales mediante cables USB a RS232. En tu caso seria el convertidor ethernet a RS232 (o TTL). La PC tendria que ver ese convertidor como un COM para poder funcionar.

Creo que he encontrado una manera de realizar lo que necesitas.
1) Tener un convertidor ethernet a RS232 con hardware flow control. Una opcion seria el SBL2eX de netburner. Link:http://www.netburner.com/products/serial-to-ethernet/sbl2e-x#download
2)Descarga el driver que te permite instalar el convertidor como un virtual COM, hoja de datos, manuales. (mismo link que el anterior)
2a) Lee esta explicacion de como crear el puerto virtual: http://www.netburner.com/learn/how-to-create-a-virtual-serial-port
3)descarga la aplicacion del tiny Multi Bootloader+ y cuando ejecutes la aplicacion selecciona el puerto COM virtual
4) Graba el bootloader al PIC de forma convencional usando un programador, tal como el PicKit2 o PicKit3 (esto lo haras una sola vez). De aqui en adelante podras cargar y modificar tu firmware de forma remota.

Esta es otra opcion de convertidor ethernet a RS232 un poco mas economica, pero al final realizaras lo mismo, lo principal es que el convertidor tenga hardware flow control, ya que necesitaras el pin de RTS para darle reset al micro y ponerlo en el modo bootloader.
http://www.saelig.com/ETHS/ETHS001.htm

Esta es otra opcion, pero no estoy seguro si se pueda instalar o usar el driver anterior para usarlo como puerto virtual COM.
http://www.saelig.com/product/ETH026.htm

Mencionas que ya estas usando un convertidor, pero no dices cual. Investiga si ese convertidor tiene drivers para instalarse como un puerto serial, si es asi, entonces el procedimiento es practicamente el mismo.


Saludos y espero que esto te sirva.
elreypic.
« Última modificación: 05 de Octubre de 2016, 00:53:54 por elreypic2 »

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #3 en: 05 de Octubre de 2016, 01:24:40 »
Gracias a los dos por comentar.
Estoy usando este modulo:
http://www.usriot.com/p/tcp-modules/
como lo dije anteriormente, este modulo es totalmente independiente, una vez conectado al router, se usa un programita que lo detecta  y configurar la IP y puerto del servidor al que se va conectar.

Entiendo lo del bootloader, pero el problema es que el dispositivo o producto final, no lo voy a tener a la mano, lo que busco es poder actualizar el firmware  a traves de la red desde el protocolo TCP. Que a la final para el pic es serial...
Pero  voy a intentarlo con el ethernet to virtual com.
Muchas gracias, seguiré investigando.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #4 en: 05 de Octubre de 2016, 01:37:17 »
Pregunta, como es que el dispositivo final se programa actualmente?
Porque si el micro que quieres programar no tiene un bootloader con interface serial no va a ser posible programarlo.
Podrias explicar un poco más lo que intentas hacer, por favor?

elreypic.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #5 en: 05 de Octubre de 2016, 01:59:55 »
Pregunta, como es que el dispositivo final se programa actualmente?
Porque si el micro que quieres programar no tiene un bootloader con interface serial no va a ser posible programarlo.
Podrias explicar un poco más lo que intentas hacer, por favor?

elreypic.

Lo programo normal, ICSP... pero me toca ir en cada punto (donde lo tengo instalada la tarjeta) y  conectar el pickit3 para reprogramarla.
aunque realmente ya estabilice mucho el programa, quiero buscar la forma de poder "enviar" el firmwares nuevos sin necesidad de ir a cada sitio.

Pero ya con tu post anterior, tengo luces de buscar la solución.
Aunque veo un inconveniente,  el bootloader usa la eeprom y esa tambien la estoy usando en mi programa...  bueno, será modificar esa parte.

Igual, muchas gracias. no tenia ni idea de que habia un Conversor TCP a RS232 virtual... ese descubrimiento me será muy útil.

Desconectado KILLERJC

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8242
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #6 en: 05 de Octubre de 2016, 08:22:09 »
Citar
el bootloader usa la eeprom

No entiendo por que un bootloader deberia usar la eeprom. Tal ves te confundiste con la opcion de poder grabar la EEPROM.

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #7 en: 05 de Octubre de 2016, 12:03:31 »
El bootloader no usa la eeprom. Creo que no has visto el link del tinybootloader.
Por otro lado veo que lo quieres hacer es seguir usando el ICSP pero de forma remota, o no?
Si es así entonces la historia es diferente, pero involucra un paso mas. Ese paso es crear una interface serial a ICSP, que no seria mas que un micro que recibe los datos via serial y luego graba el micro que esta ejecutnado tu aplicacion.
No se si eso es lo que intentas hacer, pero ahi esta la idea.

PC remota------>ethernet to serial----->serial to ICSP----->PIC.

elreypic.

Desconectado cvargcal

  • PIC16
  • ***
  • Mensajes: 166
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #8 en: 05 de Octubre de 2016, 16:28:35 »
Si, gracias
me confundí con la eeprom.
Ok, gracias por comentar... ya voy entendiendo más. :mrgreen:

Desconectado elreypic2

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1297
Re:¿Cómo reprogramar un PIC remotamente?
« Respuesta #9 en: 13 de Octubre de 2016, 21:48:33 »
Que tal cvargcal,

Solo para preguntar como vas con esto de programar el PIC de forma remota. Encontraste la solución?

elreypic