Skip to content

fix(fram): corregir writeBlock y publicar JW_FRAM 1.0.3#2

Draft
JW-Control wants to merge 6 commits into
mainfrom
fix/jw-fram-1.0.3-writeblock
Draft

fix(fram): corregir writeBlock y publicar JW_FRAM 1.0.3#2
JW-Control wants to merge 6 commits into
mainfrom
fix/jw-fram-1.0.3-writeblock

Conversation

@JW-Control

@JW-Control JW-Control commented Jul 15, 2026

Copy link
Copy Markdown
Owner

Resumen

Actualiza JW_FRAM a la versión 1.0.3 dentro del repositorio central JW-Libraries.

La corrección fue detectada y validada en hardware durante la prueba integrada del JWPLC Basic con TFT, botonera, RTC, FRAM y Ethernet.

Problema detectado

writeBlock() almacenaba el encabezado y el payload mediante dos comandos WRITE independientes, pero ejecutaba un solo WREN antes de ambos.

En la FM25CL64B usada por el JWPLC Basic, el latch WEL se limpia al finalizar el primer comando WRITE. Como consecuencia:

  • el encabezado quedaba escrito;
  • el payload podía conservar datos anteriores o quedar incompleto;
  • readBlock() rechazaba el bloque por checksum inválido;
  • el diagnóstico mostraba ERROR VERIFICACION.

Los métodos put(), get() y update() no estaban afectados.

Corrección

writeBlock() ahora escribe:

  1. el encabezado mediante su propio ciclo WREN -> WRITE -> WRDI;
  2. el payload mediante un segundo ciclo independiente.

Se conserva sin cambios:

  • la API pública;
  • la estructura BlockHeader;
  • el formato persistido;
  • la validación de magic, versión, longitud y checksum.

Archivos actualizados

  • libraries/JW_FRAM/src/JW_FRAM.h
  • libraries/JW_FRAM/library.properties
  • libraries/JW_FRAM/CHANGELOG.md
  • libraries/JW_FRAM/README.md
  • platform-jwplc-sync.properties

Versión

JW_FRAM 1.0.3

Validación realizada

  • Basic_RW confirma lectura/escritura básica de la FRAM.
  • writeBlock() y readBlock() verificados en JWPLC Basic con FM25CL64B.
  • Escritura con verificación muestra GUARDADO OK.
  • Valor persistente recuperado después de reiniciar.
  • Contador de arranque incrementado correctamente.
  • Indicador ERR apagado cuando no existen otras fallas.
  • La misma corrección ya fue aprobada e integrada en platform-jwplc mediante el PR #56.

Revisión del flujo de sincronización

Se comprobó que JW-Libraries ya tiene dos workflows relevantes:

  1. sync-jw-fram.yml

    • se ejecuta al cambiar libraries/JW_FRAM/library.properties en main;
    • publica el subtree en JW-Control/JW_FRAM;
    • crea el release/tag v1.0.3 si aún no existe.
  2. sync-platform-jwplc-libraries.yml

    • sincroniza las librerías bundled hacia platform-jwplc;
    • crea el PR de sincronización como draft.

La configuración de destino estaba desactualizada y todavía apuntaba a alpha31 y a JWPLC/JWPLC-2.0.0/libraries. Se actualizó a:

base=main
sync=sync/jw-libraries-2.1.0
path=JWPLC/2.1.0/libraries

También se verificó que las versiones actuales de JW_MatrixButtons, JW_RTC y JW_SD coinciden entre JW-Libraries y platform-jwplc, por lo que la sincronización no debería introducir una regresión de versiones.

Estado

PR creado y mantenido como draft.

Mientras permanezca en draft y sin fusionar, no se ejecutan los workflows basados en push a main, no se publica el release y no se crea el PR automático de sincronización en platform-jwplc.

Al fusionarlo más adelante:

  • se actualizará el repositorio standalone JW_FRAM;
  • se generará el release v1.0.3;
  • se abrirá o actualizará un PR draft separado para sincronizar las librerías del package 2.1.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant