:双架构构建、烧录调试与 Pico 2W Wi-Fi 应用开发指南)
操作系统嵌入式RTOS物联网【免费下载链接】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点击查看免费下载Raspberry Pi Pico 2 与 Pico 2W 是 Raspberry Pi Pico 家族的第二代产品核心搭载 RP2350 SoC。本指南以 Zephyr 官方板级文档为主体围绕 RP2350 的双 CPU 架构Cortex-M33 与 Hazard3 RISC-V、板级支持的硬件资源、OpenOCD/UF2 等烧录与调试方式以及 Pico 2W 的 Wi-Fi 固件获取与网络应用构建展开帮助你在 Zephyr 环境下完成从环境准备、构建、烧录到无线联网应用的完整开发流程。一、板级概览RP2350 的架构与定位Raspberry Pi Pico 2 与 Pico 2W 是 Raspberry Pi Pico 系列的第二代产品在 Raspberry Pi 官方文档中统称为 Pico 2。其核心 SoC 为RP2350一个值得注意的特点是它同时集成了两种 CPU 架构的处理器核两个 Arm Cortex-M33 核心两个 Hazard3RISC-V核心Zephyr 支持针对其中任意一种 CPU 架构进行构建也就是说同一块板子既可以被当成 Arm 平台也可以被当成 RISC-V 平台来编译固件。不过需要特别说明的是Zephyr 目前只运行在单核上——在第二个核心上运行代码暂不支持。从源码结构看这一双架构设计体现在板级目录的文件组织上Zephyr 为每个 CPU 集群准备了独立的设备树文件例如 rpi_pico2_rp2350a_m33.dtsArm 路径与 rpi_pico2_rp2350a_hazard3.dtsRISC-V 路径。其中 m33 版本通过#include raspberrypi/rpi_pico/m33.dtsi引入 Cortex-M33 的核级配置hazard3 版本则通过#include riscv/raspberrypi/hazard3.dtsi引入 RISC-V 核级配置两者再共同包含rpi_pico2_cpu0_common.dtsi与../common/rpi_pico-led.dtsi完成 SoC 公共部分与板级 LED 的组合。在 board.yml 中可以看到该板的变体variants结构SoC 为rp2350a其下派生出w即 Pico 2W与mcuboot两个变体且二者均为cpucluster: m33这意味着 Wi-Fi 与 MCUboot 相关的目标目前都基于 Arm 架构。二、硬件资源一览Pico 2 / Pico 2W 的板级硬件特性如下类别规格处理器双 Cortex-M33 或 Hazard3RISC-V核心最高150 MHz存储520 KB SRAM板载4 MB FlashQSPI支持 XIP 与代码分区USBUSB 1.1同时支持 device 与 host 模式低功耗支持 low-power sleep 与 dormant 模式编程方式支持通过 USB 大容量存储设备进行拖拽式编程Drag-and-dropGPIO26 个多功能 GPIO 引脚其中 3 个可用于 ADC外设2×SPI、2×I2C、2×UART、3×12 位 500 ksps ADC、24 路可控 PWM 通道定时器2 个定时器各 4 个 alarm 1 个 AONAlways-On定时器传感器板载温度传感器Temperature sensorPIO3 个 Programmable IOPIO块共 12 个状态机用于自定义外设Wi-FiInfineon CYW43439 2.4 GHz Wi-Fi 芯片仅 Pico 2W 具备其中 PIO可编程 IO是 Pico 系列的一大特色它具备灵活、用户可编程的高速 IO 能力甚至可以模拟诸如 SD 卡、VGA 之类的接口协议。Pico 2 相比上一代 PicoRP2040在核心架构、主频、SRAM264 KB → 520 KB与 Flash2 MB → 4 MB上均有明显升级。关于板级设备树中实际启用的外设可查看 rpi_pico2_cpu0_common.dtsi它通过chosen节点指定了zephyr,sram、zephyr,flash、zephyr,consoleuart0等关键资源并逐一使能了uart0115200 波特率、i2c0/i2c1标准速率、adc、pwm、timer0、wdt0、vreg、rng与 USB 设备控制器usbd。而 rpi_pico2_common.dtsi 则定义了 26 引脚排针连接器raspberrypi,pico-header的 GPIO 映射以及 4 MB Flash 的地址空间0x10000000起始、DT_SIZE_M(4)大小。三、支持的 Zephyr 功能与默认引脚映射3.1 支持的硬件功能板级支持的功能由 Zephyr 的 board-supported-hw 机制声明详见板级文档的 Supported Features 小节。结合板级默认配置文件 rpi_pico2_rp2350a_m33_defconfig默认使能的 Kconfig 选项包括CONFIG_SERIAL/CONFIG_UART_CONSOLE/CONFIG_UART_INTERRUPT_DRIVEN串口与控制台CONFIG_GPIOGPIO 驱动CONFIG_CLOCK_CONTROL时钟控制CONFIG_RESET复位控制CONFIG_CONSOLE控制台CONFIG_BUILD_OUTPUT_HEX/CONFIG_BUILD_OUTPUT_UF2同时产出 HEX 与UF2烧录文件UF2 正是拖拽式烧录所依赖的格式CONFIG_USE_DT_CODE_PARTITION使用设备树中的代码分区code partition3.2 引脚映射Connections and IOsPico 2 的默认引脚映射与第一代 Pico 完全一致可参考 rpi_pico 板级文档中的 Pin Mapping 章节即rpi_pico_pin_mapping锚点。Zephyr 默认外设映射为UART0_TXGP0UART0_RXGP1I2C0_SDAGP4I2C0_SCLGP5I2C1_SDAGP6I2C1_SCLGP7SPI0_RXGP16SPI0_CSNGP17SPI0_SCKGP18SPI0_TXGP19ADC_CH0GP26ADC_CH1GP27ADC_CH2GP28ADC_CH3GP29RP2350 的外设可通过设备树DTS重新路由到不同的引脚具体可用的路由组合请参考官方数据手册。在 rpi_pico2_cpu0_common.dtsi 中可以看到这些默认引脚的 pinctrl 引用如uart0_default、spi0_default、i2c0_default、adc_default、pwm_ch4b_default实际 pinmux 定义位于 rpi_pico2-pinctrl.dtsi。四、编程与调试Programming and DebuggingPico 2 的整体烧录与调试流程与rpi_pico板相同详细说明请参见 rpi_pico 板级文档的 Programming and Debugging 章节。需要注意的一点是OpenOCD 支持需要使用 Raspberry Pi 官方维护的 fork 版本 OpenOCD社区版 OpenOCD 的配置可能不完整。4.1 支持的烧录/调试工具链从 board.cmake 可以看到该板为多个 runner 预配置了参数Runner配置参数openocd--cmd-pre-init source [find target/rp2350.cfg]Arm 构建或source [find target/rp2350-riscv.cfg]RISC-V 构建默认适配器接口为cmsis-dap可通过变量RPI_PICO_DEBUG_ADAPTER覆盖probe-rs--chipRP235xjlink--deviceRP2350_M33_0uf2--board-idRP2350pyocd--targetrp2350默认的调试器与烧录器均为openocdboard_set_debugger_ifnset(openocd)/board_set_flasher_ifnset(openocd)。此外support/openocd.cfg 中定义了一个辅助过程set_adapter_speed_if_not_set用于在适配器未设置速度时自动配置为 5000 kHz——这是因为 Raspberry Pi 的 OpenOCD fork 默认不会像社区版那样自动设置适配器速度。关于RPI_PICO_DEBUG_ADAPTER变量其默认值为cmsis-dap会被拼接到 OpenOCD 的source [find interface/${RPI_PICO_DEBUG_ADAPTER}.cfg]命令中因此该变量应赋值为调试适配器配置文件的文件名如raspberrypi-swd、jlink等。该变量的值会被缓存若在west build时已设置后续执行west flash/west debug时可省略。4.2 构建并烧录 blinky 示例以经典的 blinky 应用为例Pico 2 的 Arm Cortex-M33 目标完整命令如下west build -b rpi_pico2/rp2350a/m33 samples/basic/blinky west flash --openocd /usr/local/bin/openocd其中--openocd参数显式指定了 fork 版 OpenOCD 的路径例如由pico_setup.sh脚本安装到的/usr/local/bin/openocd。提示blinky示例目前尚未在 Pico 2W 上得到支持原因与 Pico 1 代相同——板载 LED 对应的 GPIO 被 Wi-Fi 芯片占用可参考 rpi_pico 板级文档 中关于 GPIO 23/24/25/29 被 Infineon 模块占用的说明。Pico 2W 用户应改用wifi-shell示例来验证网络连接。4.3 使用 UF2 拖拽烧录Pico 2 延续了 Pico 系列最便捷的烧录方式UF2 拖拽烧录。默认构建会自动生成build/zephyr/zephyr.uf2文件对应CONFIG_BUILD_OUTPUT_UF2y。按住板上的BOOTSEL按钮上电板子会以 USB 大容量存储设备的形式出现在宿主机上将zephyr.uf2拖入或复制到该设备即可完成烧录无需任何 SWD 适配器。五、Pico 2W Wi-Fi 固件准备Wi-Fi Firmware SetupPico 2W 板载的Infineon CYW43439芯片需要专有的固件firmware与 CLMCountry Localization Module国家/地区本地化模块文件才能正常工作。因此在构建任何 Pico 2W 应用之前必须先获取这些 Wi-Fi 固件 blob。在 Zephyr 工作区中执行以下命令west blobs fetch hal_infineon该命令会从 Infineon 的仓库下载所需的固件文件主要包括43439A0.binCYW43439 的 Wi-Fi 固件43439A0.clm_blob国家/地区本地化数据此命令每个工作区只需执行一次。如果没有这些 blob构建会在 CMake 阶段因缺少固件文件而报错失败。建议在west update之后再执行该命令以确保 hal_infineon 模块已被正确拉取到工作区。六、构建 Wi-Fi 应用Pico 2W获取 blob 之后即可构建 Wi-Fi 应用。官方推荐的验证示例是wifi-shellsamples/net/wifi/shellwest build -b rpi_pico2/rp2350a/m33/w samples/net/wifi/shell west flash --openocd /usr/local/bin/openocd注意目标板标识为rpi_pico2/rp2350a/m33/w——末尾的/w后缀代表 Pico 2W 变体对应 board.yml 中的wvariant。从 Pico 2W 的设备树 rpi_pico2_rp2350a_m33_w.dts 可以看到 Wi-Fi 子系统的底层接线细节PIO SPI 连接CYW43439 通过pio0_spi0compatible 为raspberrypi,pico-spi-pio接入使用 GP25 作为片选、GP29 作为时钟、GP24 作为数据线SPI 最大频率 10 MHz工作在半双工模式Wi-Fi 节点compatible 为infineon,airoc-wifi通过wifi-reg-on-gpiosGP23、bus-select-gpiosGP24、wifi-host-wake-gpiosGP24控制上电、总线选择与主机唤醒GPIO 扩展cyw43_gpiocompatible 为infineon,cyw43-gpio提供 3 个额外 GPIO 通道可用于控制板载 RGB LED 等。构建完成后烧录到板子即可通过串口进入 Wi-Fi shell执行扫描、连接等网络操作。七、构建注意事项与常见问题选择正确的目标标识Pico 2 的完整目标名包含 CPU 集群与变体信息例如rpi_pico2/rp2350a/m33Arm Cortex-M33 版本rpi_pico2/rp2350a/hazard3RISC-V Hazard3 版本rpi_pico2/rp2350a/m33/wPico 2WWi-Fi其余如.../m33/mcuboot为 MCUboot 引导相关变体单核限制Zephyr 目前仅使用 RP2350 的一个核心第二个核心无论 Arm 还是 RISC-V暂不可用。OpenOCD 版本务必使用 Raspberry Pi 的 fork 版 OpenOCD可借助pico_setup.sh安装并可在west flash时通过--openocd 路径指定。Wi-Fi 固件缺失构建 Pico 2W 应用前先执行west blobs fetch hal_infineon否则 CMake 会因缺少43439A0.bin/43439A0.clm_blob报错。八、参考资料Pico 2 板级文档本文所依据的官方板级说明rpi_pico 板级文档Pico 1 代的编程调试、引脚映射与 PIO 细节板级设备树M33 与 板级设备树Hazard3板级变体定义board.cmake各 runner 的参数配置wifi-shell 示例Raspberry Pi Pico 2 开发板外观以上为 Zephyr 环境下 Pico 2 / Pico 2W 开发的完整指引。只要按步骤准备好工具链与 Wi-Fi 固件即可在 Arm 与 RISC-V 两种架构间自由切换快速完成从 blinky 到无线联网应用的开发迭代。赞分享操作系统嵌入式RTOS物联网【免费下载链接】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 下 Nordic Thingy:53 开发板移植指南nRF5340 双核构建、烧录与调试Zephyr 下 Nordic Thingy:53 开发板移植指南nRF5340 双核构建、烧录与调试 Thingy:53 是 Nordic Semicond操作系统嵌入式RTOS物联网Zephyr 移植指南MikroE MINI-M4 for STM32 开发板的构建、烧录与调试Zephyr 移植指南MikroE MINI M4 for STM32 开发板的构建、烧录与调试 MINI M4 for STM32 是 MikroE 推出的操作系统嵌入式RTOS物联网Zephyr 开发指南Infineon CY8CPROTO-062-4343WPSOC 6 Wi-Fi BT 原型开发套件的构建、烧录与调试Zephyr 开发指南Infineon CY8CPROTO 062 4343WPSOC 6 Wi Fi BT 原型开发套件的构建、烧录与调试 本指南以 Z操作系统嵌入式RTOS物联网上一篇ESP-IDF项目中ESP32-P4驱动MIPI DSI ILI9881C屏幕的常见问题解析下一篇超详细ESP-IDF中文文档本地化构建指南从环境配置到离线查阅全流程创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考