Autor Tema: Actualizar el firmware de manera remota  (Leído 4387 veces)

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

Desconectado ismaelectronica

  • PIC10
  • *
  • Mensajes: 2
Actualizar el firmware de manera remota
« en: 24 de Septiembre de 2010, 14:21:06 »
Que tal,
soy nuevo en este foro quisiera compartir opiniones sobre este tema, mi proyecto tiene un pic18f4620 y un modem GSM/GPRS SIMCOM, ya esta funcionando
pero lo que necesito ahora es poder actualizar el fimware de manera remota, esto es enviarlo desde cualquier computadora por medio de internet, la recepcion de los datos ya la tengo pues es una comunicacion serial con el modem, pero mi duda es en donde voy a guardar esos datos, que en realidad  es el fimware a actualizar.
estoy utlizando el compilador PBP250(basic).  de antemano gracias.

saludos.


Desconectado Suky

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Actualizar el firmware de manera remota
« Respuesta #1 en: 24 de Septiembre de 2010, 14:23:36 »
Revisa los firmwares de los bootloader. Estos tienen un lugar especifico en la memoria de programa, que no puede ser sobre-escrito por el firmware del usuario, y se encarga de recibir los datos serialmente y escribirlos en la flash del microcontrolador.


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: Actualizar el firmware de manera remota
« Respuesta #2 en: 24 de Septiembre de 2010, 16:29:21 »
Hola, lo que queres hacer se llama comunmente F.O.T.A. ( Firmware over the air ), te comento a grandes rasgos como hago la actualización de firmware en equipos com modulos GSM/GPRS. Un comentario importante es que no uso uso chips MicroChip uso otras marcas, pero la idea debería servirte igual.

Descarga
  • Selecciono el micro a usar con el doble de capacidad Flash que el tamaño estimado del firmware, ejemplo si este ocupa entre 10 y 15KB escojo uno de 32 KB
  • El espacio de Flash lo divido en 3 partes, uno es bootloader, otro el firmware actual y por ultimo para la recepción del nuevo firmware
  • El bootloader y el contenido del firmware actual se deben poder programar con los métodos habituales.
  • Dentro de la funcionalidad del equipo habilito una que es "actualizar firmware" esto lo hago con el programa Server que atiende a los clientes.
  • El programa Server envía al cliente el nuevo firmware en formato binario y con un chekcsum
  • El cliente recibe este nuevo firmware y lo almacena en la tercera zona de la Flash, cuando el ultimo byte es guardado se verifica el checksum y si esta ok se marca una pagina especial con un valor determinado para indicar que un nuevo firmware a sido recibido.
  • Produzco un reset forzado del micro

Actualizacion
  • Toda vez que el micro se resetea toma control el bootloader
  • Este tiene funciones muy basicas, inicio ( clock, registros, etc ) y sabe como escribir una pagina de Flash
  • Una vez inicializado el micro verifica que la pagina especial tenga el valor indicado, si esta vacia solamente salta al main de la aplicación
  • Si tiene el dato adecuado, procede a copiar pagina por pagina de la locacion del nuevo firmware a la posicion del firmware corriente, esto implica que ciertas funciones el linker las coloque en direcciones absolutas y fijas
  • Una vez que el bootloader copia todo borra la pagina especial y produce otro reset
  • Otra de la funciones del bootlader es tener control de todas las interrucipnes estas siempre terminan saltando a posciones fijas sino estan implementadas solo se retorna. Esto permite que un nuevo firmware utilice un dispositico del micro que una version anterior no lo hacia
  • En el Bootloader no hay que hacer uso de funciones intrinsicas del compilador ( ejemplo multiplicar un unsigned long ) esas cosas hay qe hacerlas a mano.

Por último el Server envia el nuevo firmware de a pedazos de 512 bytes que es el tamaño de la pagina a grabar en la memoria Flash del micro. Toda esta comunicacion se realiza por GPRS.

Esto es a grandes rasgos lo que hago, seguramente habrá otros metodos.

Saludos !
« Última modificación: 24 de Septiembre de 2010, 16:36:54 por RICHI777 »

Desconectado ismaelectronica

  • PIC10
  • *
  • Mensajes: 2
Re: Actualizar el firmware de manera remota
« Respuesta #3 en: 24 de Septiembre de 2010, 18:27:19 »
ok muchas, gracias voy a intenter hacer lo mismo con el pic, lo que pasa es que no tengo mucha experiencia con el manejo de los  bootloader.


Desconectado ASTROCAR

  • PIC24F
  • *****
  • Mensajes: 666
Re: Actualizar el firmware de manera remota
« Respuesta #4 en: 20 de Octubre de 2010, 09:40:12 »
ok muchas, gracias voy a intenter hacer lo mismo con el pic, lo que pasa es que no tengo mucha experiencia con el manejo de los  bootloader.


sin duda alguna tendrias que usar bootloader y cargar desde gprs el firmware nuevo para asi actualizar tu aplicacion en tu caso usarias el puedo serial para el bootloader ya que no vas a tener el micro conectado a un pc para usar el bootloader via usb.
 Ya hasta este pundo el caso esta resuelvo pero donde dejas el tema de la seguridad que cualquier persona con un conocimiento del tema te puede robar tu aplicacion adquiriendo el archivo firmware de actualizacion en una oportunidad planeie eso en privado con el colega bruno pero la verdad por factor tiuempo no defini nose si bruno concluyo ese tema pero la idea es poner algo mas dificil o complejo a la hora de descargar el firmware nuevo.

Lo planeado por mi persona y el colega bruno era modificar el archivo bootloader para que permita proteger el micro y asuves que ese mismo codigo bootloader decifre el firmware que previamente se cargara en internet cifrado.

Saludos y cualquier consulta o si decides ponerle pie a este tema mas en concreto avisame y asi trabajamos juntos y vemos que resultados obtenemos.

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


 

anything