Afrontar los proyectos intensivos en aspectos informáticos con ShieldBuddy

Por Clive "Max" Maxfield

Colaboración de Editores de DigiKey de América del Norte

Muchos aficionados, fabricantes y bricoladores utilizan las placas de desarrollo de microcomputadoras deArduino para monitorear y controlar sus proyectos. También lo hace un número cada vez mayor de ingenieros profesionales que pueden utilizar estas placas como plataformas de evaluación y creación de prototipos para acelerar el desarrollo y reducir los costos asociados a la evaluación de los circuitos integrados (CI), los sensores y los periféricos. Como se analizó en Utilizar las BOB de Arduino para evaluar rápidamente los sensores y periféricos, estos ingenieros pueden estar trabajando en equipos más pequeños con limitaciones más estrictas de tiempo de comercialización (TTM). Como tal, han tenido que abarcar múltiples dominios y tareas de ingeniería, al tiempo que encontraban formas de acelerar y reducir el costo de la evaluación de los componentes.

Una solución es usar Arduinos junto con hardware de código abierto en forma de sensores y placas de ruptura periférica (BOB) junto con software de código abierto con bibliotecas asociadas y programas de ejemplo. Si bien existe una gran variedad de placas Arduino para satisfacer una serie de requisitos de procesamiento y memoria, algunos cálculos se realizan mejor utilizando una unidad de punto flotante (FPU) para evitar la ralentización del procesador principal. Este problema ha sido abordado dentro del ecosistema de Arduino por ShieldBuddy.

Este artículo describirá varias opciones de la plataforma de procesamiento Arduino y por qué la capacidad de la FPU es tan importante para muchas aplicaciones. A continuación, presentará a ShieldBuddy, una placa que mantiene una huella física similar a la de las placas Arduino, pero que tiene tres núcleos de procesamiento de 32 bits independientes, cada uno de ellos a 200 MHz y cada uno con su propia FPU. El artículo describirá su modelo de programación y mostrará cómo su entorno de programación basado en Eclipse y su apoyo al entorno de desarrollo integrado (IDE) de Arduino permite tanto a los aficionados al bricolaje como a los diseñadores iniciarse rápidamente en él.

Arduino para los novatos y los profesionales por igual

Los novatos en el universo Arduino suelen empezar con el microcontrolador Arduino Uno Rev3 (Figura1), que se basa en el microcontrolador ATmega328P de 8 bits que funciona a 16 megahercios (MHz). Esta placa tiene solo 32 kilobytes (Kbytes) de memoria flash (programa), 2 Kbytes de SRAM, 14 pines de entrada/salida (E/S) digitales y seis pines de entrada analógica. Seis de los pines digitales pueden proporcionar salidas de modulación de ancho de pulso (PWM), y los pines analógicos también pueden ser usados como pines de E/S digitales, si es necesario.

Imagen de la placa de desarrollo Arduino Uno Rev3Figura 1: La placa de desarrollo Arduino Uno Rev3 se basa en el microcontrolador ATmega328P de 8 bits que funciona a 16 MHz. (Fuente de la imagen: Arduino.cc).

La huella de los cabezales del Arduino Uno Rev3, con 14 pines de E/S digitales, 6 pines de entrada analógica y varios pines de potencia, tierra y referencia, es la base de un enorme ecosistema de placas secundarias llamadas escudos.

Muchos usuarios del Uno Rev3 progresan posteriormente a la placa Arduino Mega 2560 Rev3 (Figura 2), que se basa en el microcontrolador ATmega2560 de 8 bits que funciona a 16 MHz. Esta placa tiene 256 Kbytes de memoria flash y 8 Kbytes de SRAM. La huella de sus cabezales significa que puede soportar los mismos escudos que el Uno, sin embargo, los cabezales adicionales le permiten encajar 54 pines de E/S digital y 16 pines de entrada analógica. En este caso, 15 de los pines digitales pueden proporcionar salidas PWM y, una vez más, los pines analógicos también pueden utilizarse como pines de E/S digitales, si es necesario.

Imagen de la placa de desarrollo de Arduino Mega 2560 Rev3Figura 2: La placa de desarrollo Arduino Mega 2560 Rev3 está basada en el microcontrolador ATmega2560 de 8 bits que funciona a 16 MHz. La huella de sus cabezales significa que puede soportar los mismos escudos que el Arduino Uno, pero también tiene cabezales adicionales, proporcionando un total de 54 pines de E/S digital y 16 pines de entrada analógica. (Fuente de la imagen: Arduino)

Además de las limitaciones impuestas por una trayectoria de datos de 8 bits y un reloj de 16 MHz, ni el microcontrolador Arduino Uno ni el Arduino Mega incluyen una FPU, lo que significa que cualquier cálculo que implique valores de punto flotante ralentiza drásticamente estos procesadores.

