Pular para o conteúdo principal

Guia de Swift Embarcado com Seeed Studio XIAO-C6

pir

Introdução

A Seeed Studio XIAO ESP32C6 é uma placa de desenvolvimento poderosa e versátil, construída em torno do SoC ESP32-C6, com dois processadores RISC-V de 32 bits. O processador de alto desempenho opera a até 160 MHz, enquanto o processador de baixo consumo funciona a até 20 MHz. Com 512KB de SRAM e 4MB de Flash, a XIAO ESP32C6 oferece um espaço de programação significativo, tornando-a ideal para diversas aplicações de IoT. Esta placa se destaca em conectividade sem fio, oferecendo suporte a Wi‑Fi 6 de 2,4 GHz, Bluetooth® 5.3, Zigbee e Thread (802.15.4), e é nativamente compatível com Matter, o que é crucial para interoperabilidade em casas inteligentes.

Seeed Studio XIAO ESP32C6

Swift é uma linguagem de programação poderosa e intuitiva desenvolvida pela Apple Inc. para criar software para iOS, macOS, watchOS, tvOS e além. Na WWDC2024, a Apple anunciou o Embedded Swift, um projeto de código aberto que busca levar Swift para o mundo de sistemas embarcados e IoT. Ele permite usar Swift em microcontroladores sem sistema operacional e com recursos mínimos disponíveis. Atualmente, o repositório oficial swift-embedded-examples oferece suporte a plataformas de hardware STM32, Raspberry Pi Pico, Nordic Semiconductor e até mesmo RISC-V ESP32 (ESP32C6).

Vision of Embedded Swfit
Linguagem Swift

Swift Embarcado oferece várias vantagens:

  • Desempenho e Facilidade de Uso: Ele oferece desempenho em nível de C/C++ enquanto mantém a sintaxe e os recursos fáceis de usar do Swift (Swift Forums).
  • Integração com Bibliotecas e Frameworks: A capacidade do Swift de vincular diretamente a bibliotecas C/C++ permite que desenvolvedores utilizem frameworks existentes de forma transparente (GitHub).
  • Familiaridade para Desenvolvedores: Desenvolvedores já proficientes em Swift podem adotar rapidamente o Swift Embarcado em seus projetos, aproveitando APIs e ferramentas familiares (Swift.org).
Objetivos deste Guia

Nesta página, vamos abordar o seguinte:

  • Como configurar o ambiente de desenvolvimento necessário.
  • Executar um exemplo de pisca‑pisca baseado em GPIO.

Pré-requisitos

Para começar com Swift Embarcado na Seeed Studio XIAO-C6, você vai precisar das seguintes habilidades e configurações:

  • Seeed Studio XIAO-C6: O hardware principal para este guia.
  • Cabo USB-C: Para conectar a XIAO-C6 ao seu computador.
  • Um computador: executando Linux, macOS ou Windows (usando WSL2).
  • ESP-IDF: A versão 5.2 (recomendada) é necessária para desenvolver com ESP32-C6. Você pode baixá-la e instalá-la a partir do site da Espressif.
  • Swift Toolchain: Certifique-se de que o Swift 6.0 esteja instalado em seu computador. Ele pode ser obtido no site oficial do Swift ou por meio do gerenciador de pacotes do seu sistema operacional.
Guia de Instalação

Instalação do ESP-IDF:

Instalação da Swift Toolchain:

  • Instale a toolchain Swift release/6.0 a partir do site oficial.

Se você preferir uma solução com Docker, consulte o Dockerfile do repositório apple/swift-matter-examples/

Antes de prosseguir, certifique-se de ter todos os pré-requisitos necessários para uma configuração e um processo de desenvolvimento tranquilos.

atenção

Nesta página, vamos passar pela configuração e uso do Swift Embarcado no 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

você pode simplesmente executar este script para instalar o 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."

Etapa 1. Obter o exemplo

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

Etapa 2. Compilar o exemplo

Como o LED de usuário está conectado ao GPIO15, você precisará modificar o código para 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)))
}
}

Em seguida, você pode compilar o firmware:

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

Se você encontrar o problema /bin/sh: 1: -target: not found, é possível resolvê-lo editando o arquivo build.ninja localizado na pasta de compilação.

Encontre a palavra‑chave -target e adicione a palavra‑chave swiftc antes dela, de forma que fique swiftc -target .... Esse ajuste deve ajudar a resolver o problema.

Agora podemos gravar o firmware no nosso XIAO C6, assim que você receber o aviso Project build complete.

Etapa 3. Gravar o firmware

usbipd é necessário se estiver usando WSL2

Se você estiver trabalhando com WSL2, precisará ter o usbipd instalado.

Para instalar, use o Windows Package Manager com o comando:

winget install usbipd

Após a instalação, compartilhe o dispositivo USB usando:

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

Para anexar o dispositivo a partir do WSL2:

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

Para ver qual porta está compartilhada:

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

Pressupondo que você tenha ttyACM0 detectado, o comando será:

idf.py -p /dev/ttyACM0 flash monitor

Este comando irá:

  1. Gravar o firmware no dispositivo conectado a ttyACM0.
  2. Iniciar o monitoramento da saída serial do dispositivo, exibindo quaisquer instruções de impressão ou logs.

Demonstração

Referência

Recursos

Suporte Técnico & Discussão de Produto

Obrigado por escolher nossos produtos! Estamos aqui para oferecer diferentes tipos de suporte para garantir que sua experiência com nossos produtos seja a mais tranquila possível. Oferecemos vários canais de comunicação para atender a diferentes preferências e necessidades.

Loading Comments...