基于 Zephyr RTOS 的 Seeeduino XIAO 板级支持详解:硬件接口、系统时钟与 UF2 烧录实战
基于 Zephyr RTOS 的 Seeeduino XIAO 板级支持详解硬件接口、系统时钟与 UF2 烧录实战【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr导读Seeeduino XIAO 是一块仅 20 mm × 17.5 mm 的超小型 ARM 开发板本文以 Zephyr 仓库中该板卡的板级支持文档boards/seeed/seeeduino_xiao/doc/index.rst为主线结合其设备树.dts、引脚复用配置、Kconfig 默认配置与板级 CMake 脚本系统讲解 XIAO 在 Zephyr 下的硬件规格、六大外设接口SPI / I2C / 串口 / USB / DAC / GPIO的引脚分配、48 MHz 系统时钟的生成方式以及基于 BOSSA 兼容 UF2 引导程序的完整烧录与调试流程。读完本文你将能够独立完成 XIAO 上 Zephyr 应用的编译、烧录、串口观测与接口开发。Seeeduino XIAO 开发板外观板卡概览Seeeduino XIAO 由 Seeed Studio 出品是一块面向可穿戴、传感器节点与空间受限场景设计的极小板卡。在 Zephyr 中该板卡的标识符identifier为seeeduino_xiao定义于 boards/seeed/seeeduino_xiao/board.yml其 SoC 为samd21g18a属于 Atmel/Microchip SAMD21 系列。从 boards/seeed/seeeduino_xiao/seeeduino_xiao.yaml 可以看到 Zephyr 对该板卡的能力声明架构ARMCortex-M0Flash / RAM256 KiB / 32 KiB可用工具链zephyr与gnuarmemb官方支持的设备驱动类别dma、dac、gpio、hwinfo、i2c、spi、uart、usb_device、watchdogXIAO 兼容接口xiao_adc、xiao_gpio、xiao_i2c、xiao_serial、xiao_spi、xiao_dac对应下方的 XIAO 扩展连接器其中xiao_*系列接口通过 boards/seeed/seeeduino_xiao/seeed_xiao_connector.dtsi 中的seeed,xiao-gpio连接器节点对外暴露使得依赖XIAO 引脚语义的通用 Shield/扩展板可以在不同 XIAO 兼容板卡间复用。硬件规格板级文档列出的核心硬件特性如下项目规格处理器ATSAMD21G18AARM Cortex-M048 MHz存储256 KiB Flash、32 KiB RAM指示灯三个用户 LED一个电源/状态 LED RX/TX 串口指示 LEDUSB原生 USB 设备端口USB-C 接口尺寸20 mm × 17.5 mm引脚14 个引出引脚含电源与模拟/数字复用引脚在 seeeduino_xiao.dts 中三个 LED 被分别映射到porta的 17、18、19 号引脚且均为GPIO_ACTIVE_LOW低电平点亮并提供了led0/led1/led2别名以便示例程序直接使用leds { compatible gpio-leds; led: led_0 { gpios porta 17 GPIO_ACTIVE_LOW; label LED; }; rx_led: led_1 { gpios porta 18 GPIO_ACTIVE_LOW; label RX_LED; }; tx_led: led_2 { gpios porta 19 GPIO_ACTIVE_LOW; label TX_LED; }; }; aliases { led0 led; led1 rx_led; led2 tx_led; };系统时钟32 kHz 外部晶振 片上 PLLSAMD21 内部集成了可配置的 Generic ClockGCLK与 APB 时钟分配单元。XIAO 板级文档明确指出MCU 使用 32 kHz 外部晶振XOSC32K作为时钟源由片上 PLL 倍频产生 48 MHz 系统时钟内部 APB 与 GCLK 的初始化方式与上游 Arduino 库保持一致。这一配置在默认 defconfig 中得到印证见 seeeduino_xiao_defconfigCONFIG_SOC_ATMEL_SAMD_XOSC32Ky CONFIG_SOC_ATMEL_SAMD_XOSC32K_AS_MAINy同时设备树中将 CPU 时钟频率显式声明为 48 MHzseeeduino_xiao.dtscpu0 { clock-frequency 48000000; };这意味着在 XIAO 上编写应用时默认即获得 48 MHz 主频无需额外配置若你的设计需要对时钟树做定制例如改用内部 OSC 以省去晶振依赖需要修改上述 Kconfig 项与对应 SoC 时钟驱动配置。外设接口与引脚连接板级文档按 SERCOM 外设逐项说明了 XIAO 的接口分配。SAMD21 内部共有 6 个 SERCOM 外设每个 SERCOM 均可独立配置为 USART、SPI 或 I2C。XIAO 上启用了 SERCOM0/2/4 三个具体分配如下接口SERCOM引脚说明SPISERCOM0pin 9 (MISO)、pin 10 (MOSI)、pin 8 (SCK)连接 SPI 设备I2CSERCOM2pin 4 (SDA)、pin 5 (SCL)连接 I2C 传感器/设备串口Zephyr 控制台SERCOM4pin 7 (RX)、pin 6 (TX)默认 115200-8-N-1USB 设备原生 USB——与主机 PC 通信DAC片上 DACpin 010 位分辨率单通道SPISERCOM0设备树中 SERCOM0 被配置为atmel,sam0-spi模式seeeduino_xiao.dtssercom0 { status okay; compatible atmel,sam0-spi; dipo 1; dopo 1; ... pinctrl-0 sercom0_spi_default; pinctrl-names default; };对应引脚复用见 seeeduino_xiao-pinctrl.dtsisercom0_spi_default: sercom0_spi_default { group1 { pinmux PA5D_SERCOM0_PAD1, /* D9 MISO */ PA6D_SERCOM0_PAD2, /* D10 MOSI */ PA7D_SERCOM0_PAD3; /* D8 SCK */ }; };引脚编号与文档一致D9 对应 MISO、D10 对应 MOSI、D8 对应 SCK。I2CSERCOM2sercom2 { status okay; compatible atmel,sam0-i2c; clock-frequency I2C_BITRATE_FAST; ... };I2C 时钟频率配置为I2C_BITRATE_FAST400 kHz。引脚映射为 PA8/PA9D4SDA、D5SCLsercom2_i2c_default: sercom2_i2c_default { group1 { pinmux PA8D_SERCOM2_PAD0, /* D4 SDA */ PA9D_SERCOM2_PAD1; /* D5 SCL */ }; };串口SERCOM4Zephyr 控制台SERCOM4 承担 Zephyr console 与 shell 的角色设备树chosen节点指定chosen { zephyr,console sercom4; zephyr,shell-uart sercom4; ... };串口默认波特率 115200current-speed 115200引脚映射为 PB9D7RX、PB8D6TXsercom4_uart_default: sercom4_uart_default { group1 { pinmux PB9D_SERCOM4_PAD1, /* D7 RX */ PB8D_SERCOM4_PAD0; /* D6 TX */ }; };默认 defconfig 中已启用串口控制台与中断驱动模式CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENyUSB 设备端口SAMD21 原生 USB 控制器usb0在设备树中被启用并作为 Zephyr USB 设备控制器zephyr_udc0zephyr_udc0: usb0 { status okay; pinctrl-0 usb_dc_default; pinctrl-names default; };usb_dc_default: usb_dc_default { group1 { pinmux PA25G_USB_DP, /* USB D */ PA24G_USB_DM; /* USB D- */ }; };USB 设备端口可用于与主机 PC 通信典型用例是 Zephyr 的usb系列示例其中 usb-cdc-acm 示例会建立虚拟串口并回显字符——它也是板级文档明确推荐参考的示例。CONFIG_USB_CDC_ACM的启用还直接影响烧录体验见下文编程与调试。DACpin 0SAMD21 内置 10 位分辨率单通道 DACXIAO 上输出引脚为pin 0PA2dac0 { status okay; pinctrl-0 dac_default; pinctrl-names default; };dac_default: dac_default { group1 { pinmux PA2B_DAC_VOUT; }; };GPIO 与 XIAO 连接器除上述接口外XIAO 的 14 个引脚还通过 seeed_xiao_connector.dtsi 中的xiao_d连接器节点建立了 D0–D10 与 MCU GPIO 的映射XIAO 引脚MCU 引脚备注D0PA2兼 DAC 输出D1PA4兼 ADC 输入D2PA10兼 ADC 输入D3PA11兼 ADC 输入D4PA8兼 I2C SDAD5PA9兼 I2C SCLD6PB8兼 UART TXD7PB9兼 UART RXD8PA7兼 SPI SCKD9PA5兼 SPI MISOD10PA6兼 SPI MOSI该连接器同时为xiao_spi、xiao_i2c、xiao_serial、xiao_dac、xiao_adc提供了别名节点分别指向 SERCOM0、SERCOM2、SERCOM4、DAC0 与 ADC方便应用按XIAO 语义而非具体 MCU 外设来引用。Flash 分区与 UF2 引导seeeduino_xiao.dts 将 256 KiB Flash 划分为三个分区分区起始地址大小标签说明boot_partition0x000000008 KiBuf2只读UF2 引导程序所在区域code_partition0x00002000232 KiB256-8-16code应用代码分区chosen中的zephyr,code-partitionstorage_partition0x0003c00016 KiBstorage保留给应用可用于 FCB 或 LittleFS 等存储方案boot_partition: partition0 { compatible zephyr,mapped-partition; label uf2; reg 0x00000000 DT_SIZE_K(8); read-only; }; code_partition: partition2000 { compatible zephyr,mapped-partition; label code; reg 0x2000 DT_SIZE_K(256-8-16); read-only; }; storage_partition: partition3c000 { compatible zephyr,mapped-partition; label storage; reg 0x0003c000 DT_SIZE_K(16); };这一布局与 XIAO 出厂自带的 BOSSA 兼容 UF2 引导程序严格对应引导程序占据头部 8 KiB应用固件从 0x2000 开始存放。默认 defconfig 也启用了 UF2 与 BOSSA 相关选项CONFIG_BUILD_OUTPUT_HEXy CONFIG_BUILD_OUTPUT_UF2y CONFIG_BOOTLOADER_BOSSAy CONFIG_BOOTLOADER_BOSSA_ADAFRUIT_UF2y即构建 Zephyr 应用时除了生成标准的.hex固件外还会同时生成.uf2格式镜像可直接拖入 XIAO 的 UF2 烧录盘。编程与调试XIAO 出厂自带BOSSA 兼容的 UF2 引导程序。板级支持脚本 board.cmake 注册了两个烧录 runnerinclude(${ZEPHYR_BASE}/boards/common/bossac.board.cmake) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)bossac通过bossac工具走 BOSSA 协议烧录配合 UF2 引导的批量设备openocd通过 OpenOCD 走 SWD 调试接口烧录配合 support/openocd.cfg 配置文件需要外接调试器两种方式均可通过west flash调用。进入引导程序模式XIAO 的 UF2 引导程序有两种进入方式手动方式快速短接RST 与 GND 焊盘两次。此时 XIAO 会以 UF2 大容量存储设备烧录盘形式出现在主机上将.uf2文件拖入即完成烧录。自动方式如果固件启用了CONFIG_USB_CDC_ACM那么执行west flash时Zephyr 会通过 USB CDC ACM 虚拟串口发送 BOSSA 命令引导程序将自动进入无需手动短接。注意自动方式依赖当前固件已启用CONFIG_USB_CDC_ACM若固件未启用该配置则需使用手动短接 RST/GND 两次的方式进入引导模式。实战编译并烧录 hello_world以下完整流程对应板级文档中的 Flashing 章节可直接在终端中复现。1. 构建 hello_world在 Zephyr 环境中执行板卡目标为seeeduino_xiao源文件位于 samples/hello_world$ west build -b seeeduino_xiao samples/hello_world构建完成后输出目录build/zephyr/下会同时生成zephyr.hex与zephyr.uf2由CONFIG_BUILD_OUTPUT_UF2y保证。2. 连接硬件使用 USB 线将 XIAO 连接到主机供电 烧录通道准备一个3.3 V USB 转串口适配器按上文串口SERCOM4一节连接适配器 TX → XIAO pin 7 (RX)适配器 RX → XIAO pin 6 (TX)共地。3. 打开串口终端在 Linux 下XIAO 的串口通常枚举为/dev/ttyUSB0。使用 minicom 监听$ minicom -D /dev/ttyUSB0 -o-o选项告诉 minicom 不要发送调制解调器初始化字符串。连接参数必须与 SERCOM4 的配置一致seeeduino_xiao.dts 中current-speed 115200参数值速度Speed115200数据位Data8校验ParityNone停止位Stop bits14. 进入引导模式并烧录快速短接 RST 与 GND 焊盘两次进入 UF2 引导模式然后执行$ west flash -b seeeduino_xiao若此前固件启用了CONFIG_USB_CDC_ACM则此命令会自动触发引导程序进入无需手动短接。5. 验证输出烧录完成后串口终端应打印Hello World! seeeduino_xiao这同时验证了编译链路、UF2/BOSSA 烧录链路、SERCOM4 串口驱动与控制台输出均工作正常。参考与进一步探索板级支持文档boards/seeed/seeeduino_xiao/doc/index.rst板卡设备树seeeduino_xiao.dts引脚复用配置seeeduino_xiao-pinctrl.dtsiXIAO 连接器映射seeed_xiao_connector.dtsi默认 Kconfig 配置seeeduino_xiao_defconfig烧录 runner 声明board.cmake官方示例hello_world 位于 samples/hello_worldUSB CDC ACM 虚拟串口示例位于 samples/subsys/usb/cdc-acm若需了解 XIAO 的详细引脚功能定义、完整引脚图与原理图可参阅 Seeed 官方 Seeeduino XIAO Wiki外部资料板级文档 References 一节已给出链接。在 Zephyr 侧以上仓库文件已足以支撑你完成从编译到烧录、再到各 SERCOM 接口开发的完整闭环。【免费下载链接】zephyrPrimary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.项目地址: https://gitcode.com/GitHub_Trending/ze/zephyr创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

