
Zephyr 支持 FoBE Quill nRF52840 Mesh 开发板硬件资源、UF2 烧录、SWD 调试与实战验证【免费下载链接】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 中的quill_nrf52840_mesh板级支持包为核心系统讲解 FoBE Quill nRF52840 Mesh 开发板nRF52840 SoC SX1262 LoRa 收发器在 Zephyr 中的完整使用流程从设备树资源映射、默认配置到 UF2 免调试器烧录、J-Link/BlackMagic Probe 外部调试以及用 blinky 与 shell 示例验证板子工作正常的实战步骤。读完本文你可以独立完成该板在 Zephyr 上的构建、烧录、调试与外设验证。一、硬件概览nRF52840 SX1262 的物联网双无线平台FoBE Quill nRF52840 Mesh 是一款面向物联网解决方案的紧凑型开发平台核心是 Nordic 的高端多协议 SoCnRF52840并集成了 Semtech 超低功耗亚GHz 射频收发器SX1262采用 SiP 封装技术。这一组合为物联网应用提供了综合无线连接方案支持Bluetooth 5、Thread、Zigbee、IEEE 802.15.4 与 LoRa等协议。除双无线射频外板上还有这些硬件资源电池充电器与专用电源路径管理电路超低静态电流 DC-DC 转换器板级设备树中通过 nRF52840 的 REG1 寄存器强制启用 DC-DC 模式1.14 英寸彩色 IPS 显示屏用户可编程 LED 与按键MFPMulti-Function Port扩展连接器可反插的 USB-C 接口与用于扩展的排针座。Zephyr 对该板的资源声明板级支持包的元数据见 board.yml厂商fobe、SOCnrf52840与硬件能力描述文件 quill_nrf52840_mesh.yaml。该文件声明板级资源为RAM 256 KB、Flash 1024 KB、架构arm支持的工具链为zephyr与gnuarmembZephyr 驱动层可用的接口包括驱动类别说明adc板载 ADC可用于电池电压分压检测bluetoothnRF52840 BLE 射频counter通用计数器gpio通用 GPIO含 MFP 连接器映射loraSX1262 LoRa 驱动lora0别名i2c/spiI2C0 与 SPI2/SPI3i2sI2S 接口pwmPWM0驱动 PWM LEDusbdUSB DeviceCDC-ACM 串口控制台watchdog看门狗watchdog0别名netif:openthreadOpenThread 网络接口IEEE 802.15.4板级 Kconfig 通过 Kconfig.quill_nrf52840_mesh 选择 SOC 变体SOC_NRF52840_QIAA与设备树中引用的nordic/nrf52840_qiaa.dtsi保持一致。二、设备树解析板级资源如何映射到 Zephyr 驱动板级设备树入口是 quill_nrf52840_mesh.dtscompatible fobe,quill-nrf52840-mesh全部外设细节集中在 quill_nrf52840_mesh_common.dtsi 中该文件还引入了 UF2 分区布局 nrf52840_partition_uf2_sdv7.dtsi——这正是后文 UF2 烧录能默认生效的基础。LED 与 PWM LEDquill_nrf52840_mesh_common.dtsi#L23-L43 定义了两个 GPIO LED 和一个 PWM LEDled0标签 Blue LEDGPIO1.15低电平点亮led1标签 Backlight LEDGPIO0.27低电平点亮同时映射为backlight别名pwm_led0由 PWM0 通道 0 驱动周期 20 ms、极性反转。aliases节点同时提供led0、pwm-led0、mcuboot-led0、backlight等别名L116-L124这些别名是samples/basic/blinky等示例直接找到 LED 的依据。用户按键buttons节点定义了一个gpio-keys按键button0标签 USR Button连接在 GPIO1.10上拉、低电平有效并映射为输入事件码INPUT_KEY_0同时提供sw0别名。SX1262 LoRa 收发器LoRa 是这块板的核心卖点之一。在 quill_nrf52840_mesh_common.dtsi#L149-L169 中lora0节点挂载在 SPI2 总线上compatible semtech,sx1262关键控制信号如下信号GPIO说明片选 CSGPIO1.1spi2的cs-gpios上拉、低电平有效RESETGPIO1.6上拉、低电平有效BUSYGPIO1.4下拉、高电平有效RX enableGPIO0.25下拉、高电平有效DIO1GPIO1.2下拉、高电平有效DIO2—配置为 TX enabledio2-tx-enableDIO3—TCXO 供电电压 1.8 VSX126X_DIO3_TCXO_1V8SPI 时钟上限 2 MHzTCXO 上电启动延迟 2 ms。对应的 SPI2 引脚复用SCK0.23、MOSI0.21、MISO0.19见 quill_nrf52840_mesh-pinctrl.dtsi#L56-L71。设备树别名下通过lora0 lora0;暴露给 LoRa 驱动子系统。ST7789V 显示屏显示屏通过 SPI3 以 MIPI-DBI4 线 SPI模式驱动节点st7789v_tftcompatible sitronix,st7789v见 L59-L96声明了完整的初始化参数135×240 分辨率、RGB565 像素格式、2 MHz 最高时钟、偏移量x-offset 52、y-offset 40、VCOM/gamma/porch 等厂商寄存器序列。此外还有两个 GPIO 电源域disp_pwr显示屏电源GPIO0.7 控制上拉、低电平有效启动延迟 5 msperi_reg外设电源域GPIO1.3 控制高电平有效启动延迟 5 ms。chosen中将zephyr,display指向st7789v_tft应用代码可直接通过zephyr,display选择器使用。电池电压检测vbatt节点L108-L113使用voltage-divider驱动配合 ADC 通道 3分压网络为 1 MΩ 输出 / 2.5 MΩ 全阻值即 1 MΩ 1.5 MΩ对应 2:1 分压比用于读取电池电压。电源与系统级配置reg1强制NRF5X_REG_MODE_DCDC模式对应文档提到的超低静态电流 DC-DC 转换器uicr { gpio-as-nreset; }将 nRESET 引脚配置为 GPIO这通常用于配合外部调试与复位流程chosen中zephyr,ieee802154 ieee802154;将板载 802.15.4 射频声明为默认无线接口支撑 Thread/Zigbee/OpenThread 网络栈yaml 中netif:openthread能力与此呼应。MFP 扩展连接器gpio-map 虚拟 GPIO 控制器MFP多功能端口连接器是 Quill 系列的重要扩展能力。fobe_quill_connector.dtsi 定义了一个compatible fobe,quill-header的连接器节点通过gpio-map把 20 个引脚D0–D13、A0–A5映射到具体的 nRF52840 GPIO 上使第三方如 Arduino 兼容库可以通过统一的 GPIO 编号访问引脚文件末尾还把连接器别名到quill_spi/quill_i2c/quill_serial/quill_adc分别对应spi2、i2c0、uart0、adc。USB CDC-ACM 串口控制台该板默认将控制台挂在 USB 上。Kconfig.defconfig 引入公共片段boards/common/usb/Kconfig.cdc_acm_serial.defconfig而 quill_nrf52840_mesh_common.dtsi#L215 包含 boards/common/usb/cdc_acm_serial.dtsi该文件把zephyr,console、zephyr,shell-uart、zephyr,uart-mcumgr、蓝牙监控串口等全部 chosen 指向board_cdc_acm_uart挂在zephyr_udc0下。这意味着无需物理 UART 线缆插 USB-C 即可在/dev/ttyACM*上获得控制台与 Shell这也是后文调试示例中minicom -D tty_device -b 115200能工作的原因UART0 本身在 pinctrl 中复用为 P1.12/TX、P1.11/RX速率 115200见 quill_nrf52840_mesh_common.dtsi#L127-L133。三、默认板级配置defconfig要点quill_nrf52840_mesh_defconfig 中启用了配置项作用CONFIG_ARM_MPUy启用 ARM MPU 内存保护CONFIG_HW_STACK_PROTECTIONy硬件栈保护CONFIG_GPIOy/CONFIG_SERIALy/CONFIG_CONSOLEy基础 GPIO 与串口控制台CONFIG_POWER_DOMAINy、CONFIG_PM_DEVICEy、CONFIG_PM_DEVICE_POWER_DOMAINy设备电源管理与 GPIO 电源域服务于显示屏disp_pwr等电源域节点CONFIG_BUILD_OUTPUT_UF2y默认直接产出 UF2 镜像适配板上 FoBE nRF52 BootloaderCONFIG_USE_DT_CODE_PARTITIONy按设备树声明的 UF2 分区SDV7 布局定位代码分区CONFIG_BUILD_OUTPUT_UF2y与引入的nrf52840_partition_uf2_sdv7.dtsi分区文件共同解释了文档中构建产物为zephyr/zephyr.uf2这一现象构建系统默认生成的就是 UF2 格式镜像并自动映射到 Bootloader 期望的 flash 偏移。另外 pre_dt_board.cmake 追加了EXTRA_DTC_FLAGS -Wno-unique_unit_address_if_enabled用于抑制 nRF52840 平台power40000000/clock40000000/bprot40000000与acl4001e000/flash-controller4001e000这类地址重叠告警——这是 DTC 编译层面的板级适配细节。四、编程与烧录路径一UF2 烧录免调试器Quill nRF52840 Mesh 出厂预置FoBE nRF52 BootloaderFoBE 开源的 nRF52 系列 Bootloader 项目支持UF2格式烧录。UF2 是 Microsoft 定义的 USB Mass Storage 烧录格式优点是操作极简但不支持调试。操作流程用 USB 线连接 Quill 的 USB 口到主机双击复位键进入 Bootloader主机上会出现名为FOBEBOOT的 mass storage 设备通过命令行或文件管理器把构建产物zephyr/zephyr.uf2复制到该存储设备根目录例如 Linux 下挂载点通常是/media/$USER/FOBEBOOTWindows 下为盘符根目录板子检测到镜像后自动复位并启动新应用。配合 defconfig 中默认开启的CONFIG_BUILD_OUTPUT_UF2y普通west build后zephyr/zephyr.uf2就已经存在无需任何额外转换步骤。路径二外部调试器SWD需要调试时不经过 Bootloader而是使用外部调试探头将 SWD 调试器的 SWDIO/SWCLK 连接到板上的 SWD 测试点。Zephyr 同时支持 Segger J-Link 与 BlackMagic Probe按 Zephyr 文档中 J-Link 外部调试探头章节安装配置软件即可。板级支持包在 board.cmake 中注册了完整的 runner 集合并给出各自的参数Runner参数说明uf2--board-idnRF52840-FoBEF1101-rev1aUF2 烧录board-id 精确匹配 FoBE 板型jlink--devicenRF52840_xxAA --speed4000J-Link 烧录/调试nrfjprog--nrf-familyNRF52Nordic 官方命令行工具pyocd--targetnrf52840 --frequency4000000pyOCD 调试openocd/nrfutil/blackmagicprobe使用公共 cmake 片段默认值见boards/common/下对应片段因此west flash默认 runneruf2开箱即用需要调试时切换-t jlink或blackmagicprobe、pyocd等即可。五、构建与烧录实操标准构建与烧录构建与烧录流程与 Zephyr 其他板相同。以 hello_world 为例$ west build -p -b quill_nrf52840_mesh samples/hello_world $ west flash由于 UF2 是默认 runnerwest flash在板子处于 Bootloader 状态下会直接把镜像写入FOBEBOOT盘也可以随时手动拖拽zephyr/zephyr.uf2完成烧录。通过 USB 观察输出的注意事项使用外部调试器直接启动应用时不经过 Bootloader 的 USB 枚举路径USB CDC-ACM 接口需要一定初始化时间。如果文本在 USB 串口就绪前就开始打印输出会丢失。解决方式是增加启动延迟$ west build -p -b quill_nrf52840_mesh samples/hello_world -DCONFIG_BOOT_DELAY5000 $ west flashCONFIG_BOOT_DELAY5000让应用在 main 之前延迟 5 秒保证 USB CDC-ACM 先完成枚举。同时用终端程序监听板子对应的串口端口$ minicom -D tty_device -b 115200将tty_device替换为板子实际出现的端口例如 Linux 下的/dev/ttyACM0。六、调试J-Link按 Zephyr 文档中 J-Link 外部调试探头章节安装配置驱动软件后即可对板子进行调试BlackMagic Probe同样受支持接线 SWD 后即可作为调试器使用。以 hello_world 为例构建并进入调试会话$ west build -p -b quill_nrf52840_mesh samples/hello_world $ west debug -b quill_nrf52840_meshwest debug会使用默认/当前选定的调试 runner 启动 GDB 会话J-Link 与 BlackMagic Probe 均可作为-t指定的 runner对应参数已在board.cmake中配置好。七、验证板级支持是否正常工作官方文档推荐两个最小验证示例均为可直接buildflash的现成 sample。测试 LEDblinky$ west build -p -b quill_nrf52840_mesh samples/basic/blinky $ west flashblinky 示例通过led0别名驱动板载蓝色 LED即设备树中的led_0。LED 闪烁说明 GPIO、PWM若使用pwm-led0与 Zephyr 主循环在该板上工作正常。测试 USB 上的 Shellshell_module$ west build -p -b quill_nrf52840_mesh samples/subsys/shell/shell_module $ west flash该示例验证 USB CDC-ACM 上的 Shell 接口烧录后通过minicom -D /dev/ttyACM0 -b 115200或任何串口终端工具连接应能看到 Zephyr Shell 提示符并可执行命令。这一路径同时验证了 USB Device、CDC-ACM 控制台与设备树中zephyr,shell-uartchosen 配置的完整性。八、板级支持文件清单下表汇总本主题涉及的关键仓库路径便于进一步深入文件作用boards/fobe/quill_nrf52840_mesh/doc/index.rst板级官方文档本文主体boards/fobe/quill_nrf52840_mesh/board.yml板名/厂商/SOC 元数据boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh.yamlRAM/Flash/架构与支持的驱动列表boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh.dts板级设备树入口boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh_common.dtsiLED/按键/显示屏/LoRa/电源域等全部外设定义boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh-pinctrl.dtsiUART0/I2C0/PWM0/SPI2/SPI3 引脚复用含 sleep 态boards/fobe/quill_nrf52840_mesh/fobe_quill_connector.dtsiMFP 连接器 gpio-map 与总线别名boards/fobe/quill_nrf52840_mesh/board.cmake各 runner 参数与公共片段引入boards/fobe/quill_nrf52840_mesh/quill_nrf52840_mesh_defconfig默认配置MPU/UF2 输出/分区boards/fobe/quill_nrf52840_mesh/Kconfig.defconfig默认引入 USB CDC-ACM 串口控制台boards/common/usb/cdc_acm_serial.dtsiCDC-ACM 控制台公共设备树片段dts/vendor/nordic/nrf52840_partition_uf2_sdv7.dtsiUF2 (SDV7) flash 分区布局九、小结quill_nrf52840_mesh板级支持包在 Zephyr 中提供了一条完整的开发闭环设备树完整映射了 nRF52840 的 UART/I2C/PWM/SPI/ADC/USB、ST7789V 显示屏、SX1262 LoRa 射频、电池电压检测与 MFP 扩展连接器defconfig 默认产出 UF2 镜像配合板上 Bootloader 实现双击复位即烧录需要调试时board.cmake已为 J-Link、nrfjprog、pyocd、OpenOCD 与 BlackMagic Probe 配好参数。用 blinky 与 shell_module 两个示例即可完成硬件验证之后即可在同一块板上开发蓝牙、LoRa 与 OpenThread 等物联网应用。【免费下载链接】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),仅供参考