Lo del S19 no lo conocía, el resto si,
![Oops! :oops: :oops:](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f633.png)
el 68000 que es más parecido al 8086 que a los PIC y el I2C, concretamente Intercom Inter Circuits... IIC de philips...
Pero no he sabido explicarte el rollo del bootloader y el programador
Un programador es un programador, lo programa aunque esté vacío, si hace falta, genera los 13V, pero no siempre hacen falta. Cada programador tiene su propio programa detrás, hasta ahí, igual que cualquier otro programador de cualquier otro chip.
El PIC puede usar estos programadores vía ICSP a través de RB6, RB7 la pata de reset y en algunos casos RB5, es por eso que si tienes suerte (y picardia) puedes dejar estos pines accesibles en un conector aparte, como si fuera un JTAG (por si lo conoces) y podrás programarlo con estos programadores sin quitar el PIC de la placa, incluso estando vacío. (ICSP= In Circuit Serial Programming, Programación Serie en Circuito)
Pero el ICSP no es para que esté accesible "al usuario", para eso están los bootloader. Los bootloader son programas, programas que debes programar siempre con los programadores anteriores. Lo que hacen es que se ejecutan
siempre al encender el PIC, y deciden lo que tienen que hacer, o entran en modo "programación" para actualizar el firmware, o entran en modo "aplicación", como lo deciden, luego lo explico.
Si se ejecuta el bootloader lo que hace es esperar a que vengan los datos "por donde esté programado que vengan", que puede ser, 232, USB, I2C... los primeros router se actualizaban a través de un 232, eso era un bootloader a través de 232 (y no hacía falta destapar nada) los nuevos TDT se actualizan a través de USB (y no hace falta desmontar nada), en aplicaciones "comunitarias" un PIC maestro (u otro chip) puede actualizar todos los firmwares del resto a través de I2C, en un coche, vía CAN, pero la idea es que no hay que desmontar nada de nada, ni hacen falta "cacharros" especiales, cosa que con los programadores tradicionales, si. Por supuesto en este caso, tampoco hacen falta los 13V.
Con el bootloader también hacen falta programas especiales, para que el protocolo sea el mismo, me refiero a que uno diga "¿te mando datos?" y el otro diga "si".
Lo que da igual es como se genere el hex, siempre y cuando deje libres lo que ocupa el bootloader y programes correctamente los vectores de interrupción, es decir, puedes usar un bootloader del CCS y el programa generarlo en ensamblador con el MPLAB y al revés también.
Compartir rutinas de los bootloader... eso se puede, pero solo las rutinas que se pueden compartir
![scratch :scratch: :scratch:](/foro/./emoticonos_anteriores/icon_scratch.gif)
quiero decir, la rutina de programación es la misma para todos, pues se hace lo mismo en todos, lo que no puedes compartir es la rutina de recepción de datos, que no cambiaran mucho, pero no es lo mismo para I2C que para USB que para CAN...
Se te nota que vienes de los tiempos en los que había que aprovechar memoria, tiempo de procesador y recursos en general
![Big grin :D :D](https://cdn.jsdelivr.net/joypixels/assets/8.0/png/unicode/64/1f600.png)
ahora hay memoria para el bootloader y mucho más... y hablamos de simples PIC, la "buena programación" prácticamente se ha perdido con las nuevas bestias que manejan Gigas de memoria a velocidades de vertigo...