A ver, intento pasar en limpio todo esto. Espero que me tengas paciencia ya que se me hace un poco dificil todavia entender algunas cosas. Se que para depurar dudas aqui no queda otra que leer, leer y seguir leyendo, asi que hice mi tarea y me puse a leer en base a tu respuesta. Lo que entiendo es lo siguiente: El PIC por defecto trae ciertos valores en cada registro, es decir que mientras éstos no se modifiquen, se mantiene todo como de fábrica.
Cuando decis:
"En la seccion 25.1 pagina 286 tenes los bits de configuracion, como podras ver las direcciones de memoria son muy grandes y nada que ver con la memoria de programa"
Supongo que te referís a que las direcciones de memoria de los registros de configuracion están fuera del espacio de memoria que el PIC reserva para mi uso, o digamos, para mi código.
También dijiste:
"si observas en el PICkit2 al cargar el hex aparece el valor de la palabra de configuracion."
A que valores te referís? En la parte inferior de toda la tabla aparece: "Configuration memory:" pero sólo aparecen valores cuando se realiza la lectrua del dispositivo, no en la escritura. Y aquí algo interesante. Lei en la hoja de datos del PICDEM FS USB DEMOSTRATION BOARD los valores de estos registros, y para el registro CONFIG1L que contiene la configuracion del oscilador el valor es 0x24 o en binario 00100100 lo que corresponde a: la señal del PLL de 96Mhz/2 y no a la señal del cristal (tal como dijimos antes) con el prescaler en FOSC/5 para resultar en 4MHZ para la entrada del pll (de nuevo, tal como dijimos antes) y el CPUDIV dividiendo en 2 la frecuencia del PLL de 96 MHZ, resultando en 48 MHZ el reloj de CPU. Y el registro CONFIG1H=0xE o en binario 00001110 lo que corresponde a HSPLL el cual no entiendo muy bien como trabaja porque me resulta confuso en el diagrama de bloques de la seccion "Oscillator Configuration" de la hoja de datos del PIC pero creo que selecciona en el MUX la entrada que viene desde el PLL de 96 MHZ pasando por el postscaller, de ser asi todo o que dijimos antes tiene sentido. Lo mas interesante es que al leer el PIC con la herramienta PICDEM FS USB DEMO TOOL que viene con el PICKIT2 veo que las dos palabras (CONFIG1L y CONFIG1H) tienen los valores indicados anteriormente. Entonces busque busque y busque hasta encontrar el código fuente del bootloader y me doy con que ahi mismo configura estos registros con las directivas #pragma (En c).
LUEGO: Aclaro que no tengo el PICKIT2 sino que compre un PIC18f4550 y mi profesor le puso el bootloader con su programador, luego hice una placa de pruebas en impreso para practicar y poder programar ya que no dispongo de un programador en casa. Todos los software y demas los baje de la pagina de microchip.
FINALMENTE: supngo que al comilar el código y al grabar el archivo .hex correspondiente al bootloader en mi pic, se configuraron estos registros tal como lo indica el archivo que contiene el codigo. Luego cuando yo construyo mi programa no configuro nada de eso y cuando grabo mi programa a traves de la herramienta que me permite hacerlo con el bootloader y el bootloader cede el control del PIC a mi programa continúa funcionando con la misma configuracion que se Seteó aquella vez que se grabó el bootloader en mi PIC.
Supongo estar en lo cierto al decir lo anterior, de no ser así espero las correcciones, estoy aqui para aprender y espero no haber dicho solo bobadas jeje. Gracias por el tiempo! SALUDOS!!