Autor: Graeme Clark, Ingeniero principal, Renesas Electronics
Los dispositivos que se actualizan automáticamente de forma remota ahora son comunes, y ahora todos están acostumbrados a que sus teléfonos móviles reciban actualizaciones de software ocasionales a través de la red móvil. Todos conocemos el sentimiento de frustración que puede ocurrir mientras esperamos que nuestros móviles descarguen cientos de Mbytes de nuevo software para asegurarnos de que funcionen de manera segura y admitan las funcionalidades más recientes. Estas actualizaciones generalmente agregan funciones nuevas y mejoras que el consumidor desea, a menudo corrigen errores en aplicaciones e incluso en el sistema operativo del teléfono y brindan actualizaciones de seguridad para mantener el dispositivo móvil del consumidor funcionando de manera segura permitiendo que esté protegido contra piratería y otras amenazas de seguridad.
En las aplicaciones integradas, las actualizaciones de firmware remotas (OTA) proporcionan básicamente las mismas funciones, lo que permite a los desarrolladores proporcionar actualizaciones remotas a sus aplicaciones en el campo. Sin embargo, un dispositivo integrado no suele ser lo mismo que los últimos teléfonos móviles. Los teléfonos móviles de hoy tienen procesadores extremadamente rápidos y potentes, con una gran cantidad de almacenamiento y una arquitectura de software compleja con un sistema operativo. Por lo general, los diseños integrados están limitados por el rendimiento de la CPU, el consumo de energía y el almacenamiento disponible, por lo que el diseño de una arquitectura de software robusta y segura que pertmita actualizaciones de firmware OTA es mucho más desafiante. Sin embargo, los diseñadores todavía quieren ofrecer las mismas características. Queremos poder ofrecer la capacidad de agregar nuevas funciones a nuestros dispositivos integrados, tal vez incluso podamos vender estas nuevas funciones a nuestros clientes. Queremos poder corregir cualquier error o reparar las debilidades de seguridad que se encuentren en nuestros productos. Los dispositivos integrados de hoy en día son tan complejos que nunca podemos garantizar que estén libres de errores o que no haya ningún problema inusual que pueda explotarse como una debilidad para permitir el acceso no autorizado al dispositivo.
La familia de microcontroladores RE ha sido diseñada específicamente para respaldar la creciente demanda de los desarrolladores de dispositivos de un solo chip que permitan el desarrollo de dispositivos conectados verdaderamente inteligentes, sin tener que agregar muchas memorias y otros dispositivos externos, lo que aumenta el costo y la complejidad de el producto. La familia RE ofrece microcontroladores con uno de los consumos de energía más bajos del mercado. Admiten un bajo consumo de corriente tan bajo como 12 µA/MHz, lo que resulta en una corriente activa inferior a 400 µA cuando se ejecuta a una velocidad de 32 MHz. Este consumo de energía, extremadamente bajo, junto con los periféricos dedicados de bajo consumo, como el ADC, capaz de operar mientras consume solo unos pocos µA, así como los temporizadores de bajo consumo capaces de operar en el rango de nA, hacen que estos dispositivos sean ideales para aplicaciones ultrajabas. Aplicaciones de sensores de potencia.
El último dispositivo de la familia RE, el RE01B, cuyo diagrama de bloques se muestra en la Figura 1, es una solución ideal para aplicaciones de sensores IoT. Ofrece un conjunto de funciones único que incluye un módulo inalámbrico Bluetooth® Low Energy (BLE) de bajo consumo, así como 1,5 Mbytes de flash y 256 kbytes de SRAM. Este ajuste de memoria es inusual para un microcontrolador con una radio BLE integrada, especialmente uno destinado a aplicaciones de sensores, donde normalmente se utilizan tamaños de memoria más pequeños. El RE01B ha sido diseñado específicamente para aplicaciones donde se requiere soporte para actualizaciones de firmware usando radio BLE, agregando una gama de características especialmente para soportar este requisito.
La más importante de estas características es que el RE01B implementa tres bancos independientes de memoria flash en chip, cada uno de 512 kbytes de tamaño. Cada uno de estos se puede programar o borrar de forma independiente mientras se ejecuta el código desde los otros bancos, proporcionando una verdadera operación en segundo plano (BGO). Esto permite que el desarrollador admita la programación y el borrado de la memoria flash en el chip, mientras que las aplicaciones complejas y una pila de protocolos BLE pueden ejecutarse desde la memoria flash en el chip.
En las aplicaciones de IoT, el consumo de energía suele ser un parámetro crítico. Si el consumo de energía del sensor aumenta significativamente durante la programación y el borrado, esto puede tener un impacto tanto en la duración de la batería del sensor como en el diseño de la fuente de alimentación, lo que a su vez puede tener un impacto en el costo del producto.
El RE está diseñado para evitar este problema, ya que cada uno de los módulos de memoria flash implementados en la familia RE utiliza una versión de potencia ultrabaja especialmente optimizada del proceso flash MONO patentado por Renesas. Esto minimiza la energía consumida durante la programación flash y el borrado.
El módulo flash implementado en el RE01B generalmente solo aumenta la potencia total consumida por el RE en alrededor de 0,24 mA durante la programación y 0,23 mA durante el borrado. Podemos comparar esto con otros microcontroladores disponibles en la actualidad, para los cuales el consumo de energía generalmente aumentará en al menos 5 a 10 veces este valor. Un ejemplo de esto sería el popular Renesas RX130 en el que el consumo de energía del dispositivo suele aumentar en 2,5 mA durante la programación. Los beneficios del módulo flash RE se muestran en la Figura 2. Cuando comparamos la corriente total consumida por cada dispositivo durante una operación de programación mientras opera a 2 MHz, el RE consume casi 6 veces menos en total que el RX130.
Renesas proporciona una aplicación completa para el RE01B que demuestra cómo desarrollar una aplicación integrada que puede actualizar el firmware de una aplicación y, si es necesario, la pila de protocolos Bluetooth de manera confiable y segura por aire, mediante BLE.
Es muy importante poder actualizar tanto la aplicación como la pila BLE, ya que se podría encontrar que tiene un error o una debilidad de seguridad que debe corregirse. También es fundamental que estas actualizaciones sean 100% seguras y funcionen correctamente en todas las condiciones. Las actualizaciones deben recibirse correctamente incluso durante un corte de energía, ya que es especialmente importante que la pila de protocolos siempre funcione correctamente.
Para mostrar cómo puede funcionar un sistema de este tipo utilizando esta arquitectura de memoria y cómo se vería el software operativo, Renesas ha creado una aplicación de trabajo completa. Incluye dos aplicaciones de demostración, que utilizan la placa de evaluación para el RE01B y un teléfono Android para cargar la actualización del firmware a través de Bluetooth. En la Figura 3 se muestra una imagen del sistema de demostración en funcionamiento. Ilustra la placa de evaluación RE01B, en este caso con alimentación suministrada por un depurador Segger J-Link para facilitar su uso, y un teléfono Android que ejecuta el cliente de actualización de firmware. No se requiere ningún circuito externo para ejecutar esta aplicación. Los usuarios interesados pueden descargar todo el software necesario: la aplicación de demostración para el RE01B, incluida la pila de protocolos BLE completa, dos aplicaciones de demostración y una aplicación de descarga, así como la aplicación cliente que proporciona los servicios de descarga de aplicaciones que se ejecutan en el teléfono Android.
Esta aplicación, que se muestra en la Figura 4, permite a los usuarios consultar el RE01B en la placa de evaluación para verificar la revisión de la aplicación y actualizar tanto la aplicación como la pila de protocolos BLE si es necesario a través de BLE. La fuente completa de las aplicaciones de demostración y la aplicación que se ejecuta en el teléfono Android se proporcionan como parte del proyecto.
En la Figura 5 se muestra una arquitectura de software simplificada para este proyecto. El software incluido con esta aplicación comprende dos aplicaciones de usuario simples que se pueden descargar al dispositivo de destino a través de BLE. Ambas son aplicaciones BLE simples que se ejecutan durante el funcionamiento normal y permiten la manipulación de los LED en la placa de evaluación. Estas aplicaciones incluyen información sobre la versión y el usuario puede actualizarlas mediante la aplicación de Android suministrada según sea necesario. El software también incluye la pila de protocolos BLE completa, un gestor de arranque que gestiona el funcionamiento general del sistema y una aplicación de descarga que utiliza la pila BLE para descargar el firmware de forma segura desde el teléfono Android y almacenarlo en la memoria del dispositivo. Finalmente, hay un módulo de reubicación que administra la reubicación de la aplicación y la pila de protocolos una vez que se reciben y validan en el rango de direcciones de memoria correcto para el funcionamiento normal.
El sistema puede funcionar de dos maneras diferentes. En el primero, solo se actualiza la propia aplicación de usuario. La actualización se envía desde el teléfono móvil, se divide en bloques individuales más pequeños a través de BLE y se almacena en la SRAM. La aplicación original en la memoria flash se elimina y, a medida que se verifica cada bloque, la aplicación existente se reemplaza por una nueva versión escrita en la memoria flash del dispositivo. En la Figura 6 se muestra un diagrama simplificado de esta estructura, donde cada uno de los bloques de colores representa uno de los bloques flash de 512 Kbytes. Cada uno también se puede escribir de forma independiente o borrar en segundo plano, lo que permite que la ejecución del programa continúe desde los otros bloques flash. Este es el gran beneficio de la arquitectura flash RE01B, ya que no se requiere flash externo ni SRAM para la operación de descarga y programación, y la pila BLE y las funciones principales pueden continuar ejecutándose desde la memoria flash.
En el segundo caso de uso, que se ilustra en la Figura 7, la aplicación de usuario y la pila de protocolos BLE se actualizan una tras otra. En este caso, la aplicación de usuario actual se borra y la pila BLE actualizada se programa en ese bloque, lo que permite que la pila de protocolo original se use para el proceso de descarga, por lo que nunca usamos la capacidad de comunicarnos. Una vez que se verifica la nueva actualización de firmware, se copia en el segundo bloque y luego se puede usar. A continuación, se borra el primer bloque y se puede descargar la nueva aplicación de usuario como antes.
Esta es en gran medida una descripción simplificada de cómo funciona el sistema, y en ambos casos hay una funcionalidad adicional para garantizar que el procedimiento de descarga funcione de manera confiable. Los datos se verifican durante el proceso de descarga para asegurarse de que no haya errores mientras se ejecuta y el proceso puede recuperarse si se encuentran errores. El sistema también está diseñado para ser robusto en caso de corte de energía durante el procedimiento de descarga. Esto es especialmente importante para asegurarnos de que siempre podamos comunicarnos con el RE01B, por lo que, en el peor de los casos, el procedimiento de descarga se puede reiniciar de manera confiable.
Para una descripción más detallada del funcionamiento de esta aplicación, los usuarios interesados pueden descargar la nota de la aplicación que describe su funcionamiento junto con todo el software necesario. Esto incluye tanto las aplicaciones para ejecutar en el microcontrolador RE01B como el cliente de actualización de firmware que se ejecuta en el teléfono móvil Android. La nota de aplicación, “RE01B Group Firmware update over the air sample program”, R01AN6211EJ0100 se puede descargar del sitio web de Renesas en www.renesas.com/RE. El sitio también incluye otras notas de aplicación que analizan varias arquitecturas que admiten actualizaciones de firmware mediante otros mecanismos, como la nota de aplicación R01AN5645EJ0101. Esto describe el método de implementación de la familia RE y el código de muestra para las actualizaciones de firmware en la familia RE mediante un UART.