Maker Kit for SwiftIO de Madmachine

Autor: Oscar Gonzalez

Maker Kit for SwiftIO de Madmachine

Tiempo de lectura: 10 minutos

Kit de iniciación creado por Madmachine para programar microcontroladores con el lenguaje Swift de Apple

Maker Kit for SwiftIO de Madmachine

  • 1

0 Principiante

Qué es SwiftIO?

Para aquellas personas que no están familiarizadas con Swift, lo consideran un lenguaje de programación de uso exclusivo de Apple. Pero sabemos que eso no es el todo correcto. Swift es un lenguaje de programación moderno, seguro, eficiente y, sobre todo, multiplataforma. Por eso puede ser una muy buena opción para hacer que este lenguaje funcione en el mundo de los microcontroladores. 

Antes de comenzar, puedes echar un vistazo a la definición de Clang aquí, se describe como una interfaz de familia de lenguaje C para LLVM. Del mismo modo, Swift es una interfaz de lenguaje Swift para LLVM, ¿suena extraño? Un poco.

Arquitectura del compilador LLVM Frontend-Backend (Source: Swift, C, LLVM Compiler Optimization)

Arquitectura del compilador LLVM Frontend-Backend (Source: Swift, C, LLVM Compiler Optimization)

Swift aprovecha todas las infraestructuras de LLVM, por lo que no necesita implementar varios backends de arquitectura. Pero aún queda mucho trabajo por hacer. El equipo oficial de Swift se centra principalmente en arquitecturas x86-64 y ARM Cortex-A. Gracias a la buena infraestructura de LLVM, lo que se hizo fue combinar el backend ARM Cortex-M existente con el código fuente del compilador Swift. Es tan natural que no solo Madmachine pensó de esta manera. Otros proyectos comenzaron con la misma base:

Muchos están probando diferentes formas de explorar nuevas posibilidades en este campo completamente nuevo y comparten la misma curiosidad y pasión. A diferencia de swift-project1 y swift-embedded que se ejecutan completamente en servidores físicos o "bare-metal", SwiftIO usa Zephyr RTOS para abstraer el hardware de bajo nivel. De esta manera, no necesitamas programar los controladores de esos dispositivos en chip, como I2C, UART, SPI, etc. Y sería muy conveniente portar esto a otros microcontroladores. La estructura del framework es la siguiente:

Estructura del Framework de SwiftIO

Estructura del Framework de SwiftIO

Qué pasa cuando cargamos un programa?

En su esencia, el programa de salida del compilador será swiftio.bin, que será cargado y ejecutado en la placa. Gracias a un bootloader que ya viene preinstalado, se ejecutan una serie de procesos que se reflejan en éste gráfico de bloques:

Flujo de ejecución de un programa en SwiftIO

Flujo de ejecución de un programa en SwiftIO

Cual es la diferencia entre SwiftIO y otras plataformas?

Comparativa entre SwiftIO y otras plataformas

Comparativa entre SwiftIO y otras plataformas

Arduino

Arduino dio origen e inició de forma fácil el acceso a la programación de microcontroladores y obtuvo un gran éxito. Además, muchos proyectos de código abierto basados en Arduino también tuvieron bastante éxito. Arduino es el intento más exitoso de simplificar la API del hardware. Su sistema de programación utilizar C / C , sin embargo, abstrae todos los dispositivos en chip y ofrece una API fácil de usar para los desarrolladores. A través de una larga evolución y acumulación, ahora puedes encontrar fácilmente muchos ejemplos y tutoriales de Arduino para diferentes módulos de hardware. Hace que el desarrollo de hardware sea tan simple y divertido como jugar con LEGO.

MicroPython

Python se ha vuelto muy popular en los últimos años. Comparado con C / C , es muy fácil de aprender. Como lenguaje interpretado, los usuarios pueden ver los resultados inmediatamente sin necesidad de compilar el código. Para realizar MicroPython, Damien George creó un intérprete eficiente usando C. Esto hace que se ejecute en microcontroladores con recursos extremadamente limitados. De esta manera, los desarrolladores pueden usar Python en diferentes microcontrolador. 

Sin embargo, es necesario el uso de un intérprete de Python. Esto hace que las placas deban disponer de microcontroladores potentes de tipo Cortex para poder ejecutarlo y puede no ser tan eficiente.

Raspberry Pi

Raspberry Pi, de hecho, es totalmente diferente ya que en realidad, es una pequeño ordenador bien equipado en un pequeño tamaño. Ejecuta un sistema operativo Linux completo, puedes conectar un teclado, un ratón, discos duros y pantallas. La única similitud con los microcontroladores puede ser algunos dispositivos e interfaces comunes como los pines GPIO, I2C, SPI, que también pueden ser controlados por Swift (versión Linux). 

Raspberry Pi está construida sobre hardware y software complejos. Diseñar una placa que pueda ejecutar Linux es mucho más difícil que una placa de microcontrolador, además, la placa debe adaptarse al sistema Linux, que es aún más complicado. Sería sin embargo posible hacer funcionar Swift sobre Raspberry Pi.

Características de SwiftIO

SwiftIO pinout

SwiftIO pinout

  • Microcontrolador RT1052 ARM cortex M7 core a 600 MHz
  • Pulsador de Reset: Reinicia la ejecución del programa
  • Pulsador Download: para cargar un nuevo programa
  • Pines de alimentación: varios pines de alimentación (3.3V)
  • Puertos de comunicación: Diferentes conexiones como I2C, SPI, UART y CAN
  • 46 pines digitales: salida de 3.3V
  • 12 entradas analógicas: puede medir voltajes de 0 a 3.3V
  • 14 pines PWM: para controlar motores, LEDs etc