TODOPIC

Microcontroladores PIC => Programadores => Mensaje iniciado por: tecnic en 21 de Julio de 2010, 14:38:01

Título: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 21 de Julio de 2010, 14:38:01
Hola a todos, es la primera ves que uso este medio para hacer una consulta, mi duda es la siguiente, lo que quiero es utilizar el Bootloader para un pic18f452 con el compilador c18,a travez del serial, me gustaria saber si alguien alguna vez lo utilizo, de esta forma , yo lo eh hecho con el compilador ccs en el pic16f877 y no tuve problemas, y eh visto, en varios foros, que lo hicieron con el pic18f4550 por medio de usb, pero no encontre ningun ejemplo para el pic18f452 con el compilador c18, ademas tampoco se cuales son las lineas de codigo que hay que agregarle al programa en c18, para no pisar el bootloader,desde ya si alguien me podria orientar le estare muy agradecido.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 21 de Julio de 2010, 16:46:54
Por lo visto el AN851 se puede aplicar. El Bootloader e información la puedes bajar desde Microchip:

AQUI (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012031)

Leyendo el pdf en un PIC18F el remapeo sería:

Código: C
  1. void YourHighPriorityISRCode();
  2. void YourLowPriorityISRCode();
  3.  
  4. /** VECTOR REMAPPING ***********************************************/
  5. #define REMAPPED_RESET_VECTOR_ADDRESS           0x200
  6. #define REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS  0x208
  7. #define REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS   0x218
  8.  
  9. void YourHighPriorityISRCode();
  10. void YourLowPriorityISRCode();
  11.        
  12. extern void _startup (void);        // See c018i.c in your C18 compiler dir
  13. #pragma code REMAPPED_RESET_VECTOR = REMAPPED_RESET_VECTOR_ADDRESS
  14. void _reset (void){
  15.     _asm goto _startup _endasm
  16. }
  17. #pragma code REMAPPED_HIGH_INTERRUPT_VECTOR = REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS
  18. void Remapped_High_ISR (void)   {
  19.      _asm goto YourHighPriorityISRCode _endasm
  20. }
  21. #pragma code REMAPPED_LOW_INTERRUPT_VECTOR = REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS
  22. void Remapped_Low_ISR (void){
  23.      _asm goto YourLowPriorityISRCode _endasm
  24. }
  25.        
  26. #pragma code HIGH_INTERRUPT_VECTOR = 0x08
  27. void High_ISR (void)    {
  28.      _asm goto REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS _endasm
  29. }
  30. #pragma code LOW_INTERRUPT_VECTOR = 0x18
  31. void Low_ISR (void){
  32.      _asm goto REMAPPED_LOW_INTERRUPT_VECTOR_ADDRESS _endasm
  33. }
  34. #pragma code
  35.        
  36. #pragma interrupt YourHighPriorityISRCode
  37. void YourHighPriorityISRCode()  {
  38.  
  39. }       //This return will be a "retfie fast", since this is in a #pragma interrupt section
  40.  
  41. #pragma interruptlow YourLowPriorityISRCode
  42. void YourLowPriorityISRCode()   {
  43.  
  44. }       //This return will be a "retfie", since this is in a #pragma interruptlow section
  45.  
  46.  
  47. /** DECLARATIONS ***************************************************/
  48. #pragma code
  49. void main(void)
  50. {


Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tinchosalamero en 21 de Julio de 2010, 19:27:34
Yo utilizo el ds30_Loader. la verdad es que funciona bastate bien

fijate, por ahi te sirve

saludos
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 21 de Julio de 2010, 19:42:12
Muchisimas gracias voy a probar lo que me dicen despues comento como me fue.
saludos y gracias nuevamente.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 22 de Julio de 2010, 10:55:38
Hola amigos estuve jugando un poco mas,tratando de intentar hacer andar el bootloader segun como me dijieron, eh agregado las lineas adicionales a mi codigo para el remapeo, pero lo que no entiendo es como usar el AN 851 de microchip, ya que para que el compilador me reconosca las lineas de programa de remapeo, seguramente tengo que incluir archivos de cabecera a mi proyecto en el ide del mplab,ya que sino,me arroja el siguiente error=>
Error [1111] undefined label 'REMAPPED_HIGH_INTERRUPT_VECTOR_ADDRESS' in 'High_ISR'

lo que me esta faltando seguramente es eso, pero esa es mi duda no se cuales son esos archivos ni como configurarlo, es decir no se como usar la aplicacion AN851, si alguien tiene una idea y si ya uso y me puede explicar como es que se utiliza, desde ya muchisimas gracias.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 22 de Julio de 2010, 11:14:43
El archivo *.lkr también debe ser modificado y agregado al proyecto, seguramente en los archivos test del bootloader se encuentre un ejemplo de como debe quedar.


Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 22 de Julio de 2010, 12:42:16
Hola suky muchas gracias por tu ayuda, estuve viendo lo que me decis, en ejemplo test no veo que hallan incluido ningun archivo lkr, lo que si , el cambio que realice fue el archivo 18f452.lkr por el 18f452_c.lkr, que este ultimo se encuentra dentro C:\AN851\Files , pero no hay caso, no debe ser tan simple, debe haber algo mas rebuscado, es una lucha!! jajaja, pero bueno voy a seguir intentandolo, cuando encuentre la solucion ,lo voy a postear asi queda acentado.
saludos.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 22 de Julio de 2010, 13:05:40
Adjunto proyecto, hice exactamente lo que se comenta en los mensajes anteriores.  ;-)



Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 22 de Julio de 2010, 14:49:56
muchisimas gracias por la molestia, prove lo que me pasastes y trate de compilarlo, asi como me lo pasastes, y me arroja el siguiente error =>

MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - Unrecognized input in './18f452_Boot_serial.lkr:4': #DEFINE
Errors    : 1

Link step failed.
es como que hay algo que no reconoce :(...
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 22 de Julio de 2010, 15:57:12
muchisimas gracias por la molestia, prove lo que me pasastes y trate de compilarlo, asi como me lo pasastes, y me arroja el siguiente error =>

MPLINK 4.1, Linker
Copyright (c) 2006 Microchip Technology Inc.
Error - Unrecognized input in './18f452_Boot_serial.lkr:4': #DEFINE
Errors    : 1

Link step failed.
es como que hay algo que no reconoce :(...


Lee como crear los proyectos en C18 correctamente, revisa en project/Bulid/project que esté todo correcto.

Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 22 de Julio de 2010, 19:12:43
gracias nuevamente, voy a revisar eso que me comentas, a ver si encuentro donde esta el problema
saludos!!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: willynovi en 22 de Julio de 2010, 23:35:44
lo termino de bajar y probar y compila perfectamente.

Suky, que estas mas en el tema, puede que tenga algo que ver la versión del MPLINK, yo tengo la 4.22 y tecnic tiene la 4.1?, no se, se me ocurre que podria ser algo de eso.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 23 de Julio de 2010, 11:13:12
Hola Willynovi, si la verdad que es raro, porque de hecho compilo programas que ya tengo hechos en c18 y no tengo ningun problema, pero cuando trato de compilar el que me paso suky,me da el error que indique anteriormente, y la verdad no se que puede ser, voy a probar eso que me decis de la version, a ver si tengo suerte, no quiero resignarme y volver a mi viejo programador jdm jaja :D
saludos!!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 23 de Julio de 2010, 11:28:31
Si, tiene que ser la versión del linker, sino puedes limpiar el *.lkr para dejarlo sin las definiciones y reemplazar por sus valores en concreto (Si no usaras debuger, limpiarlo completo)


Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 23 de Julio de 2010, 11:42:30
Hola suky gracias por la ayuda, cuando te referis a limpiar, que es lo que tendria que borrar especificamente ( debugger no utilizo) :shock:
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 23 de Julio de 2010, 12:01:09
Hola suky gracias por la ayuda, cuando te referis a limpiar, que es lo que tendria que borrar especificamente ( debugger no utilizo) :shock:

El *.lkr deberia quedar:

Código: [Seleccionar]
// File: 18f452_g.lkr
// Generic linker script for the PIC18F452 processor
LIBPATH .

FILES c018i.o
FILES clib.lib
FILES p18f452.lib

CODEPAGE   NAME=boot   START=0x00   END=0x1FF    PROTECTED
CODEPAGE   NAME=page       START=0x200             END=0x7FFF
CODEPAGE   NAME=idlocs     START=0x200000          END=0x200007       PROTECTED
CODEPAGE   NAME=config     START=0x300000          END=0x30000D       PROTECTED
CODEPAGE   NAME=devid      START=0x3FFFFE          END=0x3FFFFF       PROTECTED
CODEPAGE   NAME=eedata     START=0xF00000          END=0xF000FF       PROTECTED

ACCESSBANK NAME=accessram  START=0x0               END=0x7F
DATABANK   NAME=gpr0       START=0x80              END=0xFF
DATABANK   NAME=gpr1       START=0x100             END=0x1FF
DATABANK   NAME=gpr2       START=0x200             END=0x2FF
DATABANK   NAME=gpr3       START=0x300             END=0x3FF
DATABANK   NAME=gpr4       START=0x400             END=0x4FF
DATABANK   NAME=gpr5       START=0x500             END=0x5FF


ACCESSBANK NAME=accesssfr  START=0xF80             END=0xFFF          PROTECTED

SECTION    NAME=CONFIG     ROM=config
STACK SIZE=0x100 RAM=gpr5


Nota: Asegúrate que el bootloader solo ocupa hasta 0x1FF, sino modifica las direcciones.

Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 23 de Julio de 2010, 14:48:25
muchisimas gracias Suky, ahora si  :-/ compila bien, ahora solo me queda ver lo del bootloader y cargarlo en un pic y probar, que todo funcione,despues comento como me fue,una vez mas muchas gracias.
saludos!!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 24 de Julio de 2010, 12:18:55
Hola suky,te molesto una vez mas,queria saber si tienes algun bootloader para 452(el que baje no me funciona),o de donde lo podria bajar,desde ya muchas gracias
saludos!!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 24 de Julio de 2010, 12:43:14
Hola suky,te molesto una vez mas,queria saber si tienes algun bootloader para 452(el que baje no me funciona),o de donde lo podria bajar,desde ya muchas gracias
saludos!!

Que error tiene?
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: willynovi en 24 de Julio de 2010, 12:50:53
no estoy completamente seguro porque no lo he usado, pero el bootloader es funcional para cualquier PIC, no es que sea especifico para el 452, Suky puede corregirme si estoy equivocado.

El que no te anda es el que bajaste de microchip, el AN851? http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en012031

Si es así yo dudaria que tuvieras algun problema en el hard.
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 25 de Julio de 2010, 19:32:50
Hola que tal amigos,les comento que estuve haciendo algunas pruebas mas, y aun sin suerte,problemas de hardware no es, ya que trabajo sobre una placa entrenadora y esta funcionando con el bootloader y el compilador ccs,el problema surgio al migrar al compilador c18, les comento que estoy usando el software colt bootloader y no utilizo el gestor de arranque de microchip(AN851), uso el que biene con el mismo colt bootloader =>http://mdubuc.freeshell.org/Colt/#table1 , cuando trato de grabar el pic con este bootloader el mismo inicia la comunicacion con el pic y la descarga, pero en un momento salta un error de "time out",eh querido usar la aplicacion AN851 de microchip, pero me dio error en la compilacion del bootloader ,ya que la misma no biene compilada cuando una la baja,el programita es el mismo que me paso el amigo Suky,lo adjunto a continuacion, para que vean,que es lo que estoy haciendo mal,desde ya muchas gracias.
saludos!!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: Suky en 25 de Julio de 2010, 20:22:50
Prueba con el siguiente Hex.


Saludos!
Título: Re: Bootloader en c18 para Pic18f452
Publicado por: tecnic en 25 de Julio de 2010, 21:09:33
Hola Suky gracias por la info, probe y nada.. :( , ni siquiera se comunica, eh buscado en varios lugares a ver si encontraba algo y no hay mucha informacion para c18 bootloader serial, salvo esta pagina => http://mdubuc.freeshell.org/Colt/#table1, que,por lo que yo entendi, segun lo que dice la pagina, ademas de reubicar el programa para no pisar al bootloader,le agrega unas modificaciones al los archivos c018i y c018 del c18 del directorio C:\MCC18\lib, luego va al directorio "C:\MCC18\src\traditional\startup" y a los archivos c18i.c les modifica la linea de codigo:

#pragma code _entry_scn=0x000000          la cambian por=>

#pragma code _entry_scn=0x000200

por ultimo van al directorio "C:\MCC18\src\traditional"
y ejecutan el archivo makestartup.bat

mi pregunta es puede ser esto posible ?? tan complicado es en c18.... :5] o quizas estoy haciendo cualquiera!!
igual probe esto y tampoco me funciono  :D es una lucha!!