ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

Zephyr 中的 Adafruit QT Py RP2040 开发板支持:硬件特性、引脚映射与 UF2 烧录实践

Zephyr 中的 Adafruit QT Py RP2040 开发板支持:硬件特性、引脚映射与 UF2 烧录实践 Zephyr 中的 Adafruit QT Py RP2040 开发板支持硬件特性、引脚映射与 UF2 烧录实践【免费下载链接】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/zephyrZephyr 已原生支持 Adafruit QT Py RP2040 这块基于 RP2040 SoC 的超小尺寸开发板。本文基于 Zephyr 仓库中该开发板的官方文档与配套设备树源码系统讲解其硬件能力、默认外设引脚映射、通过 DTS 修改引脚路由的方法以及利用 UF2 文件免适配器拖拽烧录的完整流程帮助读者在 Zephyr 中直接完成该开发板的应用构建与上板调试。开发板概述Adafruit QT Py RP2040 是 Adafruit 推出的一款小型、低成本、多功能开发板板级标识符为adafruit_qt_py_rp2040。其核心特点搭载 RP2040 SoC板载一颗 RGB NeoPixel 灯珠配备 USB 接口和 STEMMA QT 连接器借助板载 USB Bootloader无需任何外部适配器以“拖放文件”drag-and-drop的方式即可完成烧录。在 Zephyr 中该开发板由 boards/adafruit/qt_py_rp2040 目录完整定义核心文件包括文件作用adafruit_qt_py_rp2040.dts板级设备树chosen 节点、flash 分区、外设使能与引脚复用adafruit_qt_py_rp2040-pinctrl.dtsi默认 pinctrl 引脚复用组seeed_xiao_connector.dtsiSeeed XIAO 兼容连接器D0~D10引脚映射adafruit_qt_py_rp2040.yaml板级元数据架构、flash/RAM 容量、支持的外设列表board.cmake定义 UF2 烧录器的板级参数adafruit_qt_py_rp2040_defconfig默认 Kconfig 配置硬件规格官方文档列出的硬件配置如下双核 Arm Cortex-M0 处理器最高主频 133 MHz264 KB 片上 SRAM8 MB 板载 QSPI Flash支持 XIP执行于内存中11 个 GPIO 引脚4 路模拟输入2 个 UART 外设2 个 SPI 控制器2 个 I2C 控制器其中一路经 STEMMA QT 连接器引出16 路 PWM 通道USB 1.1 控制器支持 Host/Device 角色8 个可编程 I/OPIO用于实现自定义外设板载 RGB LED1 个看门狗定时器外设。板级元数据 adafruit_qt_py_rp2040.yaml 与上述规格一一对应flash: 8192KB、ram: 264KBarch: arm支持的运行工具链为zephyr和gnuarmemb。Zephyr 报告的开发板支持外设supported 列表包括uart、gpio、adc、i2c、spi、hwinfo、watchdog、pwm、flash、dma、counter、clock。构建时启用CONFIG_SOC_RP2040由 Kconfig.adafruit_qt_py_rp2040 中BOARD_ADAFRUIT_QT_PY_RP2040的 select 完成并复用 Zephyr 中 Raspberry Pi Pico 的 rp2040.dtsi 公共 SoC 描述。引脚映射与 DTS 路由RP2040 SoC 的外设可以路由到板上的不同引脚这类路由配置可以直接在 DTS 中修改。查看某个外设所有可行的路由方式需参阅 RP2040 数据手册。默认 Zephyr 外设引脚映射外设信号引脚UART1_TXP20UART1_RXP5I2C0_SDAP24I2C0_SCLP25I2C1_SDAP22I2C1_SCLP23SPI0_RXP4SPI0_SCKP6SPI0_TXP3这些默认映射在 adafruit_qt_py_rp2040-pinctrl.dtsi 中以 pinctrl 组的形式定义例如 UART1uart1_default: uart1_default { group1 { pinmux UART1_TX_P20; }; group2 { pinmux UART1_RX_P5; input-enable; }; };引脚复用常量如UART1_TX_P20来自 rpi-pico-rp2040-pinctrl.h 头文件其中枚举了 RP2040 各外设到各引脚的全部可选路由。若需要改用其他引脚只需在应用侧的 overlay 中重新定义 pinctrl 组并指向pinctrl-0无需改动板级默认文件。此外ADC 默认复用覆盖了 4 路模拟输入ADC_CH0_P26、ADC_CH1_P27、ADC_CH2_P28、ADC_CH3_P29。STEMMA QT 连接器与 XIAO 兼容引脚QT Py 兼容 Seeed XIAO 引脚排列。adafruit_qt_py_rp2040.dts 中定义了stemma_connector节点把 STEMMA QT 的两个引脚映射到 GPIO引脚 0 → P23SCL、引脚 1 → P22SDA正好对应 I2C1。seeed_xiao_connector.dtsi 则定义了xiao_d: connector节点compatible 为seeed,xiao-gpio提供 D0~D10 共 11 个逻辑引脚到 RP2040 GPIO 的映射XIAO 引脚RP2040 GPIOD0P29D1P28D2P27D3P26D4P24D5P25D6P20D7P5D8P6D9P4D10P3该文件还同时创建了三个 aliasxiao_spi→spi0、xiao_i2c→i2c0、xiao_serial→uart1便于 XIAO 生态的驱动和代码按统一 alias 访问外设。板级设备树的关键实现细节板级 DTS adafruit_qt_py_rp2040.dts 在通用 RP2040 SoC 描述之上做了若干板级定制值得在二次开发时留意chosen 节点指定控制台与 shell 均使用uart1默认波特率 115200见uart1节点的current-speedSRAM 使用sram0flash 控制器使用 QSPI 的ssi控制器并将代码分区指向code_partition。8 MB QSPI flash 分区flash0挂载在0x10000000。分区表中第一个 0x100 字节的second_stage_bootloader分区为 RP2040 的二阶段引导程序保留区只读Zephyr 镜像实际写入紧随其后的code-partition起始 0x100大小为 8MB - 0x100。这也解释了默认配置中CONFIG_USE_DT_CODE_PARTITIONy的作用——按设备树分区定位 flash 的可用范围。NeoPixel 电源使能与部分 Adafruit 开发板不同QT Py RP2040 的板载 NeoPixel 正极接在 GPIO 上而非正电源轨上以节省功耗因此设备树中用 GPIO hog 在初始化时将 P11 拉高点亮 LEDneopixel-power-enable { gpio-hog; gpios 11 GPIO_ACTIVE_HIGH; output-high; };板载 WS2812通过 PIO1 上的pio-ws2812节点驱动compatible 为worldsemi,ws2812-rpi_pico-pio数据信号在 P12PIO1_P12。DTS 中的注释特别说明必须放在 PIO1 上——放在 PIO0 会导致 GPIO hog 不生效。参数包括bit-waveform 3, 3, 4、chain-length 1单颗灯珠、frequency 800000、reset-delay 280颜色映射顺序为 G、R、B。该节点通过 aliasled-strip暴露可直接用 Zephyr 的led_stripAPI 控制。USB Devicezephyr_udc0: usbd节点使能板载 USB Device 控制器因此该板支持 Zephyr USB 设备类CDC、HID 等。其他使能节点timer、wdt0看门狗、adc、pio0、vreg均置status okay外部晶振xosc设置startup-delay-multiplier 64以确保晶振启动时序I2C0/I2C1 均按 FAST 速率I2C_BITRATE_FAST配置SPI0 时钟频率为 8 MHz。默认 Kconfig 配置adafruit_qt_py_rp2040_defconfig 提供了板上开箱即用的默认配置# Enable UART driver CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy # Enable console CONFIG_CONSOLEy CONFIG_UART_CONSOLEy # Enable reset by default CONFIG_RESETy # Enable clock control by default CONFIG_CLOCK_CONTROLy # Code partition needed to target the correct flash range CONFIG_USE_DT_CODE_PARTITIONy # Output UF2 by default, native bootloader supports it. CONFIG_BUILD_OUTPUT_UF2y要点串口控制台默认启用且为中断驱动配合zephyr,console uart1可在 P20TX上直接看到日志CONFIG_USE_DT_CODE_PARTITIONy使链接地址对准设备树中定义的code-partition避免覆盖 RP2040 二阶段引导区CONFIG_BUILD_OUTPUT_UF2y让构建流程自动产出 UF2 文件这正是该板唯一推荐的烧录载体。编程与调试UF2 烧录流程由于该开发板没有引出 SWD 调试引脚只能通过 UF2 文件烧录无法使用 SWD 调试器。具体流程构建应用。为该开发板构建应用后构建目录会默认生成build/zephyr/zephyr.uf2文件由CONFIG_BUILD_OUTPUT_UF2y保证。例如west build -b adafruit_qt_py_rp2040 应用目录进入 Bootloader 模式。按住板上的BOOTSEL按钮的同时给 QT Py RP2040 上电主机会识别出一个大容量存储设备RP2040 的 BOOTSEL UDF2。拖拽烧录。将zephyr.uf2文件拖放到该存储设备上RP2040 会自动完成 flash 写入并重启运行 Zephyr 应用。在 Zephyr 构建系统中UF2 转换由 board.cmake 配置board_runner_args(uf2 --board-idRPI-RP2)指定 UF2 容器使用RPI-RP2板级 IDRP2040 家族通用并通过 boards/common/uf2.board.cmake 将uf2设为默认 flasher。因此也可以使用 Zephyr 的烧录命令west flash --runner uf2在west flash路径下同样需要先把板子切到 BOOTSEL 模式或触发 RP2040 的 USB 重枚举使主机看到 RP2040 的 UF2 磁盘。关于调试的说明因为 SWD 引脚未引出J-Link/ST-Link 等硬件调试器在该板上不可用日常调试建议依赖 UART1 控制台P20 TX / P5 RX115200 波特率输出的日志或结合west flash的 UF2 流程反复迭代若需要更底层的分析RP2040 的 PIO 与 QSPI 等特性在设备树中均已使能可通过板级 overlay 进一步定制。小结QT Py RP2040 在 Zephyr 中的支持相当完整板级 DTS 精确表达了 XIAO/STEMMA QT 引脚兼容映射、8 MB QSPI flash 的引导分区布局、PIO 驱动的 NeoPixel、以及 USB Device 能力默认配置开箱即用地提供了串口控制台与 UF2 构建产物烧录则完全依赖 BOOTSEL UF2 拖拽这一零适配器流程。掌握以上内容后读者即可直接在该开发板上构建、烧录并迭代 Zephyr 应用并通过 DTS overlay 自由调整外设引脚路由。【免费下载链接】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),仅供参考
返回列表