Zephyr 中 Adafruit Metro RP2350 板卡支持详解:硬件特性、设备树配置与烧录调试

发布时间:2026/9/14 4:13:37

Zephyr 中 Adafruit Metro RP2350 板卡支持详解:硬件特性、设备树配置与烧录调试 Zephyr 中 Adafruit Metro RP2350 板卡支持详解硬件特性、设备树配置与烧录调试【免费下载链接】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本文基于 Zephyr 仓库中 Adafruit Metro RP2350 的板卡文档与配套实现文件完整讲解该板卡在 Zephyr 中的定位、硬件资源清单、支持的功能子系统、设备树DTS引脚映射与 Flash 分区设计、默认内核配置以及基于 OpenOCD / probe-rs / UF2 的编程调试方式。读完后你可以直接使用west build -b adafruit_metro_rp2350/rp2350b/m33构建固件并理解该板卡当前 Zephyr 支持的能力边界与限制。板卡概览与当前支持范围Adafruit Metro RP2350 是 Adafruit Metro 系列中第二块采用 Raspberry Pi Pico 家族芯片的开发板第一块为 RP2040 版本。它围绕 Raspberry Pi RP2350 芯片组织硬件主打 Arduino 外形兼容pinout 兼容以及更大的板载空间与调试端口适合需要额外 GPIO、存储和调试接口的开发项目。Zephyr 仓库中的板卡定义位于boards/adafruit/metro_rp2350/目录官方板卡文档为 doc/index.rst。板卡的机器标识符board identifier为adafruit_metro_rp2350/rp2350b/m33其中rp2350b为 SoCm33表示 Cortex-M33 核心。Kconfig.adafruit_metro_rp2350 中通过select SOC_RP2350B_M33将板卡与具体的 SoC 配置绑定。官方文档明确列出了两条当前限制选型与开发时需要特别注意Zephyr 构建仅支持 RP2350B 的 Cortex-M33 核心。RP2350 内部还带有一个 Hazard3 标量核心即rp2350b中的非 M33 核心但 Zephyr 目前不为其提供构建目标与其他 RP2040/RP2350 设备一样Zephyr 尚不支持在第二个核心上运行代码即双核 SMP 场景暂不可用。硬件资源根据板卡文档的 Hardware 一节Metro RP2350 的主要硬件资源如下RP2350 主芯片150 MHz 时钟3.3 V 逻辑电平16 MB QSPI Flash用于程序存储37 个可用 GPIO23 个位于 socket/SPI 排针12 个位于 HSTX 端口另有 2 个用于 USB Host其中 6 个可作模拟输入Micro SD 卡座默认按 SPI 接口接线另引出额外引脚供进阶用户做 SDIO 接线Arduino/Python 生态中同样没有现成的 SDIO 代码属于超前的硬件配置5V Buck 变换器TPS563201输入 6~17 V DC输出最大 2 A板载RGB NeoPixel与23 号用户 LEDStemma QT 端口I2C 外设与传感器接口22 针 3 通道差分 HSTX FPC 端口Pinout 与 Raspberry Pi 5 兼容可快速实现 DVI 视频输出也可视作 12 个额外的 GPIO板边Reset 与 Boot 按键Pico Probe 调试端口3 针 JST SH 兼容USB Type-C供电与数据接口5.5 mm / 2.1 mm DC 插座6~17 V DC 供电带独立的直流电源通断开关RX/TX 跳线开关用于交换 D0 与 D1 的 UART 引脚位置USB Host 引出焊盘带可控 5 V 供电与 D/D-可 bitbang 出 USB HostGPIO 编号与经典 Arduino 引脚编号一致仅 GPIO 12、13 例外这两个引脚被 HSTX 连接占用。板卡的量化规格记录在 adafruit_metro_rp2350_rp2350b_m33.yaml 中其中flash: 16384KB即 16 MB与ram: 520KB与文档中16 MB Flash、528 KB RAM的描述对应Zephyr 可见的 SRAM 计为 520 KB支持的编译工具链为zephyr与gnuarmemb两套。支持的功能子系统板卡 YAML 中supported字段声明了该机器目标当前声明支持的功能功能说明adc模拟输入6 路对应 Arduino A0~A5clock时钟控制counter计数器dmaDMAgpio通用 IOhwinfo硬件信息如芯片序列号读取i2cI2C 总线Stemma QT 端口pwmPWM 输出spiSPI板级 PIO 软 SPI用于 SD 卡座等uart串口同时作为控制台这些声明与设备树中实际使能的节点一一对应见下节可互相印证。设备树引脚映射、外设使能与 Flash 分区板级设备树 adafruit_metro_rp2350_rp2350b_m33.dts 按 Zephyr 板级 DTS 惯例组合三部分内容SoC 公共特性raspberrypi/rpi_pico/rp2350b.dtsi、核心配置m33.dtsi与板级覆盖。其中值得关注的板级内容包括控制台与 Shellchosen { zephyr,sram sram0; zephyr,flash flash0; zephyr,console uart0; zephyr,shell-uart uart0; zephyr,code-partition code_partition; };控制台与 Zephyr Shell 均挂在uart0uart0 上默认波特率 115200uart0 { current-speed 115200; status okay; pinctrl-0 uart0_default; };同时板级文件末尾用arduino_serial: uart0 {}和arduino_i2c: i2c0 {}两个标签节点把 UART0/I2C0 暴露成 Arduino 风格的别名方便按 Arduino 引脚习惯使用。Arduino 引脚兼容映射板卡的核心卖点是 Arduino 引脚编号兼容。DTS 中通过arduino-header-r3连接器节点把经典 Arduino 引脚号映射到 RP2350 的 GPIO 上arduino_header: connector { compatible arduino-header-r3; #gpio-cells 2; gpio-map-mask 0xffffffff 0xffffffc0; gpio-map-pass-thru 0 0x3f; gpio-map ARDUINO_HEADER_R3_A0 0 gpio0_hi 9 0, ... ARDUINO_HEADER_R3_D12 0 gpio0 22 0, ARDUINO_HEADER_R3_D13 0 gpio0 23 0, ARDUINO_HEADER_R3_D14 0 gpio0 16 0, ARDUINO_HEADER_R3_D15 0 gpio0 17 0; };可以看到模拟引脚 A0~A5 映射到gpio0_hi的 9~14 号脚数字引脚 D2~D11 直接对应 GPIO2~11而 D12/D13 因原 GPIO12/13 被 HSTX 占用改映到 GPIO22/23D14/D15 映到 GPIO16/17——这与文档除 GPIO 12、13 外 GPIO 编号与 Arduino 一致的说明完全吻合。模拟连接器arduino_adc则把 A0~A5 映射到 RP2350 的 ADC 通道 1~6GPIO41~46arduino_adc: analog-connector { compatible arduino,uno-adc; #io-channel-cells 1; io-channel-map 0 adc 1, /* A0 GPIO41 ADC1 */ ... 5 adc 6; /* A5 GPIO46 ADC6 */ };应用代码因此可以按Arduino 模拟引脚号取 ADC 通道而不必关心底层通道编号。板载 LED 与 NeoPixel用户 LED 使用 GPIO23低电平点亮GPIO_ACTIVE_LOW别名为led0板载 RGB NeoPixel 通过 PIO 状态机驱动节点挂在pio1下pio-ws2812 { compatible worldsemi,ws2812-rpi_pico-pio; pinctrl-0 pio1_ws2812_default; bit-waveform 3, 3, 4; ws2812: ws2812 { gpios gpio0 25 GPIO_ACTIVE_HIGH; chain-length 1; color-mapping LED_COLOR_ID_GREEN LED_COLOR_ID_RED LED_COLOR_ID_BLUE; reset-delay 280; frequency 800000; }; };即 WS2812 信号走 GPIO25、800 kHz 波形、GRB 颜色序别名为led-strip可直接配合 Zephyr 的led_strip子系统使用。PIO 软 SPISD 卡座等由于 SD 卡座走的是与 HSTX 相邻的引出引脚板级文件用 PIO 实现了 SPI 控制器raspberrypi,pico-spi-pio片选、时钟、MOSI、MISO 分别为 GPIO10低有效、13、11、12arduino_spi: pio0_spi0 { compatible raspberrypi,pico-spi-pio; clocks clocks RPI_PICO_CLKID_CLK_SYS; cs-gpios gpio0 10 GPIO_ACTIVE_LOW; clk-gpios gpio0 13 GPIO_ACTIVE_HIGH; sdo-gpios gpio0 11 GPIO_ACTIVE_HIGH; sdi-gpios gpio0 12 GPIO_ACTIVE_HIGH; pinctrl-0 pio0_spi0_default; };注意 GPIO10/13 同时出现在 Arduino 数字引脚映射中D10/D11实际使用时需避免功能冲突。16 MB QSPI Flash 分区Flash 控制器节点声明了 16 MB 空间并切出两个分区flash0 { reg 0x10000000 DT_SIZE_M(16); ranges 0x0 0x10000000 DT_SIZE_M(16); partitions { image_def: partition0 { label image_def; reg 0x00000000 0x100; read-only; }; code_partition: partition100 { label code-partition; reg 0x100 (DT_SIZE_M(16) - 0x100); read-only; }; }; };前 0x100 字节保留给 image definition block实际块更小但链接器会把向量表放在更大的对齐偏移处其余全部作为code-partition供固件使用。chosen中的zephyr,code-partition指向它配合默认配置中的CONFIG_USE_DT_CODE_PARTITIONy链接阶段直接从设备树读取分区布局无需在链接脚本里硬编码。引脚复用pinctrl配置板级引脚复用定义在 adafruit_metro_rp2350-pinctrl.dtsi包含五个功能组组名引脚分配uart0_defaultTX→P0RX→P1RX 使能输入i2c0_defaultSDA→P20使能输入SCL→P21adc_defaultADC 通道 1~6 → P41~P46全部使能输入pwm_defaultPWM 1B→P3、2B→P5、3A→P6、4B→P9、5A→P10、5B→P11pio0_spi0_defaultPIO 占用 P11、P12P10 作为片选不分配给 PIOpio1_ws2812_defaultPIO1 占用 P25这与 Pico 1 的默认引脚映射保持一致——文档 Connections and IOs 一节明确说明The default pin mapping is unchanged from the Pico 1因此可直接参考boards/raspberrypi/rpi_pico板卡文档中的引脚表来排线。默认内核配置板级默认配置 adafruit_metro_rp2350_rp2350b_m33_defconfig 很小只开了构建与运行所必需的项CONFIG_BUILD_OUTPUT_HEXy CONFIG_BUILD_OUTPUT_UF2y CONFIG_CLOCK_CONTROLy CONFIG_CONSOLEy CONFIG_GPIOy CONFIG_RESETy CONFIG_SERIALy CONFIG_UART_CONSOLEy CONFIG_UART_INTERRUPT_DRIVENy CONFIG_USE_DT_CODE_PARTITIONy要点默认同时产出HEX 与 UF2两种镜像——UF2 可经 USB BOOT 模式按住 BOOTSEL 或触发双启动直接拷贝进 FlashHEX 则供 OpenOCD/probe-rs 烧写UART 控制台使用中断驱动收发代码分区布局取自设备树CONFIG_USE_DT_CODE_PARTITION。另外 Kconfig.defconfig 将CONFIG_USB_SELF_POWERED默认为n即 USB 默认按总线供电处理——因为该板经 USB Type-C 取电这一默认值使 USB Device 驱动与板子实际电源拓扑保持一致。编程与调试与 RP2040/RP2350 设备族一致SWD 接口可用于编程与调试。板卡文件 board.cmake 为west flash注册了三类 runnerOpenOCD默认调试器假定为 CMSIS-DAP 接口可通过RPI_PICO_DEBUG_ADAPTER变量覆盖board_runner_args(openocd --cmd-pre-init source [find interface/${RPI_PICO_DEBUG_ADAPTER}.cfg]) board_runner_args(openocd --cmd-pre-init source [find target/rp2350.cfg]) board_runner_args(openocd --cmd-pre-init set_adapter_speed_if_not_set 5000)其中set_adapter_speed_if_not_set是板卡自带的 Tcl 过程定义在 support/openocd.cfg若 adapter speed 尚未设置则设为 5000 kHz与 Raspberry Pi 官方 Debug Probe 文档推荐的速率一致因为树莓派的 OpenOCD 分叉不会在接口配置中设定该值。probe-rsboard_runner_args(probe-rs --chipRP235x)即用 probe-rs 的 RP235x 芯片描述。UF2board_runner_args(uf2 --board-idRP2350)配合boards/common/uf2.board.cmake提供的 UF2 拷贝流程使用板 IDRP2350。典型工作流west build -b adafruit_metro_rp2350/rp2350b/m33 应用目录生成 zephyr.elf/hex/uf2接好 Pico Probe3 针 JST SH 的 SWD 端口后执行west flash --runner openocd或west flash --runner probe-rs不走调试器时则触发 BOOTSEL 模式后west flash --runner uf2。参考与延伸阅读板卡官方文档doc/index.rstOverview、Hardware、Supported Features、Programming and Debugging板级设备树与引脚复用adafruit_metro_rp2350_rp2350b_m33.dts、adafruit_metro_rp2350-pinctrl.dtsi板卡元数据与默认配置adafruit_metro_rp2350_rp2350b_m33.yaml、adafruit_metro_rp2350_rp2350b_m33_defconfig烧录/调试 runner 配置board.cmake、support/openocd.cfgPico 1 引脚映射参考boards/raspberrypi/rpi_pico板卡文档本板默认引脚映射与其一致总结Metro RP2350 在 Zephyr 中是一个以 RP2350B Cortex-M33 为目标的板卡提供 16 MB Flash、520 KB 可见 SRAM、Arduino 兼容引脚映射、UART/I2C/ADC/PWM/GPIO/PIO-SPI 等常用子系统与 UF2/OpenOCD/probe-rs 三条烧录路径开发时需牢记当前仅支持单核Cortex-M33构建这一限制。【免费下载链接】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),仅供参考
延伸阅读

更多相关文章

2026/9/14 4:08:37

pot-desktop 使用指南:免费划词翻译与截图 OCR 快速上手

pot-desktop 使用指南:免费划词翻译与截图 OCR 快速上手 【免费下载链接】pot-desktop 🌈一个跨平台的划词翻译和OCR软件 | A cross-platform software for text translation and recognition. 项目地址: https://gitcode.com/GitHub_Trending/po/pot-…

2026/9/14 4:08:37

Spring Framework中文文档与核心架构解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 4:53:38

Web开发安全误区与防护实践指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 4:53:38

ESP32+MAX30102心率传感器:零基础实战教程

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 4:53:38

Qt高德地图天气查询系统开发实战

简介:这是一套面向高校计算机及相关专业(如人工智能、物联网、电子信息等)学生的QT桌面应用实战项目,聚焦高德地图API集成与天气数据可视化查询,适用于课程设计、毕业设计及C/QT入门进阶学习。资源包共59个文件&#x…

2026/9/14 4:53:38

H6900B与H6601:全彩LED驱动的物理层抗干扰设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/9/14 4:53:38

Go语言实现分布式系统高可用性的核心方案

1. 分布式系统高可用性的核心挑战在分布式系统中,高可用性(High Availability)意味着系统能够在各种异常情况下持续提供服务。对于Go语言开发的分布式系统而言,实现高可用性需要解决几个关键问题:网络分区:当节点间通信中断时&…

2026/9/14 4:48:38

Visual C++ MFC实现Outlook风格界面与COM邮件集成

简介:面向Visual C界面编程开发者,这份40个文件的RAR压缩包以MFC调用Outlook COM对象为主线,演示如何通过COleDispatchDriver创建Outlook Application、初始化MailItem并完成邮件发送,适合需要把邮件功能集成到桌面程序或学习COM交…

2026/9/14 2:17:50

拯救者Y7000黑屏故障排查与维修实战指南

1. 项目概述:一台黑屏的拯救者Y7000,到底卡在哪一步? 联想拯救者Y7000系列笔记本,从2018年第一代搭载i5-8300H开始,到后来的i7-9750H、i7-10750H、i5-11400H,再到2023年款的R7-7840HS,它始终是学…

2026/9/14 0:03:22

KCF目标跟踪算法与OTB工程实现:毕业设计实战解析

简介:这是一份基于KCF核相关滤波算法、融合尺度池与抗遮挡处理的目标检测跟踪MATLAB完整源码,主要面向计算机相关专业准备毕业设计、课程设计或期末大作业的学生,也适合需要项目实战练习的初学者。源码在OTB数据集上完成验证,能够…

2026/9/14 0:03:22

语音情感识别实战:Keras实现LSTM、CNN、SVM与MLP多模型对比

简介:面向语音情感识别入门与进阶开发者,这份基于Keras的项目源码完整实现了LSTM、CNN、SVM、MLP四种模型,兼容Python3.8与Keras/TensorFlow2环境。压缩包内含49个文件,大小约70.31MB,主体包括Python脚本、yaml/json配…

2026/9/12 6:29:36

USB Type-C PCB布局分区设计:电源、高速信号与PD协议全攻略

做硬件这行,Type-C接口算是典型的“看着简单,做起来全坑”的东西。光引脚就24个,高低速信号、电源、控制线全部塞在一个小小的连接器里,如果PCB布局不做规划,打样回来基本就是“插上没反应”、“高速掉线”、“静电一打…

2026/9/12 14:32:17

系统编程学习原型如何补齐稳定性边界

系统编程学习原型如何补齐稳定性边界预算有限时&#xff0c;我先优化明显多余的复制&#xff0c;而不是猜测性地换容器。用借用传递只读数据通常就能减少分配&#xff1a; fn parse(line: &str) -> Result<Item, Error> { /* ... */ }用基准确认热点确实在分配&am…

2026/9/13 11:18:28

雨花区哪家财务公司代理记账比较好?

在雨花区&#xff0c;企业处理财税事务常常面临诸多挑战&#xff0c;选择一家靠谱的财务公司至关重要。湖南巨勤财务管理咨询有限公司就是本地正规实体财税服务机构&#xff0c;深耕本地工商财税行业多年&#xff0c;熟悉当地工商局、税务局最新政策与申报流程。主营公司注册、…

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
咨询二维码