Hola!
Hace un tiempo hice una placa de entrenamiento, inspirada en Arduino con un PIC 18F4550. Placa diseñada para encajar en un protoboad y con todos los pines disponibles (accesibles)
Descargué y modifiqué el bootloader HID USB de microchip e hice funcionar harto tiempo mi placa. La utilizaba cada vez que debía probar un sensor o un periférico, hice joysticks, dataloggers, teclados, etc.
En ese entonces comenzaba mis programas así:
#include <18F4550.h>
#fuses HSPLL,NOWDT,NOPROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN
#include "..\my_usb_bootloader.h"
#use delay(clock=48M)
...
//Accesorios incorporados en la placa
#define LED_VERDE PIN_D0
#define LED_ROJO PIN_D1
#define BOTON PIN_E2
...
donde el archivo my_usb_bootloader.h era:
#define LOADER_SIZE (0x0FFF)
#define LOADER_START (0)
#define LOADER_END (LOADER_SIZE)
#define APPLICATION_START (LOADER_SIZE+1)
#define APPLICATION_END (getenv("PROGRAM_MEMORY")-1)
#define APPLICATION_ISR (APPLICATION_START+8)
#build(reset=APPLICATION_START, interrupt=APPLICATION_ISR)
#org 0,LOADER_END AUTO=0 void bootloader(void) {}
Funcionaba de las mil maravillas, hasta que actualicé mi CCS
incluso probé las opciones dadas en el foro:
...
#build (reset=0x1000, interrupt=0x1008)
#org 0x000, 0xFFF
void loader(void) {}
...
pero seguía sin funcionar, revisando los archivos .hex generados por las versiones 4.084 e inferiores del CCS y las posteriores me di cuenta que para el mismo programa había una sutil diferencia.
:020000040000FA
revisando la estructura de esta línea se tiene
":" = línea con contenido.
Byte count = 2.
Address = 0x0000.
Record type = 0x04 -> Extended Linear Address Record.
Data = 0x00, 0x00
Checksum = 0xFA
Al agregar esta línea al archivo generado con versiones superiores al CCS v4.084 se arregla el problema.
Por lo tanto, mi pregunta es:
Cómo puedo automatizar que se agregue esta línea al archivo hex?
No me sirve volver a una versión antigua del CCS porque programo micros 18f45k80, que no son soportados por versiones anteriores del CCS
Me gustaría que esto se hiciera agregando alguna instruccion al compilador y no utilizando un programa externo que modifique el archivo, pues quiero que para el resto de los pics, funcione normalmente.