Herramientas de desarrollo de ajuste de consumo para microcontroladores
Colaboración de Editores europeos de DigiKey
2017-06-06
Un aspecto reúne a muchos de los dispositivos que forman la Internet de las cosas (IoT): el requisito para un bajo consumo de energía. Abordar esta necesidad exige la optimización de varios niveles en una estrategia integral. Un diseño exitoso implica no sólo seleccionar los componentes de baja potencia, sino también utilizar el software para manejar la capacidad de la batería disponible por tener esos componentes trabajando juntos en la forma más eficiente. Incluso algunos cambios sutiles en la implementación de hardware y software pueden lograr grandes diferencias en el uso de energía global.
El núcleo de la mayoría de los dispositivos IoT es un microcontrolador (MCU) diseñado para una gran eficiencia energética. Un típico MCU de baja energía incluye una gran variedad de periféricos inteligentes que controlan la E/S y las funciones esenciales del sistema por cuenta del procesador de núcleo. Un puerto serial (UART) suele ser capaz de enviar y recibir datos de forma autónoma, mientras que el software que se ejecuta en el núcleo del procesador sólo debe transferir bytes desde el búfer apropiado una vez que se ha completado la recepción de datos. Con el DMA vinculado, las transferencias disponibles en dispositivos como la gama de MCU Gecko EFM32 de Silicon Labs, incluso esa interacción puede ser minimizada. En este caso, el núcleo del procesador solo necesita activarse para inspeccionar el contenido de la memoria una vez que se ha recibido todo un mensaje.
Al permitir a los periféricos gestionar la E/S, el MCU puede pasar gran parte de su tiempo en modo de reposo, donde muchas partes del MCU se apagan y no consumen energía. El ciclo de servicio es la proporción de tiempo dedicado en modo activo en comparación con el tiempo desactivado. Un bajo ciclo de trabajo es importante para aplicaciones IoT alimentadas por batería ya que los modos de suspensión consumen unos pocos microamperios, mientras que el modo activo normalmente consume varios órdenes de magnitud más.
Un bajo ciclo de trabajo permite que el núcleo del procesador pueda permanecer inactivo durante la mayoría del tiempo, y activarse sólo para recoger datos o comunicarse cuando sea necesario. La clave para implementar una estrategia de ciclo de trabajo bajo es comprender cómo el software interactúa con el hardware. Las funciones que provocan que el MCU se active por demasiado tiempo necesitan ser identificadas y, a continuación, se sustituyen o reescriben si es posible. Tradicionalmente, esto ha sido difícil de lograr en las primeras fases de desarrollo porque dicha identificación se basa en hardware acabados para pruebas.
El kit de inicio Pearl Gecko y las placas de evaluación similares de Silicon Labs incluyen una función de monitor de energía avanzada (AEM). Cuando se utiliza en combinación con las herramientas avanzadas en la placa Simplicity Studio de la empresa, proporciona valiosa información sobre cuánta energía requiere una aplicación durante el ciclo de desarrollo de software. La información no sólo demuestra la eficacia de los modos de suspensión, sino también de las optimizaciones a nivel de función.

Figura 1: Aplicación del módulo AEM sobre la placa de kit de inicio Pearl Gecko.
La función AEM supervisa la corriente que fluye desde un LDO en placa que se alimenta desde el bus USB. Normalmente, el USB se utiliza para apoyar a la depuración y la descarga de software en el MCU de destino. Como se ilustra en la Figura 1, cuando el interruptor en placa está en la posición de modo de batería, las mediciones de corriente no son posibles.
Cuando el interruptor de encendido está ajustado a modo de AEM, los datos recogidos por el controlador de placa se retransmiten a la herramienta Simplicity Studio y pueden visualizarse mediante el analizador de energía. El AEM puede medir corrientes a través de una amplia gama desde 0,1 µa a 50 mA, un rango dinámico de 114 dB. Esto permite un análisis preciso de las repercusiones de los diferentes estados del modo de reposo, así como el consumo de energía en modo activo.
A fin de medir con exactitud el consumo de corriente a través de una gama tan amplia, se emplea un amplificador de detección de corriente junto con una etapa de ganancia doble. El amplificador mide la caída de voltaje a través de un pequeño resistor en serie, y la etapa de ganancia amplifica esta tensión con dos diferentes ajustes de ganancia, obteniendo dos gamas de corriente. La transición entre estas dos gamas se produce alrededor de 250 µa. El filtrado y promedio digital se realizan dentro del controlador de la placa de evaluación antes de exportar las muestras.
En cada paso del temporizador, el AEM realiza un muestreo y convierte la corriente y la envía junto con la tensión y la información de sincronización a través de USB a las herramientas de desarrollo, generando corriente de hasta 6250 muestras por segundo.
Ya que el perfil de energía se basa en los datos de rastreo para la correlación, el código que se ejecuta en el MCU necesita ser compilado para contener enunciados que envían datos de depurar con formato de registro arbitrario (DWARF). Las muestras del contador de programa (PC) enviadas al depurador se correlacionan con el archivo objeto usando los datos de depuración para encontrar el correspondiente archivo de origen, la función y la línea del código C que se ejecuta en el MCU. Esto permite que las mediciones de energía puedan ser asociadas a las distintas funciones y tareas.
El usuario tiene acceso a tres ventanas cuando se usa la herramienta dentro de Simplicity Studio. Estas muestran el código pertinente, el gráfico de consumo de corriente y una imagen del nivel de función. Haciendo clic en cualquier punto a lo largo de la gráfica de corriente, se puede resaltar una parte del código en la ventana de listado de código. Esto corresponde a la parte real de código que se ejecuta en ese momento, y con el nivel dado de consumo de corriente. El listado de función proporciona la energía total consumida por cada función y su porcentaje del total medido para el conjunto de la aplicación. Si el usuario quiere analizar la información de perfiles en un momento posterior, es posible exportar los datos a un archivo y luego importarlo para su posterior análisis.
Para ilustrar el uso de las herramientas de supervisión de alimentación disponibles en Simplicity Studio, echaremos un vistazo a un ejemplo de un MCU en comunicación a través de un puerto UART. Una manera sencilla de mover los datos desde el búfer LEUART de Gecko hacia la memoria principal para su posterior procesamiento es sondear periódicamente el periférico. Si los datos están disponibles, un indicador de estado (LEUART_STATUS_RXDATAV) indicará que los datos pueden ser recuperados.

