上构建、烧录与调试应用)
Zephyr RTOS 开发板指南在 RedBear BLE Nano 2nrf52_blenano2上构建、烧录与调试应用【免费下载链接】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 RTOS 官方开发板支持文档的技术指南聚焦于 boards/particle/nrf52_blenano2/doc/index.rst 所描述的RedBear BLE Nano 2nrf52_blenano2开发板。文章将带你完整了解这块以 Nordic nRF52832 SoC 为核心的 BLE 开发板的硬件资源、引脚连接、Zephyr 板级支持设备树、Kconfig、引脚复用配置并给出基于 DAPLink 调试板完成应用构建、烧录与调试的完整操作流程。读完本文你将能够独立使用 Zephyr 为 BLE Nano 2 开发并部署应用并理解板级支持包BSP在 Zephyr 中的组织方式。一、板卡概览可无缝替换 BLE Nano 的下一代开发板BLE Nano 2 是由 RedBear Labs现归入 Particle 生态仓库中板卡归属于boards/particle目录推出的开发板核心是 Nordic 新一代nRF52832 低功耗蓝牙BLESoC。这块板在设计上的最大特点是与第一代 BLE Nano 保持完全相同的封装与引脚排布drop-in 兼容即它被设计为 BLE Nano 的直接替换品老项目可以在不更改底板布局的前提下直接换用新板。从 Zephyr 仓库的板卡元数据可以看到其身份信息board.ymlname: nrf52_blenano2full_name: Redbear Labs Nano v2SoC 为nrf52832nrf52_blenano2.yamltype: mcu、arch: arm支持zephyr与gnuarmemb两套工具链。硬件规格资源规格SoCNordic nRF5283232 位 ARM Cortex-M4F带 FPU存储器512 kB Flash 64 kB RAM数字 I/O11 路UART1 路带硬件流控占用 4 个 I/O 引脚I2C1 路占用 2 个 I/O 引脚与现有支持板的共同点该板卡与同仓库其他 Particle 板卡如 boards/particle/particle_argon 系列一样遵循 Zephyr 标准的板卡目录结构boards/particle/nrf52_blenano2/ ├── Kconfig.defconfig # 板级 Kconfig 配置 ├── Kconfig.nrf52_blenano2 # 板级 Kconfig 定义BOARD_NRF52_BLENANO2 ├── board.cmake # 烧录运行器runner配置 ├── board.yml # 板卡元数据 ├── nrf52_blenano2.dts # 设备树源文件 ├── nrf52_blenano2-pinctrl.dtsi# 引脚复用pinctrl配置 ├── nrf52_blenano2.yaml # 板卡 YAML 标识 ├── nrf52_blenano2_defconfig # 默认 defconfig └── pre_dt_board.cmake # 设备树编译前的预处理配置二、支持的 Zephyr 特性通过文档中的zephyr:board-supported-hw::指令Zephyr 会自动为该板卡生成受支持的硬件特性列表。结合仓库中的实际配置文件可以确认以下特性在该板上已经开箱即用接口/特性设备树中的节点状态UART控制台uart0nordic,nrf-uartstatus okayI2Ci2c0nordic,nrf-twimstatus okayGPIOgpio0status okayGPIO 中断gpiotestatus okayLEDleds下的led0GPIO P0.11已定义看门狗wdt0别名watchdog0在 nrf52_blenano2.dts 中uart0与i2c0均被显式启用并绑定到 pinctrl 的默认/睡眠两组引脚配置uart0 { compatible nordic,nrf-uart; current-speed 115200; status okay; pinctrl-0 uart0_default; pinctrl-1 uart0_sleep; pinctrl-names default, sleep; }; i2c0 { compatible nordic,nrf-twim; status okay; pinctrl-0 i2c0_default; pinctrl-1 i2c0_sleep; pinctrl-names default, sleep; };在chosen节点中zephyr,console、zephyr,shell-uart、zephyr,bt-mon-uart与zephyr,bt-c2h-uart全部指向uart0这意味着串口控制台、Zephyr shell 以及蓝牙监控/主机通信HCI默认都复用了这一路 UART是开发 BLE 应用时十分常用的默认接线。默认的 nrf52_blenano2_defconfig 打开的基础配置包括CONFIG_ARM_MPUy # 启用 ARM MPU 内存保护 CONFIG_GPIOy # 启用 GPIO 驱动 CONFIG_SERIALy # 启用 UART 串口驱动 CONFIG_CONSOLEy # 启用控制台 CONFIG_UART_CONSOLEy # 控制台输出到 UART这些默认配置使得板卡上电后即可通过 UART 输出 Zephyr 启动日志与控制台信息。三、引脚连接与 IO 布局Pinout文档给出的 BLE Nano 2 引脚图与 DAPLink 板图如下所示DAPLink USB 板在整个开发流程中扮演转接棒dongle的角色它一端通过 USB 连接宿主机宿主机上会把 DAPLink 调试探针识别为一块USB 磁盘拖拽式烧录另一端则为 BLE Nano 2 供电——DAPLink 板上的 LDO 会把 USB 的 5V 稳压到 3.3V为 Nano v2 提供电源。关键引脚的设备树证据板卡对外宣称的1 路 UART 带硬件流控占用 4 个 I/O与1 路 I2C占用 2 个 I/O在 nrf52_blenano2-pinctrl.dtsi 中有精确的引脚定义功能信号引脚备注UART0TXP0.29串口发送UART0RXP0.30串口接收UART0RTSP0.02硬件流控请求发送UART0CTSP0.28硬件流控清除发送I2C0SDAP0.28与 UART CTS 共用引脚I2C0SCLP0.02与 UART RTS 共用引脚pinctrl { uart0_default: uart0_default { group1 { psels NRF_PSEL(UART_TX, 0, 29), NRF_PSEL(UART_RX, 0, 30), NRF_PSEL(UART_RTS, 0, 2), NRF_PSEL(UART_CTS, 0, 28); }; }; ... i2c0_default: i2c0_default { group1 { psels NRF_PSEL(TWIM_SDA, 0, 28), NRF_PSEL(TWIM_SCL, 0, 2); }; }; };值得注意的是I2C0 的 SDA 与 UART0 的 CTS 都位于 P0.28I2C0 的 SCL 与 UART0 的 RTS 都位于 P0.02。这 4 个 I/O 引脚在 UART带流控与 I2C 之间是互斥复用的——也就是说开发时不能同时使用带硬件流控的 UART 与 I2C二者只能择一启用这是设计引脚方案时必须牢记的约束。每个引脚复用组还提供了对应的_sleep状态如uart0_sleep、i2c0_sleep并启用了low-power-enable以便在低功耗场景下将引脚切换到低功耗模式。LED 与系统别名板卡上的唯一 LED 定义在设备树leds节点下GPIO P0.11并通过aliases提供led0与watchdog0两个别名方便示例程序直接引用aliases { led0 led0; watchdog0 wdt0; }; leds { compatible gpio-leds; led0: led_0 { gpios gpio0 11 0; label LED; }; };这意味着诸如blinky等依赖led0别名的示例可以直接运行而无需额外改动。Flash 分区布局设备树中还定义了完整的 Flash 分区方案nrf52_blenano2.dts与 MCUboot 启动流程兼容分区起始地址大小用途boot_partition0x000000000x800032 kBMCUboot 引导程序slot0_partition0x000080000x34000208 kB镜像槽位 0image-0slot1_partition0x0003c0000x34000208 kB镜像槽位 1image-1scratch_partition0x000700000xa00040 kB镜像暂存区image-scratchstorage_partition0x0007a0000x600024 kB应用存储区FCB/LittleFS/NVS其中storage_partition覆盖 Flash 末尾 0x7a000 到 0x7ffff 的区域供 FCB、LittleFS 或 NVS 文件系统使用。chosen节点中的zephyr,code-partition slot0_partition指定了应用镜像默认烧录到槽位 0。四、构建、烧录与调试4.1 环境准备nrf52_blenano2板卡支持zephyr与gnuarmemb两套工具链见 nrf52_blenano2.yaml。烧录与调试依赖pyOCD在 board.cmake 中板卡指定了 pyOCD 作为烧录运行器并显式声明目标芯片型号board_runner_args(pyocd --targetnrf52832) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)因此在构建前需要保证宿主机已安装pyocd可通过pip install pyocd安装Zephyr 构建系统会自动将其纳入烧录/调试流程。4.2 烧录Flashing烧录前需要完成如下硬件连接将BLE Nano 2正确地插接到DAPLink 板上将 DAPLink 板的 USB 口连接到电脑。⚠️警告务必注意安装 BLE Nano 2 时方向不能接反带有 VIN 与 GND 引脚的一侧应朝向 USB 连接器。接反会导致引脚对应关系错乱甚至可能损坏器件。连接就绪后即可按 Zephyr 常规流程构建并烧录应用。以hello_world示例为例在 Zephyr 仓库根目录下执行west build -b nrf52_blenano2 samples/hello_world west flashwest build -b nrf52_blenano2 samples/hello_world指定板卡为nrf52_blenano2构建hello_world示例west flash通过 pyOCD 经由 DAPLink 探针将生成的镜像烧录到板载 Flash 的slot0_partition对应zephyr,code-partition的指向。如果你没有使用west而直接用cmake等价命令为cmake -B build -DBOARDnrf52_blenano2 samples/hello_world cmake --build build cmake --build build --target flash构建完成后把生成的.hex镜像拖拽到宿主机上识别出的 DAPLink USB 磁盘也是一种可行的脱机烧录方式DAPLink 会以 USB 大容量存储设备形式出现。4.3 调试Debugging按上文方式将 BLE Nano 2 安装到 DAPLink 板上之后即可使用 Zephyr 的标准调试流程。以hello_world为例west build -b nrf52_blenano2 samples/hello_world west debugwest debug会调用 pyOCD 启动调试会话默认使用 GDB开发者可以在断点、单步、内存/寄存器查看等操作中调试应用。Zephyr 构建系统会依据 board.cmake 中配置的pyocdrunner 自动选择正确的调试工具链与目标nrf52832。4.4 验证串口控制台输出由于zephyr,console被绑定到uart0115200 波特率烧录hello_world后通过 USB 转串口工具连接板卡 UARTTXP0.29、RXP0.30注意交叉连接即可在串口终端以115200-8-N-1的参数看到*** Booting Zephyr OS build vX.Y.Z *** Hello World! nrf52_blenano2这也验证了板卡默认配置CONFIG_UART_CONSOLEy与控制台设备树节点的有效性。五、硬件连接注意事项总结电源BLE Nano 2 由 DAPLink 板上的 LDO 从 USB 5V 稳压至 3.3V 供电无需额外电源安装方向VIN/GND 引脚一侧必须朝向 USB 连接器否则无法正常工作引脚互斥UART带硬件流控与 I2C 共享 P0.02/P0.28 两个引脚二者不可同时启用默认控制台UART0P0.29/P0.30同时承载 console、shell 与 BLE HCI 通信开发 BLE 应用时可复用该串口输出协议日志通过zephyr,bt-mon-uart绑定。六、扩展阅读指引若希望深入了解该板卡在 Zephyr 中的完整实现可以在本仓库中继续查看nrf52_blenano2.dts板级设备树包含 chosen、别名、LED、UART/I2C 使能及 Flash 分区nrf52_blenano2-pinctrl.dtsi引脚复用pinctrl定义含默认与低功耗两组状态nrf52_blenano2_defconfig板级默认内核配置board.cmakepyOCD 烧录/调试运行器配置Kconfig.nrf52_blenano2板级 Kconfig 定义BOARD_NRF52_BLENANO2选择SOC_NRF52832_QFAA同目录下其他 Particle 板卡如boards/particle下的 particle_xenon、particle_boron 等可作对比参考。本文内容以 boards/particle/nrf52_blenano2/doc/index.rst 为骨架结合 Zephyr 仓库中该板卡的真实设备树、Kconfig 与 CMake 配置编写所有引脚号、分区地址与配置项均可通过上述源码路径核实。【免费下载链接】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),仅供参考