恒美微站
首页
关于我们
建站服务
主题模板
案例展示
资讯中心
联系我们
Zephyr RTOS 在 SAM C21N Xplained Pro 上的开发实践:板卡资源、外设映射与烧录调试全指南
首页
资讯中心
/
Zephyr RTOS 在 SAM C21N Xplained Pro 上的开发实践:板卡资源、外设映射与烧录调试全指南
Zephyr RTOS 在 SAM C21N Xplained Pro 上的开发实践:板卡资源、外设映射与烧录调试全指南
发布时间:2026/9/16 0:31:51
Zephyr RTOS 在 SAM C21N Xplained Pro 上的开发实践板卡资源、外设映射与烧录调试全指南【免费下载链接】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/zephyrSAM C21N Xplained Pro 是 MicrochipAtmel推出的基于 ARM Cortex-M0 的评估板是 Zephyr RTOS 官方支持的一线 MCU 开发板之一。本文以仓库内 boards/atmel/sam0/samc21n_xpro/doc/index.rst 为核心结合该板卡的设备树.dts、引脚复用pinctrl、defconfig 与 OpenOCD 配置等仓库源码系统讲解板卡硬件资源、Zephyr 默认外设引脚映射、串口/时钟/PWM/CAN 配置以及从构建到烧录、串口查看运行输出的完整实操流程。读完本文你将能在该板卡上独立完成 Zephyr 应用的编译、烧录与调试。板卡概览面向汽车/工业 CAN 应用的低成本评估平台SAM C21N Xplained Pro 评估套件专为基于 SAM C21N 系列ARM Cortex-M0微控制器的评估与原型开发而设计。该板卡最突出的特点是板载 Atmel 嵌入式调试器EDBG无需任何额外硬件即可获得完整的调试接口同时板载两路 CAN 收发器使其特别适合汽车、工业总线类应用的原型验证。从仓库中 boards/atmel/sam0/samc21n_xpro/board.yml 可以看到该板卡在 Zephyr 中的正式定义板级标识符samc21n_xpro全称 SAM C21N Xplained Pro Evaluation Kit厂商为 atmelSoC 为samc21n18aKconfig.samc21n_xpro 中通过select SOC_SAMC21N18A将板卡与 SoC 绑定。核心硬件资源根据板卡文档SAM C21N Xplained Pro 的主要硬件配置如下处理器SAMC21N18AARM Cortex-M0 内核主频 48 MHz晶振32.768 kHz 晶体振荡器用于 RTC 等低速外设存储器256 KiB Flash、32 KiB RAM、8 KiB RRW FlashRead-While-Write可边读边写指示与输入1 颗黄色用户 LED、1 个机械用户按键、1 个复位按键、1 个 QTouch® 触摸按键调试板载基于 USB 的 EDBG 单元同时提供串口控制台通信两路 CAN 收发器CAN0 / CAN1这些硬件资源与 samc21n_xpro.yaml 中声明的flash: 256KiB、ram: 32KiB以及supported外设列表adc、can、dma、gpio、i2c、pwm、rtc、spi、uart一一对应。该文件同时声明了板卡可用的工具链zephyr与gnuarmemb。Zephyr 支持的板载功能Zephyr 为 SAM C21N Xplained Pro 提供的板级支持涵盖 MCU 片上外设与板载器件。从 samc21n_xpro.dts 的设备树节点可以确认LEDleds节点采用gpio-leds兼容驱动led0连接 PC05电平为GPIO_ACTIVE_LOW低电平点亮PWM LEDpwmleds节点采用pwm-leds兼容驱动pwm_led0由 TCC2 的 1 号通道驱动周期为PWM_MSEC(20)20 ms按键buttons节点采用gpio-keys兼容驱动user_button连接 PB19配置了上拉GPIO_PULL_UP与低电平有效GPIO_ACTIVE_LOW并映射为输入事件码INPUT_KEY_0外设adc0/adc1、tcc2PWM、rtc、sercom0/1/2/4/5UART/I2C/SPI、can0/can1 均已在设备树中按默认引脚使能或预配置引脚映射4 组 GPIO 控制器与默认外设分配SAM C21N 系列具有 4 个 GPIO 控制器PORTA/PORTB/PORTC/PORTD 等负责引脚复用pin mux、输入/输出、上拉等功能的配置。Zephyr 为该板卡预设了一套默认的外设引脚分配在应用开发中直接按此接线即可与设备树默认配置对齐。默认 Zephyr 外设引脚映射表外设功能引脚ADC0PB09ADC1PA08CAN0 TXPA24CAN0 RXPA25CAN1 TXPB14CAN1 RXPB15SERCOM0 USART TXPB24SERCOM0 USART RXPB25SERCOM1 I2C SDAPA16SERCOM1 I2C SCLPA17SERCOM2 USART TXPA12SERCOM2 USART RXPA13SERCOM4 USART TXPB10SERCOM4 USART RXPB11SERCOM5 SPI MISOPB00SERCOM5 SPI MOSIPB02SERCOM5 SPI SCKPB01GPIO/PWM LED0PC05这套映射在 samc21n_xpro-pinctrl.dtsi 中有完整的引脚复用定义与之对应例如can0_default组将PA25G_CAN0_RX与PA24G_CAN0_TX复用为 CAN0 收发引脚sercom4_uart_default组将PB11D_SERCOM4_PAD3与PB10D_SERCOM4_PAD2复用为 SERCOM4 的 RX/TXsercom5_spi_default组定义了PB0D_SERCOM5_PAD2MISO、PB2D_SERCOM5_PAD0MOSI与PB1D_SERCOM5_PAD3SCK。关于各引脚的详细电气特性与复用功能请参考 SAM C21 系列数据手册SAM C21 Family Datasheet与 SAM C21N Xplained Pro 原理图SAM C21N Xplained Pro Schematic。设备树中的关键节点解读在 samc21n_xpro.dts 的根节点中可以看到板卡通过chosen指定了系统默认外设chosen { zephyr,console sercom4; zephyr,shell-uart sercom4; zephyr,sram sram0; zephyr,flash flash0; zephyr,canbus can0; };这意味着 Zephyr 控制台console与 Shell 默认挂载在 SERCOM4 上CAN 总线默认指向 CAN0。同时板卡还提供了与示例程序兼容的aliasesaliases { led0 led0; pwm-led0 pwm_led0; sw0 user_button; i2c-0 sercom1; };例如samples/basic/blinky依赖led0别名点亮 LEDsamples/hello_world通过zephyr,console输出打印信息应用层无需关心具体引脚即可直接使用这些标准别名。此外设备树中为 Flash 预留了末尾 16 KiB 作为存储分区storage_partition: partition3c000 { compatible zephyr,mapped-partition; label storage; reg 0x0003c000 0x00004000; };即从地址 0x3C000 起的 16 KiB 空间供 FCB、LittleFS 或 NVS 等文件系统/非易失存储使用启用相应功能时生效。系统时钟内部振荡器驱动 48 MHzSAM C21N 微控制器在 Zephyr 板级配置中使用 32.768 kHz 内部振荡器配合板载 32.768 kHz 晶体作为低速基准由片上内部振荡器OSC倍频生成 48 MHz 系统时钟。设备树中对 CPU 频率的声明位于 samc21n_xpro.dtscpu0 { clock-frequency 48000000; };RTC 部分则通过atmel,assigned-clocks osc32kctrl 4显式指定使用 32.768 kHz 时钟域OSC32KCTRL 外设的时钟源并在counter-mode clock、prescaler 1024下运行即 RTC 以时钟计数模式工作分频系数 102432.768 kHz / 1024 ≈ 32 Hz 计数节拍。串口与调试控制台SAM C21N 微控制器共提供 8 个基于 SERCOM 的 USART本 BSP 中配置了其中 3 个为 USART。SERCOM4 是 Zephyr 的默认控制台对应chosen中的zephyr,console sercom4与zephyr,shell-uart sercom4并连接到板载 Atmel 嵌入式调试器EDBG通过 USB 在主机上呈现为虚拟串口。三个串口的默认配置如下SERCOM波特率数据格式说明SERCOM096008N1通用 USARTSERCOM21152008N1通用 USARTSERCOM41152008N1Zephyr 控制台连接板载 EDBG在 samc21n_xpro.dts 中对应节点配置为sercom0 { status okay; compatible atmel,sam0-uart; current-speed 9600; rxpo 1; txpo 0; }; sercom2 { status okay; compatible atmel,sam0-uart; current-speed 115200; rxpo 1; txpo 0; }; sercom4 { status okay; compatible atmel,sam0-uart; current-speed 115200; rxpo 3; txpo 1; };其中rxpo/txpo指定 SERCOM 数据引脚的 MUX 位置与 pinctrl 中的 PAD 定义配套使用。串口控制台在 samc21n_xpro_defconfig 中通过以下 Kconfig 开启CONFIG_BUILD_OUTPUT_HEXy CONFIG_CONSOLEy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy其中CONFIG_UART_CONSOLEy将控制台输出绑定到 UARTCONFIG_BUILD_OUTPUT_HEXy额外生成 HEX 格式的固件镜像便于使用 EDBG 相关工具烧录。PWMTCC 定时器驱动 LED0SAM C21N 微控制器带有 3 个基于 TCCTimer/Counter for Control Applications的 PWM 单元每个单元最多 4 路输出周期位宽为 24 位或 16 位。在本板卡上若启用CONFIG_PWM_SAM0_TCC则 LED0 由 TCC2 驱动而非 GPIO。设备树中 TCC2 的配置如下tcc2 { status okay; compatible atmel,sam0-tcc-pwm; prescaler 256; #pwm-cells 2; pinctrl-0 pwm_default; pinctrl-names default; };对应的 PWM 输出引脚复用在 samc21n_xpro-pinctrl.dtsi 中定义为pwm_default: pwm_default { group1 { pinmux PC5F_TCC2_WO1; }; };即 PC05 复用为 TCC2 的 WO1波形输出通道 1。同时设备树中pwm-leds节点把该通道绑定为 LED 的 PWM 驱动源pwm_led0: pwm_led_0 { pwms tcc2 1 PWM_MSEC(20); };因此应用只需通过别名pwm-led0操作 PWM LED即可实现调光等效果。若未启用CONFIG_PWM_SAM0_TCCPC05 则退化为普通 GPIO 输出由led0别名控制开关。CAN双通道收发器与控制器配置板卡板载两路 CAN 收发器是 SAM C21N 面向汽车/工业总线场景的核心特性。设备树中 CAN0 与 CAN1 均声明了can-transceiver子节点并设置最大波特率can0 { status okay; pinctrl-0 can0_default; pinctrl-names default; can-transceiver { max-bitrate 5000000; }; }; can1 { pinctrl-0 can1_default; pinctrl-names default; can-transceiver { max-bitrate 5000000; }; };引脚复用方面samc21n_xpro-pinctrl.dtsi 中can0_default: can0_default { group1 { pinmux PA25G_CAN0_RX, PA24G_CAN0_TX; }; }; can1_default: can1_default { group1 { pinmux PB15G_CAN1_RX, PB14G_CAN1_TX; }; };值得注意的是zephyr,canbus can0将 CAN0 声明为 Zephyr 网络栈的默认 CAN 总线接口samples/net/canbus等示例可直接运行于 CAN0。max-bitrate 5000000是收发器硬件能力上限CAN FD 可达 5 Mbps 数据段速率实际总线波特率由应用通过 SocketCAN 等接口按需配置。编程与调试EDBG OpenOCD 工作流SAM C21N Xplained Pro 板载 Atmel 嵌入式调试器EDBG为 SAMC21 芯片提供 SWD 调试接口且被 OpenOCD 完整支持。Zephyr 通过 board.cmake 将该板卡注册为openocdrunnerinclude(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)板卡专属的 OpenOCD 配置位于 support/openocd.cfg其中关键配置如下通过source [find interface/cmsis-dap.cfg]加载 CMSIS-DAP 接口EDBG 的调试探针协议指定transport select swd使用 SWD 两线调试定义芯片名at91samc21n18a、小端序set ENDIAN little与 CPU TAP ID0x0bc11477加载target/at91samdXX.cfg目标配置配置 gdb-attach 时复位并暂停目标reset haltgdb-detach 时恢复运行resume。编译、烧录与串口验证下面以hello_world示例演示完整的开发闭环。构建固件在 Zephyr 环境就绪的前提下构建samples/hello_worldwest build -b samc21n_xpro samples/hello_world构建产物包含zephyr.elf、zephyr.hex由CONFIG_BUILD_OUTPUT_HEXy生成等镜像文件。连接开发板使用 USB 调试口将 SAM C21N Xplained Pro 连接到主机。在 Linux 下EDBG 枚举出的串口设备通常为/dev/ttyACM0若存在多个 ACM 设备请通过dmesg确认实际设备名。打开串口终端运行终端程序监听串口输出例如 minicomminicom -D /dev/ttyACM0 -o其中-o选项告诉 minicom 不要发送调制解调器初始化字符串。串口参数需配置为速率Speed115200数据位Data8 位校验Parity无停止位Stop bits1烧录镜像保持串口终端开启执行烧录west flash烧录完成后串口终端应显示Hello World! samc21n_xpro若输出异常可依次检查USB 是否识别为/dev/ttyACM0、串口参数是否为 115200 8N1、以及west flash是否报告 OpenOCD 连接成功。参考资料SAM C21N Xplained Pro 板卡目录板卡设备树 samc21n_xpro.dts引脚复用 samc21n_xpro-pinctrl.dtsi板卡 OpenOCD 配置 support/openocd.cfghello_world 示例更详尽的芯片寄存器与电气特性请查阅 SAM C21 系列数据手册板卡原理图与设计文件请查阅 SAM C21N Xplained Pro 原理图/设计文件见板卡文档 References 一节。【免费下载链接】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),仅供参考