软启动器维修实战项目从零搭建解析高频面试题

软启动器维修实战项目从零搭建解析高频面试题

软启动器维修实战项目从零搭建解析高频面试题 你刚把从网上抄来的软启动器控制逻辑代码丢进PLC或单片机环境,编译通过但现场电机直接炸机,或者参数一改就报错,这种复制来的代码跑不通不知道怎么调的情况,在工业现场和面试中太常见了。很多转行做电气自…

2026/9/22 19:02:07 阅读更多 →
3步搞定Python定义全局变量避坑指南

3步搞定Python定义全局变量避坑指南

3步搞定Python定义全局变量避坑指南 版本升级后 API 全变了,代码跑一半直接报错 UnboundLocalError ,这种绝望感谁懂?老手都懂,新手还在懵。今天这篇定义全局变量的避坑指南,就是专门给被 Python 3.8 或…

2026/9/22 19:01:06 阅读更多 →
守信是一项财宝:对比选型最佳实践与证书补办实战指南

守信是一项财宝:对比选型最佳实践与证书补办实战指南

守信是一项财宝:对比选型最佳实践与证书补办实战指南 看了一堆教程还是不会写项目?这种挫败感我太熟悉了。你背了八股文,刷了算法题,甚至把官方 最佳实践…

2026/9/22 19:01:06 阅读更多 →

