Skip to main content

Guía de Embedded Swift con Seeed Studio XIAO-C6

pir

Introducción

El Seeed Studio XIAO ESP32C6 es una placa de desarrollo potente y versátil construida alrededor del SoC ESP32-C6, que cuenta con procesadores duales RISC-V de 32 bits. El procesador de alto rendimiento opera hasta 160 MHz, mientras que el procesador de bajo consumo funciona hasta 20 MHz. Con 512KB SRAM y 4MB Flash, el XIAO ESP32C6 ofrece un espacio de programación significativo, haciéndolo ideal para diversas aplicaciones IoT. Esta placa sobresale en conectividad inalámbrica, soportando Wi-Fi 6 de 2.4 GHz, Bluetooth® 5.3, Zigbee, y Thread (802.15.4), y es nativo de Matter, lo cual es crucial para la interoperabilidad de hogares inteligentes.

Seeed Studio XIAO ESP32C6

Swift es un lenguaje de programación poderoso e intuitivo desarrollado por Apple Inc. para desarrollar software para iOS, macOS, watchOS, tvOS y más. En WWDC2024, Apple anunció Embedded Swift, un proyecto de código abierto que tiene como objetivo llevar Swift al mundo de los sistemas embebidos e IoT. Permite usar Swift en microcontroladores sin sistema operativo y con recursos mínimos disponibles. Actualmente, los swift-embedded-examples oficiales soportan plataformas de hardware de STM32, Raspberry Pi Pico, Nordic Semiconductor, e incluso RISC-V ESP32 (ESP32C6).

Vision of Embedded Swfit
Lenguaje Swift

Embedded Swift proporciona varias ventajas:

  • Rendimiento y Facilidad de Uso: Ofrece rendimiento a nivel de C/C++ mientras mantiene la sintaxis y características amigables de Swift (Swift Forums).
  • Integración de Bibliotecas y Frameworks: La capacidad de Swift para enlazarse directamente con bibliotecas de C/C++ permite a los desarrolladores utilizar frameworks existentes sin problemas (GitHub).
  • Familiaridad del Desarrollador: Los desarrolladores ya competentes en Swift pueden adoptar rápidamente Embedded Swift para sus proyectos, aprovechando APIs y herramientas familiares (Swift.org).
Objetivos de Esta Guía

En esta página, vamos a cubrir lo siguiente:

  • Cómo configurar el entorno de desarrollo necesario.
  • Ejecutar un ejemplo de Blink basado en GPIO.

Prerrequisitos

Para comenzar con Embedded Swift en el Seeed Studio XIAO-C6, necesitarás las siguientes habilidades y configuración:

  • Seeed Studio XIAO-C6: El hardware principal para esta guía.
  • Cable USB-C: Para conectar el XIAO-C6 a tu computadora.
  • Una computadora: que ejecute Linux, macOS, o Windows (usando WSL2).
  • ESP-IDF: Se requiere la versión 5.2(recomendada) para desarrollar con ESP32-C6. Puedes descargarla e instalarla desde el sitio web de Espressif.
  • Swift Toolchain: Asegúrate de que Swift 6.0 esté instalado en tu computadora. Esto se puede obtener del sitio web oficial de Swift o a través del gestor de paquetes de tu sistema operativo.
Guía de Instalación

Instalación de ESP-IDF:

Instalación de Swift Toolchain:

  • Instala el toolchain de Swift release/6.0 desde el sitio oficial.

Si prefieres una solución con docker, por favor consulta el Dockerfile de apple/swift-matter-examples/

Antes de proceder, asegúrate de tener todos los prerrequisitos necesarios para un proceso de configuración y desarrollo sin problemas.

atención

En esta página, repasaremos la configuración y uso de Embedded Swift en Ubuntu 22.04 Jammy Linux (WSL2).

Instalar ESP-IDF

#!/bin/bash
# Update and install required packages
sudo apt-get update
sudo apt-get install -y git wget flex bison gperf python3 python3-pip python3-venv python3.10-venv cmake ninja-build ccache libffi-dev libssl-dev dfu-util libusb-1.0-0

