XIAO ESP32C6 と (Embedded) Swift
この文書は AI によって翻訳されています。内容に不正確な点や改善すべき点がございましたら、文書下部のコメント欄または以下の Issue ページにてご報告ください。
https://github.com/Seeed-Studio/wiki-documents/issues
Seeed Studio XIAO-C6 と Embedded Swift のガイド
はじめに
Seeed Studio XIAO ESP32C6 は、ESP32-C6 SoC を基盤とした強力で多用途な開発ボードで、デュアル 32 ビット RISC-V プロセッサを搭載しています。高性能プロセッサは最大 160 MHz で動作し、低消費電力プロセッサは最大 20 MHz で動作します。512KB SRAM と 4MB フラッシュを備えた 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 を発表しました。これは、組み込みシステムや IoT の世界に Swift をもたらすことを目的としたオープンソースプロジェクトです。Embedded Swift は、オペレーティングシステムがなく、利用可能なリソースが最小限のマイクロコントローラ上で Swift を使用できるようにします。現在、公式の swift-embedded-examples は、STM32、Raspberry Pi Pico、Nordic Semiconductor、さらには RISC-V ESP32 (ESP32C6) のハードウェアプラットフォームをサポートしています。

Embedded Swift は以下のような利点を提供します:
- パフォーマンスと使いやすさ: C/C++ レベルのパフォーマンスを提供しながら、Swift のユーザーフレンドリーな構文と機能を維持します (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 のインストール:
- Linux と macOS ページに従って ESP-IDF をインストールしてください。
- 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
# 必要なパッケージを更新およびインストール
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
# ESP-IDF リポジトリをクローン
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
# ESP-IDF のインストールスクリプトを実行
cd ~/esp-idf && ./install.sh
# ESP-IDF 環境のエイリアスを設定
echo 'alias get_idf=". ~/esp-idf/export.sh"' >> ~/.bashrc
source ~/.bashrc
echo "インストールが完了しました。'get_idf' を使用して ESP-IDF 環境を設定してください。"
Swift 6.0 のインストール
以下のスクリプトを直接実行して Swift 6.0 をインストールできます。
#!/bin/bash
# Swift 6.0 スナップショットをダウンロード
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
# アーカイブを展開
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
# PATH を更新
echo 'export PATH=$HOME/swift-6.0/usr/bin:$PATH' >> ~/.bashrc
source ~/.bashrc
# インストールを確認
swift --version
echo "Swift 6.0 のインストールが完了しました。"
Swiftで初めてのBlinkプログラムを実行する
ステップ 1. サンプルを取得する
get_idf #idf環境を取得
cd ~ && git clone https://github.com/apple/swift-embedded-examples.git #GitHubリポジトリを取得
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() // ブール値を切り替える
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 ...
のようになります。この調整で問題が解決するはずです。
ファームウェアがXIAO C6に書き込まれる準備が整い、Project build complete.
というプロンプトが表示されます。
ステップ 3. ファームウェアを書き込む
WSL2を使用する場合はusbipdが必要です
WSL2を使用している場合は、usbipdをインストールする必要があります。
インストールするには、Windowsパッケージマネージャーを使用して以下のコマンドを実行します:
winget install usbipd
インストール後、USBデバイスを共有するには以下を使用します:
usbipd list #BUSIDを確認
usbipd bind -b '<BUSID>'
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文やログを表示する。
デモンストレーション
参考
リソース
- 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
技術サポートと製品に関する議論
弊社製品をお選びいただきありがとうございます!製品の使用体験がスムーズになるよう、さまざまなサポートを提供しています。異なる好みやニーズに対応するため、複数のコミュニケーションチャネルをご用意しています。