最新新闻

正能量的句子经典从入门到实战

正能量的句子经典从入门到实战

5个技巧搞定正能量句子经典,告别文档焦虑 官方文档动辄几百页,翻了三遍还是不知道哪句能用?别慌,这不仅是你的问题,更是大多数内容创作者的痛点。很多教程只给定义,不给场景,导致你收藏了一堆“正能量的句子经典”,却在写文案时脑子一片空白。今天不…

2026/9/22 19:38:38 阅读更多 →
如何做好招商工作速查手册

如何做好招商工作速查手册

做好招商工作5个关键点:从原理到性能优化实战 面试被问原理答不上来?别慌,这不仅是理论盲区,更是实战脱节。很多开发者在性能优化面前卡壳,根源在于没把“招商”这类业务逻辑和底层执行效率打通。招商不是喊口号,而是像代码一样,要有明确的入口、清晰…

2026/9/22 19:38:38 阅读更多 →
3年老兵教你一文搞懂dnf影舞者用什么武器避坑指南

3年老兵教你一文搞懂dnf影舞者用什么武器避坑指南

3年老兵教你一文搞懂dnf影舞者用什么武器避坑指南 别划走。如果你也是那种看了一堆教程,代码复制粘贴能跑,但换个场景就懵,甚至不知道从哪下手写项目的老哥,这篇就是救你的。我们不再讲那些虚头巴脑的大道理,直接上干货。…

