Autor Tema: Actualizar firmware PIC por TCP mediante Tibbo  (Leído 8525 veces)

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

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Actualizar firmware PIC por TCP mediante Tibbo
« en: 20 de Abril de 2010, 08:48:42 »
Hola. Os escribo para ver si habeis tenido alguna experiencia actualizando el firmware de un PIC mediante Ethernet utilizando el modulo Tibbo. La idea es utilizar uno autoprogramable (16F88 por ejemplo) con un bootloader (Tiny o CCS) y que los datos serie se los de un modulo Tibbo al que se le mande el archivo Hex por TCP. La unica duda es el flujo de datos, el bootloader de CCS creo que se queda esperando caracter a caracter y no habria problemas "en teoria". Habeis cacharreado con algo de esto?. Muchas gracias. Jesus.

Conectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #1 en: 20 de Abril de 2010, 11:43:08 »
Si utilizas un bootloader serie de esos que mencionas, no hay ninguna diferencia al pasarlo a través de un Tibbo y una conexión Ethernet.
Yo lo he hecho en un proyecto y funciona estupendamente.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #2 en: 20 de Abril de 2010, 12:09:51 »
Gracias por responder nocturno. Entonces funciona, estupendo. Supongo que utilizare el del CCS por verlo mas claro el codigo del loader.c. Ya contare el resultado. Gracias de nuevo. Jesus.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #3 en: 29 de Abril de 2010, 09:50:15 »
Hola de nuevo...Por lo que veo hay dos maneras de hacer lo del bootloader con el CCS. Una es cargar el ex_bootloader.c con el ICD2 (el que tengo) en el pic y a partir de ahi ya el pic esperara el firmware por el puerto serie. Y la otra manera es incluir el bootloader (realmente solo el loader.c) como si fuera otra rutina de la aplicacion (lo estoy haciendo segun el ejemplo ex_load.c) pero no me va. Da un mensaje Out of ROM. Supongo que algo no esta bien metido ("orgeado") en la ROM pero da un poco de repelus tocar el loader.c. Alguien que haya trasteado con esto?. Tu nocturno?.

Gracias.
Jesus.

Conectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #4 en: 29 de Abril de 2010, 11:27:17 »
Necesariamente la primera vez tendrás que programar el PIC usando un programador, como el ICD por ejemplo.
Enséñame tu programa que te da error al compilar; seguro que es algo que podemos resolver.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #5 en: 30 de Abril de 2010, 22:09:42 »
No depende de mi codigo nocturno. El simple hecho de intentar compilar el ex_bootloader.c ya da un error de compilacion. Da un error "Se espera encontrar una instruccion #device antes de...etc". Pongo dicha instruccion pero entonces me salen mas fallos que faltan '(' y cosas asi. No recuerdo que version del CCS uso, creo que es la 4.068 o alguna parecida. Que version de CCS teneis que vaya bien (al menos compile bien) lo del bootloader?. Un saludo y gracias.

Conectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #6 en: 01 de Mayo de 2010, 01:51:23 »
Qué raro que te falle; seguramente habrás hecho algún cambio en ex_bootloader y no te acuerdas. Te lo dejo aquí por si acaso.

Yo he probado a compilarlo con la 4.084 y no ha salido ni un error.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #7 en: 01 de Mayo de 2010, 13:19:36 »
Hola de nuevo. Gracias por responder nocturno. Efectivamente algo haria yo mal. He instalado la version 4.104 del CCS y he utilizado el editor que trae. Siempre habia trabajado con MPLAB + CCS pero el editor del CCS me ha sorprendido gratamente porque entre sus opciones del wizard ya viene lo de incluir el bootloader. No he tenido ningun problema en compilar como tu bien dijiste nocturno. Ahora me asalta una duda existencial, el wizard propone 2 caminos, poner el bootloader al principio de la memoria o al final. Estas dos lineas las genera el Wizard:

//BOOTLOADER AT START - Include Bootloader.h in your application - See sample application Ex_Bootload.c 
//BOOTLOADER AT END - Always include the projectname_bootloader.h file in future versions of the project


Es decir, si lo pones al principio entiendo que lo cargas una vez y listo, el Bootloader.h se encargara de proteger esta parte de la memoria y podras cargar las nuevas versiones del firmware del PIC tantas veces como quieras. Si lo cargas al final incluyes el bootloader (el antiguo loader.c) cada vez que vuelcas el programa, lo cual no me parece muy logico porque si el bootloader no se puede sobreescribir asi mismo para que incluirlo...?.