Figura 2: Alto consumo de energía a largo plazo con sondeo de puerto serial.
Ejecutar el código en un núcleo de procesador activo se traduce en un consumo de corriente constante de varios miliamperios. Haciendo clic en el gráfico, se puede resaltar la función que causa el drenaje. Para ahorrar energía, el MCU debe evitar utilizar el sondeo para comprobar la disponibilidad de los datos. Esto puede lograrse desactivando el procesador entre la recuperación de datos y utilizando interrupciones para activar el procesador cuando se disponga de datos del búfer de recepción. El consumo de corriente cae significativamente durante el reposo, y hace picos mientras se ejecuta la rutina de servicio de interrupción (ISR). Esto se puede observar al identificar el ISR en la ventana del analizador de energía.

Figura 3: La aplicación de la respuesta de servicio de interrupción reduce el alto consumo de corriente para períodos más cortos de tiempo.
Sin embargo, una vez que se ha resuelto una interrupción de recepción de datos, se puede mostrar un mayor consumo de potencia de otras partes del código que lo esperado al mantener el procesador activo. Al hacer clic sobre las funciones pertinentes se puede mostrar que las funciones de la transmisión son ahora responsables del consumo de energía extra. Mientras que una manera simple de programar una función de transmisión es establecer un bucle{} para esperar que finalice la transmisión de cada byte, esto mantendrá al procesador en funcionamiento más de lo necesario. De manera similar a la situación con el puerto de recepción, el bucle puede ser sustituido por una función de interrupción que activa el procesador después de completar la transmisión de cada byte. El procesador ahora entra en modo de reposo entre cada byte de cuadro, reduciendo así el consumo de corriente promedio.

Figura 4: La desactivación entre las transmisiones a nivel de byte reduce aún más el consumo de energía.
El módulo LEUART en el MCU Gecko puede ser funcional en un modo de sueño profundo. En este modo los osciladores de alta frecuencia se apagan, pero los osciladores de baja frecuencia (RC o cristal) siguen funcionando con sincronización de las LEUART. El uso de ese modo permite la reducción de corriente a microamperios entre la gestión de ISR.

Figura 5: El uso de los modos de suspensión profunda mejora la eficiencia energética para aplicaciones de bajo ciclo de trabajo.
Se pueden lograr mejoras moviendo más el manejo del búfer al motor DMA vinculado, logrando que sea responsable de la activación de interrupción una vez completadas las tramas completas que se han enviado o recibido. Esta estrategia permite al núcleo del procesador estar desactivado por más tiempo, con optimización de energía centrándose en las tareas de análisis de datos en el nivel de función.
Conclusión:
El ejemplo anterior demuestra la importancia del control de corriente y herramientas de depuración en la optimización de la eficiencia energética en aplicaciones de MCU. En lugar de esperar hasta el final del desarrollo para realizar la optimización energética, el análisis puede llevarse a cabo a lo largo de toda la fase de desarrollo, con mejoras iterativas claramente visibles para el desarrollador. Junto con los modos de suspensión avanzados y el hardware inteligente que puede funcionar sin intervención del procesador durante largos periodos de tiempo, los equipos de ingenieros pueden ofrecer importantes mejoras en la eficiencia energética.
Descargo de responsabilidad: Las opiniones, creencias y puntos de vista expresados por los autores o participantes del foro de este sitio web no reflejan necesariamente las opiniones, las creencias y los puntos de vista de DigiKey o de las políticas oficiales de DigiKey.

