Autor Tema: Problema con USB Bootloader - No corre programa cargado  (Leído 1373 veces)

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

Desconectado javierpic

  • PIC10
  • *
  • Mensajes: 11
Problema con USB Bootloader - No corre programa cargado
« en: 21 de Enero de 2014, 19:31:32 »
Hola a todos! Estoy con problemas hace varios dias tratando de hacer andar el usb bootloader, estoy usando el pic18f46j50. Una vez que cargo el bootloader(ex_usb_bootloader), me genera sin problemas el puerto serial y carga perfectamente el programa desde siow, pero el programa no corre!. Estoy cargando un programita que solo prende y apaga un led para testear (TestLedFlashPlaca.c), probe de todo pero no lo puedo hacer andar.
Mis hipotesis de porque no andaba fueron:
1)mal fusibles(clock,etc)-->pero el programa de testeo anda bien cuando lo cargo sin incluir el bootloader ( #include< bootloader.h>) y el bootloader no cambia los fusibles
2)problema de direccionamiento..pero no encuentro donde puede estar mal porque el bootloader se graba desde la posicion 0 mueve el codigo de programa atras de el..
El amigo Rivale me estubo tratando de ayudar pero no vemos donde pueda estar el error, si a alguien se le ocurre por favor ayuda!!
Adjunto todos los archivos del proyecto.
Saludos,
Javier   

Desconectado javierpic

  • PIC10
  • *
  • Mensajes: 11
Re: Problema con USB Bootloader - No corre programa cargado
« Respuesta #1 en: 22 de Enero de 2014, 02:13:38 »
aca esta bootloader.h


//how big is the bootloader?
//the bootloader will reside from address 0x0000 to this location.  the
//application will then sit at this location+1 to the end of program memory.
//#if defined(__DEBUG)
#define LOADER_SIZE        (0x1FFF)
//#else
//#define LOADER_SIZE        (0x17FF)
//#endif

//the loader and application need a common flag that determines if we are in
//the bootloader or application, that way the ISR knows where to go.  this
//is the location in ram that is reserved for this flag.
#define LOC_IN_LOADER_FLAG  0x25

//// --- end configuration --- ////////////////////////////////////////////

#reserve LOC_IN_LOADER_FLAG

int8 g_InBootloader;
#locate g_InBootloader=LOC_IN_LOADER_FLAG

#define LOADER_START       (0)
#define LOADER_END         (LOADER_SIZE)
#define APPLICATION_START  (LOADER_SIZE+1)
#if defined(__USB_87J50__)
 #define APPLICATION_END    (getenv("PROGRAM_MEMORY")-9) //configuration bits
#else
 #define APPLICATION_END    (getenv("PROGRAM_MEMORY")-1)
#endif
#define APPLICATION_ISR    (APPLICATION_START+8)

#ifdef _bootloader
 /*
  Provide an empty application, so if you load this .HEX file into the pic
  without an application this will prevent the pic from executing unknown code.
 */
 #org APPLICATION_START,APPLICATION_START+0xF
 void BlankApplication(void)
 {
   while(TRUE);
 }

 //we need to prevent the loader from using application space
 #if (APPLICATION_END > 0x10000)
   #org APPLICATION_START+0x10, 0xFFFF {}
   #if (APPLICATION_END > 0x20000)
      #org 0x10000, 0x1FFFF {}
      #org 0x20000, APPLICATION_END {}
   #else
      #org 0x10000, APPLICATION_END {}
   #endif
 #else
   #org APPLICATION_START+0x10, APPLICATION_END {}
 #endif

   #define  USB_CONFIG_PID       0x0034

   #define USB_STRINGS_OVERWRITTEN

#endif   //_bootloader

#ifndef _bootloader
 //in the application, this moves the reset and isr vector out of the bootload
 //space.  it then reserves the loader space from being used by the application.
 #build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
 #org 0, LOADER_END {}
#endif

Desconectado planeta9999

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3520
    • Pinballsp
Re: Problema con USB Bootloader - No corre programa cargado
« Respuesta #2 en: 22 de Enero de 2014, 09:03:31 »


Yo para compilar el firmware, siempre utilizo el linker script, nunca he añadido esas directivas en una fichero .H, como parece que estás haciendo.

Edita el HEX que genera el compilador y mira cual es la dirección inicial en la que el compilador ha ubicado el programa, según se deduce de ese archivo .H, sería una dirección depués del bootloader, otra cosa es que el linkador lo haya entendido así.

Comprueba también editando el HEX del loader, que la última dirección se corresponde con una menos que la de inicio del firmware. Parece que el firmware no está ubicado en la dirección que el loader espera encontrar, por eso se cuelga.

En los listados de la compilación también te debería indicar toda esta información, relativa a tamaños y direcciones de memoria de los objetos.



Desconectado javier

  • PIC10
  • *
  • Mensajes: 35
Re: Problema con USB Bootloader - No corre programa cargado
« Respuesta #3 en: 23 de Enero de 2014, 00:42:20 »
gracias planeta9999, estoy revisando el codigo. Me confundi cuando publique el problema, lo queria publicar en el foro de "Lenguaje C para microcontroladores PIC", lo republico alla.
Saludos,
Javier