2026/9/22 19:38:38 阅读更多 →
3步解决你没有好结果:源码解析避坑指南

3步解决你没有好结果:源码解析避坑指南

3步解决你没有好结果:源码解析避坑指南 配置环境就卡半天,是不是你也遇到过?明明照着文档敲代码,控制台却报出一堆看不懂的红字,或者运行后 你没有好结果…

2026/9/22 19:38:38 阅读更多 →
小牛官网首页改版踩坑记:5个最佳实践让性能提升3倍

小牛官网首页改版踩坑记:5个最佳实践让性能提升3倍

小牛官网首页改版踩坑记:5个最佳实践让性能提升3倍 刚接到一个需求,要把内部的小牛官网首页重构一下。看着挺简单,不就是换个模板、加几个新组件嘛?结果一跑起来,页面加载时间从原来的800毫秒飙到了3.5秒,首屏白屏时间更是让人抓狂。更糟糕的是…

2026/9/22 19:38:37 阅读更多 →
别被官方文档绕晕了,一文搞懂女王谷地图核心逻辑

别被官方文档绕晕了,一文搞懂女王谷地图核心逻辑

别被官方文档绕晕了,一文搞懂女王谷地图核心逻辑 还在对着几十页的 PDF 文档抓头发吗?那种“读了开头忘了结尾,看完例子还是不会写”的绝望感,相信做开发的都懂。今天咱们不整那些虚头巴脑的理论,直接把【女王谷地图】的底层逻辑拆碎了喂给你。…

