Zephyr 中 Serpente 开发板移植与实战:基于 ATSAMD21E18A 的极简原型板使用指南
发布时间:2026/9/20 14:14:54 锦皓数字建站

Zephyr 中 Serpente 开发板移植与实战基于 ATSAMD21E18A 的极简原型板使用指南【免费下载链接】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/zephyrSerpente 是 Arturo182 推出的一款极小型、低成本开发与原型验证板搭载 ATSAMD21E18AARM Cortex-M0处理器配备 4MiB 额外 SPI Flash、PWM 可调 RGB LED 和 6 个 I/O 引脚并以原生 USB 接口作为主要通信与烧录通道。本文以 Zephyr 仓库中该板卡的官方文档为骨架结合 board 源码 的 devicetree、Kconfig 与构建脚本完整讲解 Serpente 的硬件规格、时钟树、USB 设备模式、BOSSA/UF2 烧录流程及 Zephyr 支持的功能清单帮助读者在 Zephyr 上快速完成 blinky 等样例的构建与烧录并理解板卡级移植背后的实现细节。Arturo182 Serpente 开发板极小型 ATSAMD21 原型板带 USB 接口与 RGB LED板卡概述与硬件规格Serpente 是一块面向嵌入式原型开发的小尺寸开发板其核心定位是小而全板载主控、存储、LED 与 USB 一应俱全无需外接调试器即可通过 USB 直接烧录与通信。根据 boards/others/serpente/doc/index.rst 的官方说明板卡核心特性包括4MiB 板载 Flash 存储除主控内部 Flash 外额外提供 4MiB SPI Flash可用于数据存储或文件系统PWM 可调 RGB LED红、绿、蓝三色 LED 均支持 PWM 控制可实现任意颜色与亮度调节6 个 I/O 引脚面向小型化原型设计引脚数量精简但覆盖常用外设三种 USB 连接器选项同一块板提供 USB Type-C 公头plug、USB Type-C 母座socket与 USB Type-A 公头plug三种变体可直插电脑或 USB 供电设备。硬件配置一览项目规格处理器ATSAMD21E18AARM Cortex-M0主频 48 MHz内部 Flash256 KiBRAM32 KiB外部存储额外 4MiB SPI Flash用户 LEDRGB 三色 PWM LED按键Reset 复位键USB原生 USB 设备端口上述硬件参数在 serpente.yaml 中也有对应声明flash: 256、ram: 32架构为arch: arm工具链支持zephyr与gnuarmemb。支持的板级功能Zephyr 通过 serpente.yaml 中的supported字段声明该板卡在当前版本中可用的驱动/子系统覆盖了 SAMD21 上常用的大部分外设adc模数转换counter计数器gpio通用输入输出hwinfo硬件信息读取i2cI2C 总线pwmPWM驱动 RGB LED 的核心spiSPI 总线用于外部 4MiB Flash 等uart串口默认控制台usb_deviceUSB 设备watchdog看门狗这些能力在 devicetree 中均有对应的节点启用详见下文意味着上述外设驱动已随板卡移植被 Zephyr 原生支持可直接用于应用开发。引脚连接与 I/O 布局Serpente 的完整引脚定义与原理图可参考板卡厂商的官方文档详见原文档 References 中的Serpente documentation、pinouts与schematic链接。在 Zephyr 侧引脚复用关系由 serpente-pinctrl.dtsi 明确定义这里给出关键复用组功能引脚PINMUX对应外设PWM 输出红/绿/蓝PA22F_TCC0_WO4 / PA19F_TCC0_WO3 / PA23F_TCC0_WO5TCC0I2CPA4D_SERCOM0_PAD0 / PA5D_SERCOM0_PAD1SERCOM0SPI外部 Flash 等PA18D_SERCOM3_PAD2 / PA16D_SERCOM3_PAD0 / PA17D_SERCOM3_PAD1SERCOM3UART 控制台PA9D_SERCOM2_PAD1 / PA8D_SERCOM2_PAD0SERCOM2USB D/D-PA25G_USB_DP / PA24G_USB_DMUSB从 serpente.dts 可以看到默认控制台与 shell 串口被绑定到sercom2zephyr,console sercom2; zephyr,shell-uart sercom2;串口波特率为 115200。同时sercom0、sercom2UART、sercom3SPI、tcc0PWM与usb0USB 设备均在 devicetree 中被置为status okay。RGB LED 的 GPIO 与 PWM 双重驱动Serpente 的 RGB LED 在 serpente.dts 中被定义了两套节点gpio-leds节点红、绿、蓝分别位于 PA22、PA19、PA23且均为GPIO_ACTIVE_LOW低电平点亮并通过aliases暴露为led0/led1/led2与red-led/green-led/blue-ledpwm-leds节点三色 LED 分别由tcc0的通道 0、3、1 驱动周期为PWM_MSEC(20)20ms即 50Hz 刷新率通过aliases暴露为pwm-led0/1/2与red-pwm-led/green-pwm-led/blue-pwm-led。因此应用层既可以使用 GPIO 接口做简单开关/闪烁也可以使用 PWM 接口实现颜色渐变这正是原文档所称 PWM enabled RGB led 的源码级体现。系统时钟配置SAMD21 默认的时钟方案为使用8 MHz 内部振荡器OSC8M作为主时钟源再经由片内 PLL 倍频生成48 MHz 系统时钟。这一配置在 serpente_defconfig 中直接可见CONFIG_SOC_ATMEL_SAMD_OSC8My CONFIG_SOC_ATMEL_SAMD_OSC8M_AS_MAINy同时在 serpente.dts 中显式声明了 CPU 工作频率cpu0 { clock-frequency 48000000; };从源码结构看SOC_ATMEL_SAMD_OSC8M_AS_MAIN将 8MHz 内部振荡器设定为主时钟源再通过 SAMD21 的 DPLL 倍频到 48MHz以满足 USB 与 UART 等工作所需的稳定时钟。USB 设备端口SAMD21 自带原生 USB 设备控制器Serpente 通过 USB 口即可与主机 PC 通信无需额外硬件。Zephyr 侧 USB 外设节点在 serpente.dts 中启用zephyr_udc0: usb0 { status okay; pinctrl-0 usb_dc_default; pinctrl-names default; };其中usb_dc_default引脚组将 PA25/PA24 复用为 USB D/D-。开发者可以参考 Zephyr 的usb样例类别例如usb-cdc-acm样例——它会在主机 PC 上枚举出一个虚拟串口并向主机打印 Hello World!是验证 Serpente USB 通路是否正常的最快途径。编程与调试BOSSA 兼容的 UF2 BootloaderSerpente 出厂预装BOSSA 兼容的 UF2 bootloader。BOSSABasic Open Source SAM-BA是 Atmel/Microchip SAM 系列 MCU 常用的烧录工具链UF2 则是 Adafruit 推动的拖拽式固件格式Serpente 将两者结合使烧录体验非常友好将板卡插入电脑后它会枚举为一个可移动磁盘UF2 模式双击 Reset 按键快速连按两次即可随时进入 bootloader 模式把编译好的.uf2固件直接复制到磁盘即可完成烧录。Zephyr 侧对 bootloader 的支持体现在 serpente_defconfigCONFIG_BOOTLOADER_BOSSAy CONFIG_BOOTLOADER_BOSSA_ADAFRUIT_UF2y以及 serpente.dts 中的 Flash 分区布局boot_partition: partition0 { label uf2; reg 0x00000000 DT_SIZE_K(8); read-only; }; code_partition: partition2000 { label code; reg 0x2000 DT_SIZE_K(256-8); read-only; };即Flash 起始的 8KiB 被保留给 UF2 bootloader只读其余约 248KiB 用作应用代码分区zephyr,code-partition。这样的分区设计保证应用固件不会覆盖 bootloader从而始终保持双击复位即可重新烧录的能力。支持的烧录工具链board.cmake 引入了 Zephyr 通用烧录脚本include(${ZEPHYR_BASE}/boards/common/bossac.board.cmake)即 Serpente 默认使用bossacBOSSA 命令行工具作为 runnerwest flash会自动调用 bossac 完成固件写入。烧录示例从构建 blinky 到 LED 闪烁以下步骤完全遵循官方文档的烧录流程可在 Zephyr 环境下直接复现。第一步构建 blinky 样例构建 Zephyr 内核与blinky样例应用目标板为serpentewest build -b serpente samples/basic/blinkyblinky是 Zephyr 中最基础的点灯样例它通过led0别名驱动板载 LED 周期性闪烁。由于 Serpente 的 LED 均为GPIO_ACTIVE_LOWdevicetree 已正确声明极性样例无需任何修改即可工作。第二步连接板卡使用 USB 线将 Serpente 连接到主机电脑。注意板卡有 USB Type-C 公头、Type-C 母座、Type-A 公头三种变体请根据手头板卡选择合适的连接方式。第三步进入 bootloader 模式快速双击 Reset 按键两次轻触板卡将进入 UF2 bootloader 模式并在主机上呈现为一个可移动磁盘。第四步烧录固件west flashwest flash会通过 bossac runner 生成并烧录固件。烧录完成后复位运行即可看到板载 User LED 开始闪烁。若使用手工方式也可以将 west 构建产物中的.uf2文件直接拖入 bootloader 暴露的可移动磁盘完成烧录。总结Serpente 以极小的尺寸提供了完整的开发闭环ATSAMD21E18A 提供 48MHz Cortex-M0 算力256KiB 内部 Flash 32KiB RAM 4MiB 外部 SPI Flash 满足原型存储需求PWM RGB LED 便于状态指示原生 USB 既是通信口也是烧录口。在 Zephyr 中该板卡的移植已相当成熟devicetree 完整定义了引脚复用、分区与外围设备Kconfig 预设了 OSC8M 主时钟与 BOSSA/UF2 bootloader 支持west build -b serpente 双击复位 west flash三步即可完成从源码到点灯的全流程。对于需要快速验证 Zephyr 应用或做小型 USB 外设原型开发的场景Serpente 是一个非常轻量且顺手的起点。【免费下载链接】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),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。