Seeed Studio XIAO-C6 での Embedded Swift ガイド
はじめに
Seeed Studio XIAO ESP32C6 は、ESP32-C6 SoC を搭載した強力で多用途な開発ボードで、デュアル 32 ビット RISC-V プロセッサを特徴としています。高性能プロセッサは最大 160 MHz で動作し、低消費電力プロセッサは最大 20 MHz で動作します。512KB SRAM と 4MB Flash を搭載した XIAO ESP32C6 は、大きなプログラミング領域を提供し、様々な IoT アプリケーションに最適です。このボードは無線接続に優れており、2.4 GHz Wi-Fi 6、Bluetooth® 5.3、Zigbee、Thread (802.15.4) をサポートし、Matter ネイティブであるため、スマートホームの相互運用性において重要です。
Seeed Studio XIAO ESP32C6 |
---|
![]() |
Swift は、Apple Inc. によって開発された強力で直感的なプログラミング言語で、iOS、macOS、watchOS、tvOS、およびそれ以外のソフトウェア開発に使用されます。WWDC2024 で、Apple は Embedded Swift を発表しました。これは Swift を組み込みシステムと IoT の世界に持ち込むことを目的としたオープンソースプロジェクトです。オペレーティングシステムがなく、利用可能なリソースが最小限のマイクロコントローラーで Swift を使用できるようにします。現在、公式の swift-embedded-examples は STM32、Raspberry Pi Pico、Nordic Semiconductor、さらには RISC-V ESP32(ESP32C6)のハードウェアプラットフォームをサポートしています。

Embedded Swift にはいくつかの利点があります:
- パフォーマンスと使いやすさ: Swift の使いやすい構文と機能を維持しながら、C/C++ レベルのパフォーマンスを提供します(Swift Forums)。
- ライブラリとフレームワークの統合: Swift が C/C++ ライブラリと直接リンクする能力により、開発者は既存のフレームワークをシームレスに活用できます(GitHub)。
- 開発者の親しみやすさ: すでに Swift に習熟している開発者は、馴染みのある API とツールを活用して、Embedded Swift を自分のプロジェクトに迅速に採用できます(Swift.org)。
このページでは、以下の内容をカバーします:
- 必要な開発環境のセットアップ方法。
- GPIO ベースの Blink サンプルの実行。
前提条件
Seeed Studio XIAO-C6 で Embedded Swift を始めるには、以下のスキルとセットアップが必要です:
- Seeed Studio XIAO-C6: このガイドのコアハードウェア。
- USB-C ケーブル: XIAO-C6 をコンピューターに接続するため。
- コンピューター: Linux、macOS、または Windows(WSL2 を使用)を実行している。
- ESP-IDF: ESP32-C6 での開発にはバージョン 5.2(推奨)が必要です。Espressif ウェブサイトからダウンロードしてインストールできます。
- Swift Toolchain: コンピューターに Swift 6.0 がインストールされていることを確認してください。これは公式 Swift ウェブサイトまたはオペレーティングシステムのパッケージマネージャーから入手できます。
ESP-IDF インストール:
- ESP-IDF をインストールするには Linux and macOS ページに従ってください
- 詳細な手順については Espressif ESP-IDF を使用した XIAO での開発ガイド に従ってください。
Swift Toolchain インストール:
- 公式サイトから Swift
release/6.0
ツールチェーンをインストールしてください。
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."
Swift 6.0のインストール
このスクリプトを直接実行することで、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."
Run your first Blink program with Swift
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)))
}
}
その後、ファームウェアをビルドできます:
idf.py set-target esp32c6
idf.py build
/bin/sh: 1: -target: not found
の問題が発生した場合、ビルドフォルダにある build.ninja
ファイルを編集することで解決できます。
キーワード -target
を見つけて、その前に swiftc
キーワードを追加し、swiftc -target ...
となるようにしてください。この調整により問題が解決されるはずです。
Project build complete.
のプロンプトが表示されたら、XIAO C6にファームウェアを書き込むことができます。
Step 3. ファームウェアの書き込み
WSL2を使用する場合はusbipd が必要です
WSL2で作業している場合は、usbipd をインストールする必要があります。
インストールするには、Windows Package Manager を使用して以下のコマンドを実行してください:
winget install usbipd
インストール後、以下を使用してUSBデバイスを共有します:
usbipd list #Check BUSID
usbipd bind -b '<BUSID>'
To attach the device from within WSL2:
usbipd attach --wsl --busid=<BUSID>
どのポートが共有されているかを確認するには:
dmesg | tail
# dmesg | tail -n 100 | sed -n 's/.*\(ttyACM[0-9]*\).*/\1/p'
ttyACM0
が検出されたと仮定すると、コマンドは次のようになります:
idf.py -p /dev/ttyACM0 flash monitor
このコマンドは以下を実行します:
- ttyACM0に接続されたデバイスにファームウェアをフラッシュします。
- デバイスからのシリアル出力の監視を開始し、print文やログを表示します。
デモンストレーション
参考資料
- Embedded Swift Blog
- A Vision for Embedded Swift
- swift-embedded-examples
- esp32-led-blink-sdk - GitHub
リソース
- WWDC24: Go small with Embedded Swift - Apple YouTube
- Add support for Matter in your smart home app
- Embedde Swift - Apple Forum
- Use C, C++ and Objective C Libraries in a Swift Project - Cecilia Humlelu - YouTube
- Mixing Swift and C++
- awesome-embedded-swift
技術サポート & 製品ディスカッション
私たちの製品をお選びいただき、ありがとうございます!私たちは、お客様の製品体験が可能な限りスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャンネルを用意しています。