Debe leer previamente estas dos entradas para poder seguir este proceso de reinstalación de firmware:
Así se encontrará en un punto en que:
- Conoce el hardware de la radiosonda RS41, concretamente los modelos de:
- placa
- procesador
- chip de radio.
- Tendrá instalado en el ordenador y conocerá el funcionamiento de los programas
- openocd
- STM32Cube Programming
- Dispondrá de un dispositivo ST-Link V2 y lo tendrá cableado correctamente con la RS41
- Tendrá desbloqueada la sonda RS41, que se desea reprogramar, frente a borrado y escritura
Se va a proceder a instalar el firmware RS41-NFW que utiliza el entorno Arduino IDE para su compilación, que es posible que ya haya usado en algún proyecto con ESP32, y que utiliza para la carga del firmware los programas openOCD o STM32 Cube Programing
Concretamente vamos a instalar la versión:
- "RS41-NFW v65, GPL-3.0 Franek Lada (nevvman, SP5FRA)"
Siga las instrucciones del proyecto RS41-NFM, aquí solamente se comentan por encima, o se señala donde se encontraron dificaultades
Descargue librerias del proyecto
Descargue desde https://github.com/Nevvman18/rs41-nfw los fuentes y descomprima el fichero ZIP. Las mas importantes son las carpetas o directorios_
- fw/arduino-ide_variant-files/ de la cual extraeremos una definiciónd e placas
- rs41-nfw_sonde-firmware/ donde se encuentra el archivo .ino que finalmente compilaremos apra obtener las binarias apra cargar (.bin)
Añadir las placas STM32
En preferencias del Arduino IDE incluir la siguiente librería https://github.com/stm32duino/BoardManagerFiles/raw/main/package_stmicroelectronics_index.json
En Gestor de placas cargar STM32 y cuando acabe rearrancar ArduinoIDE
Borrar cache
Compruebe si existe un fichero cache para las Arduino IDE y si existe bórrelo (para macOS lo encontramos en ~/Library/Application Support/arduino-ide )
Cambiar carpeta por defecto por la del proyecto
Localice la librería
Library/Arduino15/packages/STMicroelectronics/hardware/stm32/x.x.x/variants/STM32L4xx
Borre
"L412RB(I-T)xP" con rm -rf "L412RB(I-T)xP"
Copie la carpeta que hemos descargado de github, si la hemos dejado en el raiz para macOS se ahce cp -r ~/L412RB\(I-T\)xP
Modifique el fichero boards.txt de la versión (en nuestro caso 2.12.0) añadiendo
# Generic L412RBTxP
GenL4.menu.pnum.GENERIC_L412RBTXP=Generic L412RBTxP
GenL4.menu.pnum.GENERIC_L412RBTXP.upload.maximum_size=131072
GenL4.menu.pnum.GENERIC_L412RBTXP.upload.maximum_data_size=40960
GenL4.menu.pnum.GENERIC_L412RBTXP.build.board=GENERIC_L412RBTXP
GenL4.menu.pnum.GENERIC_L412RBTXP.build.product_line=STM32L412xx
GenL4.menu.pnum.GENERIC_L412RBTXP.build.variant=STM32L4xx/L412RB(I-T)xP
GenL4.menu.pnum.GENERIC_L412RBTXP.debug.svd_file={runtime.tools.STM32_SVD.path}/svd/STM32L4xx/STM32L412.svd
Selección de la placa en Arduino IDE.
- Para versiones anteriores (p. ej., RSM412):
- Selecciona la serie STM32F1 genérica en Herramientas (IDE), luego ve a Herramientas (IDE) -> Número de pieza de la placa: y selecciona la placa F100C8Tx genérica.
- Para versiones más recientes (p. ej., RSM414, RSM424):
- Selecciona la serie STM32L4 genérica en Herramientas (IDE), luego ve a Herramientas (IDE) -> Número de pieza de la placa: y selecciona la placa L412RBTxP genérica recién instalada. ¿No la ves? Asegúrate de haber seguido la guía anterior.
- Selecciona el programador (Upload) adecuado: Herramientas (IDE) -> Programador: -> STMicroelectronics ST-LINK.
- Selecciona la configuración de optimización del compilador como "Más pequeña" Smallest (-Os por defecto).
Modificar el fichero .ino
//===== Device revision definitions
/* CHANGE-ME! SELECT YOUR BOARD REVISION BY UNCOMMENTING THE RIGHT DEFINITION BELOW (model can be found written on the PCB at the bottom part, see compilation manual for more info)*/
#define RSM4x4 // New PCB versions, RSM4x4 AND RSM4x5 (based on MCU STM32L412RBT6 LQFP64)
// #define RSM4x2 // Old PCB versions, RSM4x2 and RSM4x1 (based on MCU STM32F100C8T6B LQFP48)
Compilar como "Exportar binario compilado" desde IDE
Nos dará un error del tipo , que nos dice que tras compilar no puede cargarlo, no hay problema
getopt: illegal option -- a
Terminating...
Failed uploading: uploading error: exit status 1
Copiar el binario que se encuentra en la subcarpeta build del directorio donde hemos estado compilando con openocd
openocd -f interface/stlink.cfg -c "transport select hla_swd" -c "set CPUTAPID 0x2ba01477" -f target/stm32l4x.cfg -c "init; halt; program RS41-NFW-Arduino.ino.bin 0x08000000 verify reset exit"
O mucho mas fácil desde
STC32cubic Programmer
En STC32cubic programmer la secuencia de carga del firmware es la siguiente
13:42:27 : Opening and parsing file: rs41-nfw_sonde-firmware.ino.bin
13:42:27 : Memory Programming ...
13:42:27 : File : rs41-nfw_sonde-firmware.ino.bin
13:42:27 : Size : 70.11 KB
13:42:27 : Address : 0x08000000
13:42:27 : Erasing memory corresponding to segment 0:
13:42:27 : Erasing internal memory sectors [0 35]
13:42:28 : Download in Progress:
13:42:30 : File download complete
13:42:30 : Time elapsed during download operation: 00:00:02.447
13:42:30 : Verifying...
13:42:30 : Read progress:
13:42:30 : Time elapsed during verifying operation: 00:00:00.463
13:42:30 : Download verified successfully
13:42:30 : RUNNING Program ...
13:42:30 : Address: : 0x08000000
13:42:30 : Application is running, Please Hold on...
13:42:30 : Start operation achieved successfully
Esta parte ha sido laboriosa pero llegado a este punto le bastará con repetir el proceso de
- Editar el .ino en Arduino IDE
- Compilar el programa modificado como "Exportar binario compilado"
- Cargar el programa a la sonda RS41 con STC32cubic Programmer
- Probar el firmware rs41-nfw en una RS41 de Vaisala
Advertencia importante
Las modificaciones, configuraciones y procedimientos descritos en este sitio pueden implicar riesgos técnicos, legales o de seguridad. El autor no se responsabiliza del mal funcionamiento de los equipos, daños permanentes, pérdida de garantía ni de posibles infracciones legales derivadas del uso de esta información.
El lector asume plena responsabilidad por cualquier acción que decida realizar basándose en el contenido de este blog.
© 2026 EA5JTT. Queda prohibida la reproducción total o parcial sin autorización expresa del autor.

No hay comentarios:
Publicar un comentario