TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: ablanco93 en 13 de Enero de 2011, 12:10:07
-
Hola que tal antes que nada les quiero enviar un saludos a todos y que tengan un feliz año.
El proyecto como el titulo del tema lo dice es un Bootloader para pic24fj128ga010 utilizando una micro SD y el compilador de microchip C30. Para todos aquellos que no sepan que es un bootloader, lo pueden verificar en esta pagina: http://dev.emcelettronica.com/what-microcontroller-bootloader-and-how-it-works
Bueno ahora que ya sabemos lo que es un Bootloader viene lo interesante, lo primero que yo creo que se debe de hacer, es saber como poner nuestro código del bootloader en la memoria destinada para esto, la verdad no tengo mucha idea de como se haga en C30 pero en CCS creo que se usan estas instrucciones al inicio del programa:
#build(reset=LOADER_END+1, interrupt=LOADER_END+9)
#org 0, LOADER_END {} // nothing will replace the bootloader memory space
// END OF bootloader definition
Al poner estas instrucciones, le indicas al compilador la localidad de memoria en donde se pondra el programa. Mi pregunta es: ¿Como se hace esto en C30? Como le dices al compilador que el programa que estas haciendo es un bootloader?.
Y mi segunda pregunta es: ¿La libreria de microchip para la Micro SD cabe en el espacio de memoria reservado para el bootloader? por que esta libreria tiene 10,000! lineas de codigo y ocupa mucho espacio de memoria del pic, entonces me gustaria saber si se puede.
Muchas gracias anticipadas y me comprometo a que cuando termine este bootloader postear un tutorial con los pasos exactos para crearlo en C30, gracias =)
-
Bootloader serial para PIC24 -> http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1824&appnote=en530200
Allí tienes ejemplos para ver como se protege el sector de código, y verás que no se parece en nada a CCS :mrgreen:
Luego el tema de leer un archivo desde una memoria SD lo veo poco adecuado para un bootloader para un microcontrolador, por la cantidad de memoria utilizada. Otra cosa seria usar un 18F que trabaje con la memoria y grabe por ISCP o serial el PIC24, pero sigue siendo un proyecto que no me cierra para nada :mrgreen:
Saludos!
-
Hey Hola! muchas muchas gracias por tu pronta respuesta SUKY la verdad que siempre podemos contar contigo =) .
Ese application Note ya lo descargue desde que empece con el proyecto es bueno y trae mucha informacion, al igual que el application Note 1157 tambien tiene mucha informacion muy importante, pero por mas que leo y encuentro informacion no veo por donde empezar :S . Lo primero que hice fue, hacer un programa para leer un archivo .HEX desde la micro SD utilizando la libreria de microchip, ahora lo que sigue o lo que yo creo que es el siguiente paso es poner este programa que hice dentro de la localidad de memoria correspondiente al bootloader y eso es lo que no se como quedaria en el codigo :S no se si me pudieras ayudar con un simple ejemplo de que es lo que debo de ponerle a este programa que hice para que se guarde dentro de la localidad del bootloader. Encontre en el AN1157 esto:
MEMORY
}
data (a!xr) : ORIGIN = 0x800, LENGTH = 0x2000
reset : ORIGIN = 0x0, LENGTH = 0x4
ivt : ORIGIN = 0x4, LENGTH = 0xFC
aivt : ORIGIN = 0x104, LENGTH = 0xFC
program (xr) : ORIGIN = 0x400, LENGTH = 0x800 /*start & length of BL*/
config2 : ORIGIN = 0xABFC, LENGTH = 0x2
config1 : ORIGIN = 0xABFE, LENGTH = 0x2
{
__CONFIG2 = 0xABFC;
__CONFIG1 = 0xABFE;
__IVT_BASE = 0x4;
__AIVT_BASE = 0x104;
__DATA_BASE = 0x800;
__CODE_BASE = 0x400; /* Starting location of bootloader */
Ok, pero eso se lo pongo al inicio de mi programa? o va en otro lado?
Gracias =)
-
Si se le debe de modificar los parámetros:
program (xr) : ORIGIN = 0x400, LENGTH = 0x800 /*start & length of BL*
__CODE_BASE = 0x400; /* Starting location of bootloader */
Estos parametros se modifican en el archivo .gld ubicado en el linker escript del proyecto. Asi, el programa que se compile se ubicara en esas posiciones de la memoria del programa, o me equivoco suky?
-
Freescale tiene un nota de aplicación interesante en donde el microcontrolador al conectarlo por USB, el PC lo reconoce como una memoria USB, luego solo queda copiar y pegar en la supuesta memoria el archivo a programar .S19 y con eso inicia el bootoloader
-
Tambien el lpc1343 lo trae de fabrica, y no tienes que hacer nada en tu programa, para cargarlo, solo le descargas el .bin me parece, o es el .hex? la verdad no recuerdo muy bien, saludos
-
El mbed también, se conecta a USB y aparece un nuevo espacio de almacenamiento de 2 Mb, pero es todo un hardware adicional que trabaja con esa memoria y graba el microcontrolador. Ahora hacerlo en un PIC24, el bootloader ocuparia el 10% (o mas o menos) del micro :shock: O habría que trabajar en un código más compacto que pueda trabajar con la FAT pero ocupar muchos menos recursos que la librería de Microchip. Hay que estudiarlo un poco.
Saludos!