TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: c4_esp_VR en 27 de Julio de 2007, 10:57:02
-
Hola:
Tengo entendido que booytloader no se puede implementar con código CCS ya que hay que meter instrucciones de código al inicio de la memoria del PIC o algo por el estilo (corregirme si me equivoco), es por ello que bootloader no se puede implementar con CCS.
¿Mi pregunta es, sabeis como se implementa bootloader en un pic de la familia 18 con CCS?.
Como siempre gracias a todos.
-
un bootloader se puede implementar con cualquier compilador, C, ASM, Basic. Igual todos permiten ingresar código en ASM, algunos compiladores tienen instrucciones para hacer esto.
Un bootloader es aprovechar que el micro puede re-programar la memoria FLASH. CCS tiene funciones para hacer esto, No recuerdo bien cuales son estas, pero puedes buscar en la ayuda de CCS, que entre otras cosas me parece la ayuda mas completa respecto a otros compiladores que he visto.
Saludos!
-
Miraré en la ayuda del CCS, pero no hay algo más concreto como esquemático, el código que hay que meter en el micro, etc...
Gracias, sobre todo a PICmouse :mrgreen: :mrgreen: :mrgreen:
-
Mira, te dan desde el esquemático de como es que se conecta el PIC al puerto serial, hasta el código.... :mrgreen:
VER INFORMACION (http://www.microchipc.com/PIC16bootload/index.php)
-
En la propia carpeta de ejemplos del CCS hay un bootloader que funciona perfectamente.
-
Muchas gracias por la INFO, ya me voy enterando de más cosas poco a poco :-/ :-/ :-/ :-/ :-/ :-/, sólo que he visto en el foro que la gente programa el pic con bootloader a través de usb y en los ejemplos y enlaces que habeis puesto es por serie 232, y claro como vas a programar el pic con usb y bootloader si para programarlo hace falta +-12V, hay una bomba electrica o algo por el estilo como el programador gtpusblite porque aunque se reprograme el mismo desde una dirección de memoria específica para no borrar el código del bootloader...estoy confundido :? :? :? :? :? :?
Gracias de nuevo, siempre estais ahi, sois unos fieras.
-
Los PIC que tienen capacidad para autoescribir en su memoria de programa no necesitan 13V para hacerlo. Los bootloader funcionan por software y a 5V.
Los bootloader por usb pueden trabajar de dos maneras: o implementando una aplicación en el PC que envíe los datos al PIC o emulando un puerto serie y utilizando cualquier programa de comunicaciones serie en el PC.
-
Mira, sabes bien que el PIC puede escribir datos en la memoria EEPROm interna cierto!!!, De la misma forma el puede re programar su memoria FLASH (Memoria de programa), No necesita 13V, el PIC hace esta tarea durante su operación normal de 5 V, solo se necesita un programa en el PC, para que le envíe los datos que guardara el PIC en la FLASH.
-
http://www.create.ucsb.edu/~dano/CUI/#Sec3
Bien, perfecto entonces supuestamente programas primeramente el pic para meterle el bootloader, para ello lo programaría con ICSP con el esquemático del enlace anterior.
Luego se supone que pulsando sobre el boton de programar, metes el .hex generado por CCS...pero con que programa, si lo meto a capón me cargo el bootloader que está en las primeras direcciones de memoria...habrá que decirle en el código que lo hago a partir de una dirección de memoria con directivas ORG
Venga fenómenos seguir hechandome una manita :mrgreen: :mrgreen: :mrgreen: :mrgreen: :mrgreen:
Gracias.
-
El ICSP programa TODO!!!
El bootloader programa lo que quieras en las posiciones de memoria que quieras, Claro esta no vas a programar encima del programa del bootoloader.
Los pasos para trabajar con un bootloader son estos:
1.) Crea el programa (Bootloader) con CCS.
2.) Grabas en modo ICSP en el PIC
3.) Creas una aplicación en visual basic o en Delphy o lo que quieras. Este sera el encargado de mandarle el .hex al PIC para que sea el PIC quien guarde esos datos en su memoria FLASH. Se supone que no se perderá el programa que estaba antes(Bootloader)!!!!
Debes leer el link que primero te di, en el explican todo.
-
CCS provee ciertas sentencias para colocar tu programa o trozos de programa en las posiciones de memoria que tú quieras.
#org start, end
or
#org segment
or
#org start, end {}
or
#org start, end auto=0
#ORG start,end DEFAULT
or
#ORG DEFAULT
Elements:
start is the first ROM location (word address) to use, end is the last ROM location, segment is the start ROM location from a previous #org
y también puedes cambiar de sitio los vectores de Reset e Interrupción:
#build( reset=APLICACION_RESET, interrupt=APLICACION_HIGH_INT)
De todas formas, si puedes programar por ICSP, ¿para qué quieres un bootloader?
-
La verdad es que es nada más que para aprender ha hacerlo porque el ICSP es un módulo aislado con lo que no "ocupa" espacio en placa y va fenomenal con todos los micros, sólo que me parece buena idea hacerlo y ver como funciona el bootloader, ya que se empieza usar mucho este tipo de programación "al vuelo" en otras tarjetas comerciales.
Gracias por la ayuda, seguiré mirando y preguntando por aqui cuando haya buscado y mirado más documentación, muchas gracias.