Código fuente disponible
Burn & Play
JLoader se encarga de leer y enviar el archivo hexadecimal mientras que JBoot se encarga de reprogramar la memoria programa del microcontrolador, dicho de otra manera, ahora tienes la capacidad de actualizar tu firmware sin necesidad de hardware especial, lo que se traduce en menos costos de fabricación, menos tiempo de desarrollo, y miles de dolores de cabeza evitados, solo quema un JBoot en tu microcontrolador y listo, a esto es a lo que yo llamo:
BURN & PLAY BABY
¿Alguien dijo IoT?
Con Jloader y JBoot ya estas listo para la siguiente generación de gadgets IoT (Internet de las cosas), JLoader y JBoot se encargan del trabajo por tí, ahora puedes añadir a tus productos actualizaciones OTA ya sea mediante Bluetooth, Zigbee, Wifi, etc etc etc.
Estructura de JBoot
A diferencia de otros bootloader, JBoot trata de ser lo menos invasivo posible.
•En cuanto a espacio, solo ocupa las últimas 32 posiciones de memoria.
•El vector de interrupción sigue siendo 0x04, el único cambio es el vector de reset, ahora esta en 0x02 en vez de 0x00.
Pasos previos:
Descarga el JBoot del microcontrolador que vayas a utilizar, tienes varios modelos y opciones a elegir:
NOTA: Para poder utilizar JLoader es necesario contar con un programador de microcontroladores, en caso que no cuentes con uno puedes solicitar al distribuidor que precargue el firmware.
IntOSC 4Mhz: Oscilador interno a 4 Mhz: Utiliza el oscilador interno del microcontrolador.
IntOSC 8Mhz: Oscilador interno a 8 Mhz: Utiliza el oscilador interno del microcontrolador.
ExtOSC 4Mhz: Oscilador int/ext a 4 Mhz: Utiliza el oscilador externo (IESO/FSCM activos).
ExtOSC 20Mhz: Oscilador externo a 20 Mhz: Utiliza el oscilador externo (IESO/FSCM apagados).
Una vez elegido el JBoot que se adapta a tus necesidades, es necesario programarlo en el microcontrolador para que JLoader se pueda comunicar con él.
Ahora descarga e instala en tu computadora el cliente JLoader.
NOTA: Te recomiendo descargar la versión firmada para comprobar su autenticidad, pero si no cuentas con software para leer claves PGP, la versión sin firmar es exactamente lo mismo.
Programación:
JLoader utiliza las dos primeras posiciones de memoria, por lo tanto es necesario que el código empiece en la dirección 0x02.
XC8/XC16/XC32:
Si utilizas lenguaje de alto nivel, es necesario indicarle al linker que empiece en 0x02.
Por fortuna en MPLABX esto lo podemos hacer en menos de un minuto:
En la barra de menú selecciona:
• Run+Set Project Configuration+Customize...
• XC8 global options+XC8 linker+Additional options
• XC8 global options+XC8 linker+Additional options+Codeoffset=0x02
Salvamos los cambios y eso seria todo, empieza a programar como normalmente lo harias.
ASM
Si utilizas ensamblador solo es necesario añadir org 0x02 al inicio de tu programa:
Sin interrupciones:
org 0x02
código
end
Con interrupciones:
org 0x02 goto principal
org 0x04 goto interrupcion
interrupcion
código ;Código de atención a la interrupción
retfie
principal
código ;Código del programa principal
end
Series legacy (PIC16F8XX)
Sin interrupciones:
org 0x00
bsf 0x0A,3
bsf 0x0A,4
goto 0x700
código
end
Con interrupciones:
org 0x00
bsf 0x0A,3
bsf 0x0A,4
goto 0x700
goto principal
org 0x04 goto interrupcion
interrupcion
código ;Código de atención a la interrupción
retfie
principal
código ;Código del programa principal
end
JLoader:
• Ejecuta JLoader:
• Selecciona a un puerto de comunicación (COM) luego presiona el botón Conectar:
• Presiona el botón Cargar para selecciona el archivo HEX:
• Para iniciar la programación presiona el botón Programar:
• Por último presiona el botón MCRL del microcontrolador para iniciar tu programa.
JLoader:
JLoader_V1.zip
Checksum MD5: A27D97FC718F129B38DD1671DBEBEFDC
JBoot:
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 1 → RE3 (MCRL) | |
•Pin 18 → RC7 (RX) | |
•Pin 17 → RC6 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 4 → RA3 (MCRL) | |
•Pin 12 → RB5 (RX) | |
•Pin 10 → RB7 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 4 → RA5 (MCRL) | |
•Pin 7 → RB1 (RX) | |
•Pin 8 → RB2 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 1 → RE2 (MCRL) | |
•Pin 18 → RC7 (RX) | |
•Pin 17 → RC6 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 1 → RE3 (MCRL) | |
•Pin 18 → RC7 (RX) | |
•Pin 17 → RC6 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 4 → RA5 (MCRL) | |
•Pin 7 → RB1 (RX) | |
•Pin 8 → RB2 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 4 → RA3 (MCRL) | |
•Pin 2 → RA5 (RX) | |
•Pin 3 → RA4 (TX) |
IntOSC 4Mhz | Descargar |
---|---|
IntOSC 8Mhz | Descargar |
ExtOSC 4Mhz | Descargar |
ExtOSC 20Mhz | Descargar |
Pines: | |
•Pin 4 → RA3 (MCRL) | |
•Pin 2 → RA5 (RX) | |
•Pin 3 → RA4 (TX) |
Requisitos del sistema:
•Sistema operativo: Windows 7/8/8.1 (32/64 bits)
•Procesador: 1.7Ghz o superior.
•Memoria RAM: 512Mbytes o más.
•NetFrame 4.5 o superior.
Changelog:
Versión 1.0
JLoader nuevo diseño de la interfaz.
Versión 1.0a
JLoader identifica la versión de JBoot y el modelo del microcontrolador.
JLoader optimización en la verificación del archivo hexadecimal en busca de posibles conflictos con JBoot.
JLoader optimización del algortimo de recepción de datos, mejora la comunicación con módulos de RF.
JLoader alerta al usuario frente a posibles archivos corruptos.
JBoot nueva versión compatible con JLoader V1.0a.
Versión 1.7b
JLoader depuración y optimización del código de decodificación del archivo HEX.
Versión 1.6b
JLoader correción de errores.
Versión 1.5b
JLoader ahora autoestablece la conexión con JBoot.
JLoader depuración y optimización del código de comunicación.
JLoader se corrigió el código de comunicación serial, el cual provocaba que el programa mostrara Conectado aún cuando no habia ningún microcontrolador conectado.
JLoader se corrigió el código de comunicación serial, el cual provocaba que el programa mandara el archivo HEX aún cuando no habia ningún microcontrolador conectado.
JLoader se corrigió el código de comunicación serial, el cual provocaba que el programa mostrara Programación finalizada aún cuando no habia ningún microcontrolador conectado.
JBoot se mejoro el protocolo de comunicación, ahora se auto-identifica con JLoader.
JBoot optimización del código, se eliminaron bloques redundantes.
Versión 1.4b
JLoader depuración y optimización del código para comunicación serial, el cual provocaba que el programa se congelara.
JLoader depuración y optimización del código para decodificar el archivo hex.
JLoader se eliminó la ventana de notificación al programar.
JLoader se deshabilito temporalmente la verificación del archivo hex.
JBoot utiliza un nuevo algoritmo para calcular el checksum.
JBoot se eliminó un bug, el cual impedia programar la memoria completa.
Versión 1.3b
Soporte para microcontroladores de microchip que no son de la serie XLP.
Versión 1.2b
Verifica el archivo hexadecimal para encontrar posibles conflictos con JBoot.
La consola muestra información sobre el checksum, direcciones y nemonicos.
Versión 1.1b
Se corrigió el código de verificación del checksum.
Versión 1.0b
Versión inicial de JLoader.
JLoader & JBoot by E. David Rojas Serrano is licensed under a Creative Commons Reconocimiento-NoComercial-CompartirIgual 4.0 Internacional License. Creado a partir de la obra en https://edx-twin3.org/jloader