新闻详情

新闻详情

首页 / 资讯中心 / 详情

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),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Python字符串拼接技巧 2026/9/14 5:04:48

Python字符串拼接技巧

分享字符串拼接技巧,涵盖连接与编号处理,实用方法汇总。1、 我们知晓了一种特别的字符串方式, 就是把两个字符串并排书写, 它会自行进行拼接, 比如:2、 代码运行结果如下:3、 这种方式从本质上来说仅是特地明确的字符串书写形式, 并不是真正意…

阅读更多 →
Java Integer缓存机制解析与128陷阱 2026/9/14 5:04:48

Java Integer缓存机制解析与128陷阱

1. 项目概述最近在Java面试中经常被问到一个有趣的问题:为什么Integer a 127和Integer b 127比较时返回true,而Integer c 128和Integer d 128比较时却返回false?这就是所谓的"Java 128陷阱"。作为Java开发者,理解这…

阅读更多 →
effect 修复解析:Cache.invalidateWhen 等待旧 lookup 期间误删替换条目的竞态问题 2026/9/14 5:04:48

effect 修复解析:Cache.invalidateWhen 等待旧 lookup 期间误删替换条目的竞态问题

effect 修复解析:Cache.invalidateWhen 等待旧 lookup 期间误删替换条目的竞态问题 【免费下载链接】effect Build production-ready applications in TypeScript 项目地址: https://gitcode.com/GitHub_Trending/ef/effect 本篇技术文章基于 effect 仓库中一…

阅读更多 →
Skyvern 如何用 Browser Profile 保存登录状态跳过重复登录? 2026/9/14 5:04:48

Skyvern 如何用 Browser Profile 保存登录状态跳过重复登录?

Skyvern 如何用 Browser Profile 保存登录状态跳过重复登录? 【免费下载链接】skyvern Automate browser based workflows with AI 项目地址: https://gitcode.com/GitHub_Trending/sk/skyvern 如果你的 Skyvern workflow 需要登录同一个账号反复运行&#x…

阅读更多 →
ModbusTCP报文分析器自研实录:从Wireshark痛点到手写工具 2026/9/14 5:04:48

ModbusTCP报文分析器自研实录:从Wireshark痛点到手写工具

废话不多说,先亮个东西。最近手头一个项目里,PLC和上位机之间的ModbusTCP通信时不时抽风,Wireshark抓出来的包一堆,看得眼睛快瞎了。逼急了,我直接自己写了个ModbusTCP报文分析器,专治各种报文看不懂、定位…

阅读更多 →
Example Obsidian Links 2026/9/14 5:01:40

Example Obsidian Links

Example Obsidian Links 【免费下载链接】harper Offline, privacy-first grammar checker. Fast, open-source, Rust-powered 项目地址: https://gitcode.com/GitHub_Trending/har/harper Below, you will find a number of example links that Obsidian is able to pr…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