Para aquellos usuarios que deseen aún más potencia de procesamiento, el siguiente paso es el Arduino Due (Figura 3), que tiene una huella física similar a la del Arduino Mega, pero que se basa en el procesador de 32 bits Arm® Cortex®-M3SAM3X8E de Atmel/Microchip Technology, que funciona a 84 MHz. Esta tarjeta tiene 512 Kbytes de memoria flash, 96 Kbytes de SRAM, 54 pines de E/S digital, 12 pines de entrada analógica y dos pines de salida analógica que son manejados por convertidores digitales-analógicos (DAC). En este caso, solo 12 de los pines digitales pueden proporcionar salidas PWM y, una vez más, los pines analógicos también pueden utilizarse como pines de E/S digitales si es necesario. Desafortunadamente, como el Arduino Uno y Mega, el procesador del Arduino Due no incluye un FPU.

Imagen de la placa de desarrollo Arduino DueFigura 3: La placa de desarrollo Arduino Due está basada en el procesador de 32 bits Arm Cortex-M3 SAM3X8E de Atmel que funciona a 84 MHz. La huella de sus cabeceras es idéntica a la de la Arduino Mega. (Fuente de la imagen: Arduino.cc)

Muchos usuarios -tanto aficionados como profesionales- disfrutan de las altas cifras de clavijas de los tableros de desarrollo de Arduino Mega y Arduino Due. Pero, incluso el procesador de 32 bits del Arduino Due que funciona a 84 MHz puede ser insuficiente para algunas tareas de computación intensivas. Del mismo modo, los 512 Kbytes de memoria flash y 96 Kbytes de SRAM de Due pueden ser insuficientes para programas más sustanciales que trabajen con grandes cantidades de datos.

Si bien los microcontroladores son capaces de manejar el procesamiento de cantidades cada vez más grandes de datos, algunos cálculos se realizan mejor usando FPU para una mayor eficiencia y una menor latencia.

¿Qué son los FPU y por qué se necesitan?

Las razones por las que los FPU son útiles se remontan a cómo las computadoras manejan los números. La forma más simple de representar los números dentro de las computadoras es usar números enteros. Además, realizar los cálculos utilizando números enteros es muy barato. Sin embargo, los números enteros son de naturaleza finita y no pueden expresar un amplio rango dinámico.

Esto es problemático para los ingenieros y científicos, ya que a menudo necesitan utilizar valores extremadamente grandes y pequeños en el mismo cálculo. Por ejemplo, los físicos pueden tener cálculos que empleen los valores numéricos de la velocidad de la luz (300.000.000) y la constante gravitatoria de Newton (0,00000000006674). Del mismo modo, los ingenieros requieren valores con un amplio rango dinámico para tareas como el procesamiento de señales digitales (DSP), y para su uso en aplicaciones de inteligencia artificial (AI) y aprendizaje automático (ML).

La solución consiste en utilizar una representación numérica de punto flotante, en la que el punto decimal puede "flotar" con respecto a los dígitos individuales del número, lo que permite alcanzar un grado más fino de "resolución" numérica. El problema es que, aunque un valor de 32 bits en coma flotante consume la misma cantidad de memoria que un entero de 32 bits en coma fija, la realización de cálculos con valores en coma flotante requiere muchos más recursos de cálculo.

Si el procesador se ve obligado a realizar cálculos en punto flotante utilizando el hardware de punto fijo estándar, el resultado será un impacto dramático en el rendimiento de ese procesador. La solución es equipar el procesador con una FPU especial. Esto permite la ejecución de sofisticadas operaciones de punto flotante usando muy pocos ciclos de reloj.

Aquí es donde entra en juego el ShieldBuddy.

ShieldBuddy trae FPU y alto rendimiento al ecosistema de Arduino

Un jugador relativamente nuevo en el espacio compatible con Arduino, KITAURIXTC275ARDSBTOBO1 de Infineon Technologies o ShieldBuddy (Figura 4), es una tarjeta de evaluación incorporada para el microcontrolador de 32 bits TC275T64F200WDCKXUMA1 TC275 AURIX TC2xx TriCore de Infineon.

La imagen del ShieldBuddy TC275 está equipada con el procesador multinúcleo de 32 bits TC275 de Infineon.Figura 4: El ShieldBuddy TC275 está equipado con el procesador multinúcleo de 32 bits TC275 de Infineon en una placa con la misma huella que la Arduino Mega y la Arduino Due, lo que lo hace compatible con muchos de los escudos de aplicación disponibles.(Fuente de la imagen: Hitex.com)

Manteniendo una huella física similar a la del Arduino Mega y Arduino Due, el ShieldBuddy es compatible con muchos de los escudos de aplicación, pero se distingue por su uso del TC275 con sus tres núcleos independientes de 32 bits, cada uno funcionando a 200 MHz y cada uno con su propia FPU. Además, el ShieldBuddy tiene 4 megabytes (Mbytes) de memoria flash (8x la del Arduino Due y 16x la del Arduino Mega) y 500 Kbytes de RAM (5x la del Arduino Due y 62x la del Arduino Mega).

