Skip to main content

Seeed Studio XIAO-C6 嵌入式 Swift 指南

pir

介绍

Seeed Studio XIAO ESP32C6 是一款功能强大且用途广泛的开发板,基于 ESP32-C6 SoC 构建,配备双核 32 位 RISC-V 处理器。高性能处理器运行频率高达 160 MHz,而低功耗处理器运行频率高达 20 MHz。XIAO ESP32C6 拥有 512KB SRAM 和 4MB Flash,提供了充足的编程空间,使其成为各种物联网应用的理想选择。该开发板在无线连接方面表现出色,支持 2.4 GHz Wi-Fi 6、Bluetooth® 5.3、Zigbee 和 Thread (802.15.4),并且原生支持 Matter,这对智能家居互操作性至关重要。

Seeed Studio XIAO ESP32C6

Swift 是由苹果公司开发的一种强大且直观的编程语言,用于开发 iOS、macOS、watchOS、tvOS 及其他平台的软件。在 WWDC2024 上,苹果宣布了 Embedded Swift,这是一个开源项目,旨在将 Swift 带入嵌入式系统和物联网世界。它使得在没有操作系统且资源极其有限的微控制器上使用 Swift 成为可能。目前,官方的 swift-embedded-examples 支持 STM32、Raspberry Pi Pico、Nordic Semiconductor,甚至 RISC-V ESP32(ESP32C6)等硬件平台。

Vision of Embedded Swfit
Swift 语言

Embedded Swift 提供了几个优势:

  • 性能和易用性:它提供 C/C++ 级别的性能,同时保持 Swift 用户友好的语法和特性(Swift Forums)。
  • 库和框架集成:Swift 能够直接与 C/C++ 库链接,允许开发者无缝利用现有框架(GitHub)。
  • 开发者熟悉度:已经熟练掌握 Swift 的开发者可以快速采用 Embedded Swift 进行项目开发,利用熟悉的 API 和工具(Swift.org)。
本指南的目标

在本页面中,我们将涵盖以下内容:

  • 如何设置必要的开发环境。
  • 运行基于 GPIO 的闪烁示例。

先决条件

要在 Seeed Studio XIAO-C6 上开始使用 Embedded Swift,您需要以下技能和设置:

  • Seeed Studio XIAO-C6:本指南的核心硬件。
  • USB-C 数据线:用于将 XIAO-C6 连接到您的计算机。
  • 一台计算机:运行 LinuxmacOS 或 Windows(使用 WSL2)。
  • ESP-IDF:开发 ESP32-C6 需要版本 5.2(推荐)。您可以从 Espressif 网站下载并安装。
  • Swift 工具链:确保您的计算机上安装了 Swift 6.0。可以从官方 Swift 网站或通过操作系统的包管理器获取。
安装指南

ESP-IDF 安装:

Swift 工具链安装:

如果您偏好 docker 解决方案,请参考 apple/swift-matter-examples/ 中的 Dockerfile

在继续之前,请确保您具备所有必要的先决条件,以便顺利进行设置和开发过程。

注意

在本页面中,我们将在 Ubuntu 22.04 Jammy Linux(WSL2)上进行 Embedded Swift 的设置和使用。

安装 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."

Install Swift 6.0

you could directly running this script to have swift 6.0 to be installed.

#!/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."

Step 1. Get the example

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

步骤 2. 构建示例

由于用户 LED 连接到 GPIO15,您需要修改代码为 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)))
}
}

Then you could build the firmware:

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

如果您遇到 /bin/sh: 1: -target: not found 问题,您可以通过编辑位于 build 文件夹中的 build.ninja 文件来解决。

找到关键字 -target 并在其前面添加 swiftc 关键字,使其显示为 swiftc -target ...。这个调整应该有助于解决该问题。

现在我们可以将固件烧录到我们的 XIAO C6 中,一旦您收到 Project build complete. 提示。

步骤 3. 烧录固件

如果使用 WSL2 需要 usbipd

如果您使用 WSL2,您需要安装 usbipd

要安装,请使用 Windows 包管理器执行以下命令:

winget install usbipd

After installation, share the USB device using:

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

To attach the device from within WSL2:

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

To see which port is shared:

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

假设您检测到了 ttyACM0,命令将是:

idf.py -p /dev/ttyACM0 flash monitor

此命令将:

  1. 将固件刷写到连接至 ttyACM0 的设备。
  2. 开始监控来自设备的串行输出,显示任何打印语句或日志。

演示

参考资料

资源

技术支持与产品讨论

感谢您选择我们的产品!我们在这里为您提供不同的支持,以确保您使用我们产品的体验尽可能顺畅。我们提供多种沟通渠道,以满足不同的偏好和需求。

Loading Comments...