Burn & Play


Jloader se comunica con el microcontrolador mediante firmwares llamados JBoot.
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 porductos actualizaciones OTA ya sea mediante Bluetooth, Zigbee, Wifi, etc etc etc.

Estructura de JBoot


A diferencía de otros bootloader, JBoot trata de ser lo menos invasivo posible.
JBoot
•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.

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.

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 empieze en 0x02.

Por fortuna en MPLABX esto lo podemos hacer en menos de un minuto:

En la barra de menú selecciona:

MPlabX
Run+Set Project Configuration+Customize...

MPlabX
XC8 global options+XC8 linker+Additional options


MPlabX
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:

JLoader
• Selecciona a un puerto de comunicación (COM) luego presiona el botón Conectar:

JLoader conectar
• Presiona el botón Cargar para selecciona el archivo HEX:

JLoader cargar archivo
• Para iniciar la programación presiona el botón Programar:

JLoader programar
• Por último presiona el botón MCRL del microcontrolador para iniciar tu programa.

Video tutoriales


JLoader:


Versión actual: 1.0 estable

Portable:

JLoader.zip.sig (Firmada)
Llave para verificar la firma: 37F4ABB549F440EDDAA0CF4F012878EA6C5DDFC8
Checksum MD5:

JLoader.zip (Sin firmar)
Checksum MD5:

Setup.exe:

JLoader_V1.zip.sig (Firmada)
Llave para verificar la firma: 37F4ABB549F440EDDAA0CF4F012878EA6C5DDFC8
Checksum MD5: 8FDD7251F7A52C3A51EF0701B0530B51

JLoader_V1.zip (Sin firmar)
Checksum MD5: A27D97FC718F129B38DD1671DBEBEFDC

Si JLoader te ha sido útil, puedes ayudarme comprando un acceso beta, puede ser desde $1 pesito hasta $1M de pancholares

Con tu aportación obtienes los siguientes beneficios:

• Ayudas a mantener este software actualizado y gratuito.
• Soporte en caso de que tengas un problema.
• Puedes proponer el siguiente JBoot (PIC16FXXXX).
• Obtienes las actualizaciones de JLoader y JBoot antes de ser publicadas en la pagina.

JLoader acceso beta:


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.

Licencia de Creative Commons
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://www.edx-twin3.org/JLoader.html.

JBoot:


PIC16F15356/76/86
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)
PIC16F1619/15
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)
PIC16F1827
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)
PIC16F15375/85
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)
PIC16F886
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)
PIC16F1826
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)
PIC12F1840
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)
PIC12F1572
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)

Comentarios, preguntas o sugerencias