Una forma de verlo es que el núcleo del Arduino Mega solo maneja alrededor de dieciséis instrucciones de 8 bits por microsegundo (µs). En comparación, cada uno de los núcleos del TC275 tiene un tiempo de ciclo de 5 nanosegundos (ns), lo que significa que cada núcleo puede ejecutar generalmente alrededor de 150 a 200 instrucciones de 32 bits/µs. Como cada uno de los núcleos de procesador del ShieldBuddy tiene su propia FPU, la placa puede realizar cálculos en punto flotante con poca o ninguna degradación en el rendimiento.

Desarrollando con el ShieldBuddy

Cuando se trabaja con el ShieldBuddy, los desarrolladores de software profesionales pueden desear utilizar un IDE de Eclipse, mientras que los aficionados y fabricantes pueden preferir utilizar el conocido IDE de Arduino. Se admiten ambas opciones.

Los usuarios del Arduino estarán familiarizados con el hecho de que cada boceto (programa) debe tener dos funciones estándar: setup(), que se ejecuta una sola vez, y loop(), que se ejecuta una y otra vez. Los usuarios también pueden crear sus propias funciones.

Los tres núcleos del ShieldBuddy se llaman Núcleo 0, Núcleo 1 y Núcleo 2. En el caso del IDE de Arduino, la mayoría de los bocetos existentes pueden ser compilados para su uso en el ShieldBuddy sin modificaciones. Por defecto, las funciones setup() y loop(), junto con cualquier función creada por el usuario que llamen, serán compiladas para ejecutarse en el Core 0.

Al crear un nuevo programa, el usuario puede lograr el mismo efecto nombrando estas funciones setup0() y loop0(). El usuario también puede crear funciones setup1() y loop1(), las cuales, junto con cualquier función creada por el usuario que llame, se compilarán automáticamente para ejecutarse en el Núcleo 1. Del mismo modo, las funciones setup2() y loop2(), junto con cualquier función que llamen, serán compiladas automáticamente para ejecutarse en el Core 2.

Por defecto, cada núcleo se ejecuta de forma independiente, lo que significa que es posible tener tres programas totalmente separados ejecutándose en el ShieldBuddy simultáneamente. Dicho esto, los núcleos también pueden comunicarse entre ellos usando técnicas como la memoria compartida. Además, cada núcleo puede desencadenar suaves interrupciones en los otros núcleos.

Conclusión:

El concepto de código abierto Arduino ha demostrado ser tremendamente exitoso, y los consiguientes ecosistemas de hardware y software han crecido hasta abarcar cientos de escudos y miles de bibliotecas y aplicaciones.

Aunque las primeras tarjetas de desarrollo de Arduino, como la Arduino Uno de 8 bits y 16 MHz y la Arduino Mega eran algo limitadas, las implementaciones más recientes como la Arduino Due de 32 bits y 84 MHz son significativamente más potentes. Aún así, muchos usuarios requieren más espacio de programa (flash), más espacio de datos (SRAM) y más potencia de procesamiento que cualquier Arduino tradicional puede ofrecer.

Con la memoria flash de 4 Mbytes, la SRAM de 500 Kbytes y los tres núcleos de procesador independiente de 32 bits que funcionan a 200 MHz, cada uno con su propia FPU, el ShieldBuddy lleva el concepto de Arduino a un nivel completamente nuevo, haciéndolo de interés tanto para los aficionados al bricolaje extremo como para los ingenieros profesionales.

Lectura recomendada:

  1. Teaching Electronics to Absolute Beginners (Enseñar electrónica a principiantes absolutos)
  2. Quickly and Easily Apply FPGAs with the Arduino MKR Vidor 4000 (Aplicar rápidamente y fácilmente FPGA con el Arduino MKR Vidor 4000)
  3. Join the Maker World with an Easy-to-Use Arduino Starter Kit (Únase al mundo de los creadores con un kit de inicio de Arduino fácil de usar)
DigiKey logo

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.

Información sobre el autor

Image of Max Maxfield

Clive "Max" Maxfield

Clive "Max" Maxfield received his BSc in Control Engineering in 1980 from Sheffield Hallam University, England and began his career as a designer of central processing units (CPUs) for mainframe computers. Over the years, Max has designed everything from silicon chips to circuit boards and from brainwave amplifiers to steampunk Prognostication Engines (don't ask). He has also been at the forefront of Electronic Design Automation (EDA) for more than 30 years.

Max is the author and/or co-author of a number of books, including Designus Maximus Unleashed (banned in Alabama), Bebop to the Boolean Boogie (An Unconventional Guide to Electronics), EDA: Where Electronics Begins, FPGAs: Instant Access, and How Computers Do Math. Check out his “Max’s Cool Beans” blog.

Información sobre la editorial

Editores de DigiKey de América del Norte