En realidad pensaba utilizar la misma memoria del pic para almacenar el programa. Para así no necesitar complicarlo con lecturas desde otra memoria, lo que no sé es cómo guardalo en el pic y desde el programa del pic enviarlo por spi. La configuración del puerto la tengo hecha, incluso la modificación de algunos registros del dispositivo a controlar. Aqui un fragmento :
#define(__PCH__)
#include <18F2550.h>
#fuses HS,NOWDT,NOPROTECT,NOLVP
#use delay(clock=20000000)
#use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)
#include <input.c>
#define DREQ PIN_B7
#define XCS PIN_B6
void main() {
setup_spi(SPI_MASTER | SPI_H_TO_L | SPI_CLK_DIV_16); //PREPARA PUERTO SPI
while (Input(DREQ)==0); //ESPERA A QUE VS ESTÉ LISTO
output_low(XCS); //PONE EL PIN XCS LOW PARA INICIAR TRANSFERENCIA SCI
spi_write(0x2); //SECUENCIA DE ESCRITURA: COMANDO DE ESCRITURA
spi_write(0xC); //DIRECCIÓN A ESCRIBIR SCI AICTRL0
spi_write(0X0); //VALOR A ESCRIBIR
output_high(XCS);
while (Input(DREQ)==0); //ESPERA A QUE VS ESTÉ LISTO
output_low(XCS);
spi_write(0x2);
spi_write(0xD); //ESCRIBO SCI AICTRL1
spi_write(0x0);
output_high(XCS);
while (Input(DREQ)==0); //ESPERA A QUE VS ESTÉ LISTO
output_low(XCS);
spi_write(0x2);
spi_write(0x2); // ESCRIBO SCI AICTRL2
spi_write(0x400);
output_high(XCS);
//enviar plugin en este punto