nullEX escribió:Lo que vamos a intentar hacer en este punto es cargar dentro del pic un programa llamado bootloader. Este bootloader se instala al principio de la memoria del microprocesador y mediante una pequeña señal, nos dejará instalar programas a continuación del mismo.
El bootloader arranca y si tiene un pin concreto activado entonces te deja programar lo que viene a continuación. Y si no, simplemente arranca el programa que se graba a partir de una posición de memoria determinada.
Algo importante a tener en cuenta es que cada bootloader tiene diferentes direcciones de memoria para asignar el programa de ejecución y a su vez diferentes pines para marcar el estado de programación.
Nosotros utilizaremos el USB HID C18 modificado, que almacena el programa .Hex a partir de la posición 0x1000 (luego tendrá importancia este valor), que usa los Leds en los pines rc0 y rc1; y el pin rb7 para marcar el estado de programación. Tal y como hemos realizado nuestra placa, este es el bootloader ideal, pero podríamos modificarlo para nuestras necesidades.
BootloaderUSBHIDC18_18F2550Trainer_V1.0 - Customized by nullex.hex.zip
BootloaderUSBHIDC18_18F2550Trainer_V1.0 - Customized by nullex.zip
3.1 Modificar el bootloaderSi queremos modificar el bootloader para nuestra placa, lo primero que tenemos que hacer es ir a la página de MPLab y descargarnos el IDE (http://www.microchip.com/stellent/idcplg?IdcService=SS_GET_PAGE&nodeId=1406&dDocName=en019469&part=SW007002) y el compilador para PIC18.
Después necesitaremos el código fuente del Bootloader, y usaremos el “BootloaderUSBHIDC18_18F2550Trainer_V1.0” que se puede encontrar en la página de PsGrooPIC (http://psgroopic.blogspot.com).
Una vez tenemos todo instalado en nuestra máquina, nos dirigimos a la carpeta de código fuente del bootloader y abrimos el proyecto con el MPLab IDE.
Dentro de la ventana de workspace seleccionamos primero el archivo io_config.h. Este archivo está dividido en varias secciones que se pueden identificar gracias a los pragmas de compilación:
#if defined(MiE_PIC18F14K50Trainer)
...
#elif defined(MiE_PIC18F255xTrainer))
...
#elif defined(MiE_PIC18F455xTrainer)
...
#else
#error Not a supported board (yet), add I/O pin mapping in __FILE__, line __LINE__
#endif
Como en este caso estamos programando para un PIC18F2550, nos tendremos que mover hasta la sección de “
#elif defined(MiE_PIC18F255xTrainer)”.
Si por el contrario, vamos a usar otro PIC diferente al 2550, recomendaríamos leer ahora el Anexo B, para después seguir con los pasos que indicamos a continuación.