En fin. Parece que el camino de ponerlo al principio de la memoria es el que me parece mas logico pero el segundo me llama la atencion. Que opinas de todo esto nocturno?. Has probado tu las dos "versiones" del bootloader?.

Muchas gracias!.
Jesus.



Conectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #8 en: 01 de Mayo de 2010, 14:10:36 »
Hace tiempo que lo usé y no recuerdo bien, de hecho no recuerdo esa opción de colocarlo en una u otra zona.
Pero a mi modo de ver, debe ser indiferente en qué zona de la memoria lo coloques, siempre que dicha zona quede protegida.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #9 en: 05 de Mayo de 2010, 05:55:34 »
Aqui estamos de nuevo. He estado haciendo algunas pruebas con el bootloader del CCS pero no consigo verlo del todo claro. Como dije el Wizard del CCS te permite añadir el bootloader a un projecto. El bootloader puede ir al inicio de la memoria (compila bien pero no veo que funcione..algo estare haciendo mal) y al final de la memoria (no compila pero me gusta mas porque no reubica el vector de Reset ni el de interrupciones).  Por que compila uno bien el otro no?, si no escribo nada de codigo, solo es lo que sale del Wizard!!...

Si parto de cero y trato de compilar el ejemplo (sin wizard) ex_bootloader.c me da error ("a #device is expected before...." en loader.c , el mismo error que sale con el Wizard cuando incorporo el bootloader al final de la memoria). Me parece increible que un simple ejemplo del CCS no se pueda compilar y volcar "a pelo". Lo que me esta sirviendo esto es para conocer el PIC internamente pero para nada mas. No quiero utilizar ni el Tiny ni el de Microchip porque quiero que el puerto serie no sea el de hardware que trae el pic sino uno definido por mi con la directiva #use rs232......Alguna idea?....Estoy utilizando el CSS 4.104....

Gracias!

Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #10 en: 05 de Mayo de 2010, 09:19:20 »
Hola , ese error significa que no has definido el tipo de micro antes de llamar a una funcion que depende de el tipo asignado. pon por ejemplo.

#include <18f4520.h>

#include <bootloader.c>

void main()
{
while(1)
{
}
}

compilalo de las dos opciones y me cuentas que te dice el compilador.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #11 en: 05 de Mayo de 2010, 09:53:46 »
Gracias por responder bmfranky, pero eso es lo primero que hice. El error lo da en el archivo loader.c. Si pongo el #device con el pic en este archivo entonces me da un chorro de errores.....

Saludos.

Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #12 en: 05 de Mayo de 2010, 12:07:24 »
Esta claro que el problema esta en el archivo loader.c. Haga lo que haga....He creado un proyecto en MPLAB de cero y he puesto el codigo del ejemplo ex_load.c, es decir, lo mas basico que hace uso de loader. c...y falla...el error que da es como siempre:

 "*** Error 128 "loader.c" Line 45(1,4): A #DEVICE required before this line".....

y la linea que señala es una de las iniciales:

             ...
 ->        int  buffidx;
            char buffer[BUFFER_LEN_LOD];

            #define ACKLOD 0x06
            ...

Empiezo a estar desesperado......

Saludos!.




Desconectado jesconsa

  • PIC10
  • *
  • Mensajes: 23
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #13 en: 05 de Mayo de 2010, 12:30:26 »
Algo he conseguido......He puesto el loader.c que genera el Wizard del CCS (es un loader.c modificado) lo he incluido en el proyecto donde esta el ex_load.c. Y si, ahora compila sin problemas. Algo es algo. Ahora lo meto en mi programa y lo que da es un Out of ROM. Mi programa ocupa el 71% de la memoria, me extraña que el bootloader pete por ocupar 512 bytes = 12%. Segun estos calculos deberia caber todo sin problema....si esta todo bien paginado vamos.....


Seguire depurando mi programa para ver si puedo liberar mas memoria.......

Saludos!!.
Jesus.



Desconectado bmfranky

  • PIC16
  • ***
  • Mensajes: 165
    • La Tienda De Fran
Re: Actualizar firmware PIC por TCP mediante Tibbo
« Respuesta #14 en: 05 de Mayo de 2010, 13:20:19 »
Hola jesconsa, fíjate bien en que dirección de memoria te ubica el loader por defecto, haber si alguna de las direcciones que usa ya esta usada por tu programa y por ello te crea conflicto.

Si no te importa , publica el programa que utilizas e intentare compilarlo haber si así te puedo ayudar en algo.
Visiten La Tienda De Fran ;-) Aqui. y mi nueva Web Aqui.


 

anything