# Clone the ESP-IDF repository
cd ~
git clone --recursive https://github.com/espressif/esp-idf.git --jobs 10
cd esp-idf
git checkout v5.2.1; git submodule update --init --recursive

# Run the install script for ESP-IDF
cd ~/esp-idf && ./install.sh

# Set up alias for ESP-IDF environment
echo 'alias get_idf=". ~/esp-idf/export.sh"' >> ~/.bashrc
source ~/.bashrc

echo "Installation complete. Use 'get_idf' to set up the ESP-IDF environment."

Instalar Swift 6.0

puedes ejecutar directamente este script para instalar swift 6.0.

#!/bin/bash
# Download the Swift 6.0 Snapshot
wget https://download.swift.org/swift-6.0-branch/ubuntu2204/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-03-a/swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-03-a-ubuntu22.04.tar.gz

# Extract the Tarball
tar -xvzf swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-03-a-ubuntu22.04.tar.gz

sudo mv swift-6.0-DEVELOPMENT-SNAPSHOT-2024-07-03-a-ubuntu22.04 $HOME/swift-6.0

# Update PATH
echo 'export PATH=$HOME/swift-6.0/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

# Verify Installation
swift --version

echo "Swift 6.0 installation complete."

Paso 1. Obtén el ejemplo

get_idf #get idf enviorment
cd ~ && git clone https://github.com/apple/swift-embedded-examples.git #get GitHub repo
cd ~/swift-embedded-examples/esp32-led-blink-sdk

Paso 2. Construir el ejemplo

Como el LED del usuario está conectado al GPIO15, necesitarás modificar el código a let led = Led(gpioPin: 15):

@_cdecl("app_main")
func app_main() {
print("Hello from Swift on ESP32-C6!")

var ledValue: Bool = false
let blinkDelayMs: UInt32 = 500
let led = Led(gpioPin: 15)

while true {
led.setLed(value: ledValue)
ledValue.toggle() // Toggle the boolean value
vTaskDelay(blinkDelayMs / (1000 / UInt32(configTICK_RATE_HZ)))
}
}

Luego podrías compilar el firmware:

idf.py set-target esp32c6
idf.py build
¿problema?

Si encuentras el problema /bin/sh: 1: -target: not found, puedes resolverlo editando el archivo build.ninja ubicado en la carpeta build.

Busca la palabra clave -target y añade la palabra clave swiftc antes de ella, para que se lea swiftc -target .... Este ajuste debería ayudar a resolver el problema.

Ahora podemos tener el firmware en nuestro XIAO C6, una vez que obtengas el mensaje Project build complete.

Paso 3. Flashear el firmware

usbipd es necesario si usas WSL2

Si estás trabajando con WSL2, necesitarás tener usbipd instalado.

Para instalar, usa el Administrador de Paquetes de Windows con el comando:

winget install usbipd

After installation, share the USB device using:

usbipd list #Check BUSID
usbipd bind -b '<BUSID>'

Para conectar el dispositivo desde WSL2:

usbipd attach --wsl --busid=<BUSID>

Para ver qué puerto está compartido:

dmesg | tail
# dmesg | tail -n 100 | sed -n 's/.*\(ttyACM[0-9]*\).*/\1/p'

Asumiendo que tienes ttyACM0 detectado, el comando sería:

idf.py -p /dev/ttyACM0 flash monitor

Este comando:

  1. Flashea el firmware al dispositivo conectado a ttyACM0.
  2. Inicia el monitoreo de la salida serie del dispositivo, mostrando cualquier declaración de impresión o registros.

Demostración

Referencia

Recursos

Soporte Técnico y Discusión de Productos

¡Gracias por elegir nuestros productos! Estamos aquí para brindarle diferentes tipos de soporte para asegurar que su experiencia con nuestros productos sea lo más fluida posible. Ofrecemos varios canales de comunicación para satisfacer diferentes preferencias y necesidades.

Loading Comments...