Mig yo diría que:
- Un bootloader está pensado como un cargador para una aplicación comercial, de esta forma es muy sencillo que el end-user (usuarío del producto) pueda actualizar su dispositivo de forma rápida y segura.
- Los configuration bits o fuses pueden ser actualizados también desde el software del bootloader o al menos con el Microchip USB HID Loader se pude hacer... (no lo he probado pero al menos la opción está).
Un saludo!
Es cierto a medias, un bootloader para una aplicación comercial tiene que tener ciertos requisitos específicos sólo conocidos por el desarrollador de la aplicación comercial para que no le quiten el programa sin ningún problema, lo que tiene que hacer es desarrollar tanto el firmware del bootloader, como el software de la PC para su producto especifico. Las herramientas que proporciona Microchip para bootloaders son solamente didácticas no para un producto que intente ser comercial sin que le extraigan el programa.
Por ejemplo simplificando, algunas medidas del Software/Firmware de un Bootloader comercial tendrían que respetar:
- Nunca proporcionar la entrada a los registros de configuración.
- La configuración la realiza el fabricante y nunca se altera por el usuario.
- El Block donde reside el firmware del bootloader debe tener todas las protecciones activadas de tablas de lectura y escritura más el CP externo.
- Los registros de protección de código de programa (CP) sólo se limitan para una lectura externa de un programador pero no para un Bootloader que ingresa a las tablas internas, entonces:
- La tabla de escritura de los registros de configuración WRTC = ON, esto significa que nadie puede cambiar por algún medio la configuración y el único modo es con un programador externo cuando se borra todo el micro.
- Como las tablas de escritura y lectura del espacio del programa están Off para poder escribir, actualizar el Firmware y verificarlo, varias funciones del programa donde el fabricante sabe que jamás serán actualizadas deben residir en el block totalmente protegido del bootloader.
Hay otra forma más compleja que es direccionar el bootloader para escritura y lectura por block individual y tener en cada block un espacio para código secundario del bootloader, pero eso tema para otra oportunidad.
Como verán no es un tema para un Copy/Paste de código libre si se pretende destinar a un bootloader para otros fines no didacticos.
Saludos, Willy.-