2026/9/22 19:37:36 阅读更多 →

日新闻

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天

3台商务办公笔记本实测:手写实现环境配置,告别卡半天 配置环境就卡半天?别怪机器慢,多半是你没选对工具链。在Java、Go或Python的项目现场, 手写实现…

2026/9/22 0:00:41 阅读更多 →
剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑

剑帝加点速查手册:3分钟搞懂核心逻辑 面试被问原理答不上来,是不是常态?别慌。很多开发者对着 GitHub 开源仓库里的代码发呆,看似简单实则暗藏玄机。今天这份【剑帝加点】速查手册,直接带你拆解核心实现,把面试必考的原理讲透。…

2026/9/22 0:00:41 阅读更多 →
手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优

手写实现图片压缩网站核心:搞定WebP转换与质量调优 复制来的代码跑不通不知道怎么调?别慌,这种“复制粘贴地狱”在开发圈太常见了。尤其是做 图片压缩网站…

2026/9/22 0:00:41 阅读更多 →

周新闻

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

Flutter for OpenHarmony游戏卡片渐变背景实战:从原理到性能优化

直接铺开项目本身吧。这几个月我一直在折腾一件事:用Flutter给OpenHarmony做一款游戏集合类的App,说白了就是把若干小游戏塞进一个壳里,用统一入口分发。这个方向本身不算新鲜,真正让我花了不少心思的,是首页那堆游戏卡…

2026/9/22 4:32:41 阅读更多 →
Word表格编号全攻略:从列表编号到题注交叉引用

Word表格编号全攻略:从列表编号到题注交叉引用

写Word文档,最让人头疼的往往是那些“看起来不起眼”的小问题。比如表格编号这事:今天在表后面多加了两个空白行,明天给客户交稿前发现整个章节的编号全部错位,光是挨个改序号就能耗掉大半个下午。我前阵子帮人整理一份上百页的技…

2026/9/22 4:38:57 阅读更多 →
从第一个站到第二个站:独立开发者的静态网站选型与落地实践

从第一个站到第二个站:独立开发者的静态网站选型与落地实践

1. 项目概述1.1 核心需求解析做独立开发者这几年,说实话,第一个网站上线的那天晚上我兴奋得没睡着。但等它跑了半年,流量惨淡、功能臃肿、代码自己都懒得看第二遍之后,我才慢慢琢磨明白一个道理:第一个网站是练手&…

2026/9/22 8:51:04 阅读更多 →

月新闻

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能

持续集成 流水线自动化与 声明式交付 实践:原型怎样变成可用功能分类:[AI/大模型]细分主题:AI 增强型 CI/CD 流水线自动化与 GitOps 实践:Agent 工作流、工具调用与任务拆解:从原型到生产的验收清单很多团队在尝试用大…

2026/9/21 15:36:51 阅读更多 →
容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场

容器编排 生产环境运维与排障实战:复盘记录怎样真正派上用场分类:[工程技术]细分主题:Kubernetes 生产环境运维与排障实战:可复制的项目复盘模板与决策记录大部分团队的事故复盘报告,最后都变成了躺在 Confluence 或钉…

2026/9/21 15:36:51 阅读更多 →
容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步

容器 容器化技术与镜像安全管理:核心链路应该先拆哪一步分类:[工程技术]细分主题:Docker 容器化技术与镜像安全管理:核心链路的逐步实现与关键代码取舍面对一个积累了五六年历史包袱的单体架构应用(包含 Web 接口、后台…

2026/9/22 2:43:42 阅读更多 →