尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Zephyr RTOS 中的 RAK4631 WisBlock 板级支持:硬件特性、引脚映射与 J-Link 烧录调试指南

Zephyr RTOS 中的 RAK4631 WisBlock 板级支持:硬件特性、引脚映射与 J-Link 烧录调试指南 Zephyr RTOS 中的 RAK4631 WisBlock 板级支持硬件特性、引脚映射与 J-Link 烧录调试指南【免费下载链接】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/zephyrRAK4631 是 RAK WisBlock 生态中的 LPWAN 核心模块WisBlock Core将 Nordic nRF52840支持 Bluetooth 5.0/BLE与 Semtech SX1262 LoRa 收发器合二为一成为面向远距离、低功耗物联网节点的通信解决方案。本文基于 Zephyr 仓库中 RAK4631 的板级支持文件boards/rakwireless/rak4631与官方板卡文档boards/rakwireless/rak4631/doc/index.rst完整介绍该板卡的硬件规格、Zephyr 设备树中的外设与引脚映射、支持的板级功能以及通过 Segger J-Link 完成烧录与调试的完整实操流程。读完本文你将能够从零开始构建并烧录 Zephyr 应用如 hello_world到 RAK4631并掌握其底层外设配置原理。RAK4631 模块概览与定位RAK4631 是 RAK WisBlock 体系中的核心模块WisBlock Core。WisBlock 采用积木式设计核心模块Core负责计算与无线通信各类传感器、显示、接口模块Sensor/IO 模块通过标准连接器叠加在 WisBlock Base 底板上。RAK4631 正是这个体系中的大脑与通信中枢。其最突出的特点是双无线架构Nordic nRF52840ARM Cortex-M4F 处理器主频 64 MHz支持 Bluetooth 5.0BLE同时提供丰富的外设接口Semtech SX1262新一代 LoRa 收发器相比上一代 SX127x 系列在相同发射功率下功耗更低这正是 RAK4631 被称为超低功耗通信方案的根基。将 BLE 与 LoRa 组合在同一核心模块上使得节点既可以借助 BLE 进行本地近场配置、OTA 升级或短距数据传输又可以通过 LoRa 实现数公里级、低功耗的远距离上行链路——这是典型的 LPWAN 物联网节点形态。Zephyr RTOS 对该模块提供了完整的板级支持板卡标识符为rak4631/nrf52840意味着可以在不修改任何板级配置的情况下直接构建并运行 Zephyr 应用。硬件规格根据板卡文档boards/rakwireless/rak4631/doc/index.rstRAK4631 的硬件特性如下处理器nRF52840 ARM Cortex-M4F64 MHz CPU 时钟USB1 个 Micro-AB USB OTG 主机/设备接口LoRaSemtech SX1262 低功耗、高增益 LoRa 收发器天线LoRa 天线与 BLE 天线各配备 iPEX 连接器接口I2C、UART、GPIO、ADC 等多种接口指示灯RAK5005 底板WisBlock Base上提供 2 颗用户 LED供电可通过 Micro USB、3.7V 可充电电池或 5V 太阳能电池板接口供电需要注意的是RAK4631 模块本身无法独立工作——要使用它至少需要一块WisBlock Base 底板如 RAK5005。底板既是 RAK4631 的供电来源也承担编程/调试接口USB 转串口与 SWD 调试的功能。Zephyr 文档中提到的 2 颗用户 LEDLED1/LED2实际位于 RAK5005 底板上而非核心模块上。从 Zephyr 的板卡定义boards/rakwireless/rak4631/board.yml可以看到官方登记的硬件资源flash 1024 KB、RAM 256 KB架构为 ARMCortex-M4F支持的 Zephyr 外设包括 adc、bluetooth、counter、gpio、i2c、pwm、usb_device、watchdog、lora。支持的 Zephyr 功能Zephyr 通过设备树Devicetree与 Kconfig 两层机制来声明板卡能力。RAK4631 在 Zephyr 中支持的外设由 boards/rakwireless/rak4631/rak4631_nrf52840.yaml 中的supported字段声明功能分类支持情况ADC支持nRF52840 SAADCBluetooth支持BLE 5.0Counter支持GPIO支持I2C支持两路 TWIPWM支持USB Device支持nRF USB 设备控制器Watchdog支持LoRa支持Semtech SX1262板卡默认固件配置位于 boards/rakwireless/rak4631/rak4631_nrf52840_defconfig启用了几项基础能力CONFIG_ARM_MPUy启用 ARM MPU内存保护单元CONFIG_HW_STACK_PROTECTIONy启用硬件栈保护CONFIG_USE_SEGGER_RTTy启用 Segger RTT配合 J-Link 使用CONFIG_GPIOy/CONFIG_SERIALy/CONFIG_CONSOLEy/CONFIG_UART_CONSOLEyGPIO、串口与 UART 控制台而在 boards/rakwireless/rak4631/Kconfig.rak4631 中BOARD_RAK4631选择SOC_NRF52840_QIAA即 nRF52840 QIAA 封装QFN-73与 QIA A 变体对应。连接与 IO 映射设备树解读Zephyr 对 RAK4631 的引脚定义集中在设备树源文件 boards/rakwireless/rak4631/rak4631_nrf52840.dts 与引脚控制文件 boards/rakwireless/rak4631/rak4631_nrf52840-pinctrl.dtsi 中。LED 引脚板卡文档中记录的 2 颗用户 LED位于 RAK5005 底板上在设备树中被声明为gpio-ledsLED1绿色 P1.3LED2蓝色 P1.4设备树中对应节点为leds { compatible gpio-leds; blue_led: led_2 { gpios gpio1 4 GPIO_ACTIVE_LOW; label Blue LED; }; green_led: led_1 { gpios gpio1 3 GPIO_ACTIVE_LOW; label Green LED; }; };注意两个 LED 均为GPIO_ACTIVE_LOW即低电平点亮。别名aliases中led0指向蓝色 LEDP1.4led1通过 Zephyr 的 LED API 惯例可对应绿色 LEDP1.3。应用代码使用DT_ALIAS或gpio_dt_spec即可轻松控制。串口UART设备树中chosen节点将系统控制台、shell、mcumgr 及蓝牙监控串口统一指向uart1chosen { zephyr,console uart1; zephyr,shell-uart uart1; zephyr,uart-mcumgr uart1; zephyr,bt-mon-uart uart1; zephyr,bt-c2h-uart uart1; };实际有两路 UART 被使能UART0nordic,nrf-uartTXP0.20、RXP0.19用于与底板上 USB 转串口芯片通信即文档所述的/dev/ttyACM0调试串口UART1nordic,nrf-uarteTXP0.16、RXP0.15作为默认控制台/Shell 输出通道。两路串口波特率均为 115200。引脚控制文件 rak4631_nrf52840-pinctrl.dtsi 中为每路 UART 都定义了default与sleep两组 pinctrl 状态其中 sleep 状态带有low-power-enable标志用于在低功耗模式下将引脚置于省电状态。I2C / SPI / QSPI 与 SX1262 LoRa 射频板载外设总线在设备树中配置如下I2C0nordic,nrf-twiSDAP0.13、SCLP0.14已使能可用于挂载 WisBlock 传感器模块I2C1nordic,nrf-twiSDAP0.24、SCLP0.25设备树中默认关闭status被注释掉因为I2C1 与 SPI1 存在引脚复用冲突二者不能同时使用SPI1nordic,nrf-spiSCKP1.11、MOSIP1.12、MISOP1.13片选 CS 为 P1.10低有效已使能QSPI已使能引脚 SCKP0.3、IO0P0.30、IO1P0.29、IO2P0.28、IO3P0.2、CSNP0.26用于连接外部 SPI NOR Flash。SX1262 LoRa 收发器通过 SPI1 挂载设备树节点为lora0lora: lora0 { compatible semtech,sx1262; reg 0; reset-gpios gpio1 6 GPIO_ACTIVE_LOW; busy-gpios gpio1 14 GPIO_ACTIVE_HIGH; rx-enable-gpios gpio1 5 GPIO_ACTIVE_LOW; dio1-gpios gpio1 15 GPIO_ACTIVE_HIGH; dio2-tx-enable; dio3-tcxo-voltage SX126X_DIO3_TCXO_3V3; tcxo-power-startup-delay-ms 5; spi-max-frequency 1000000; };各属性的实际含义属性引脚/取值说明reset-gpiosP1.6低有效SX1262 硬件复位引脚busy-gpiosP1.14高有效SX1262 忙状态检测引脚SPI 通信前需查询rx-enable-gpiosP1.5低有效接收通道使能配合 RF 开关dio1-gpiosP1.15高有效中断输出引脚用于收发完成/超时中断dio2-tx-enable—由 DIO2 控制 TX/RX 射频开关dio3-tcxo-voltageSX126X_DIO3_TCXO_3V3通过 DIO3 输出 3.3V 供电给 TCXO 晶振tcxo-power-startup-delay-ms5TCXO 上电稳定等待时间spi-max-frequency1000000SPI 时钟频率 1 MHz宏SX126X_DIO3_TCXO_3V3来自 dts/dt-bindings/lora/sx126x.h该文件在仓库中位于 include/zephyr/dt-bindings/lora/sx126x.h 对应的绑定目录下。这些配置与 Zephyr 的 LoRa 子系统subsys/lorawan及semtech,sx1262驱动drivers/lora 目录下的 sx126x 实现配合提供完整的 LoRa 收发送收发能力。lora0别名使得应用可通过DEVICE_DT_GET(DT_ALIAS(lora0))获取设备句柄。其他外设ADCadc已使能SAADC电源reg1配置为 DCDC 模式NRF5X_REG_MODE_DCDC以实现更优的转换效率UICRgpio-as-nreset将 GPIO 用作复位引脚与nfct-pins-as-gpios将 NFC 引脚释放为普通 GPIOUSBzephyr_udc0指向usbdnordic,nrf-usbd支持 USB 设备功能。编程与调试J-Link 烧录与调试完整流程硬件连接前提RAK4631 需插在 WisBlock Base 底板上底板提供 USB 调试口与 SWD 接口。板卡文档boards/rakwireless/rak4631/doc/index.rst明确要求连接Segger J-Link OB 调试器即底板板载的 J-Link OB它提供对 nRF52840 芯片的调试接口可使用 JLink 与芯片通信。第一步安装 J-Link 软件从 Segger 官网的 J-Link Software and Documentation Pack 下载对应 Linux 版本并安装确保JLinkExe可执行文件在系统 PATH 中可用Zephyr 的 west flash/debug 命令会调用它。第二步打开串口监视终端在 Linux 下调试串口设备节点为/dev/ttyACM0。可使用 minicom 监听输出$ minicom -D /dev/ttyACM0 -o参数说明-D /dev/ttyACM0指定串口设备-o不发送 modem 初始化字符串。连接参数必须设置为参数值波特率115200数据位8校验位None停止位1第三步构建并烧录 hello_world连接 RAK4631 到主机的 USB 调试口后即可构建并烧录 Zephyr 的hello_world示例samples/hello_world$ west build -b rak4631/nrf52840 samples/hello_world $ west flashwest build中的-b rak4631/nrf52840即板卡标识符。烧录由 boards/rakwireless/rak4631/board.cmake 中声明的 runner 完成board_runner_args(jlink --devicenRF52840_xxAA --speed4000) board_runner_args(pyocd --targetnrf52840 --frequency4000000) include(${ZEPHYR_BASE}/boards/common/nrfutil.board.cmake) include(${ZEPHYR_BASE}/boards/common/nrfjprog.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/openocd-nrf5.board.cmake)可以看到该板卡同时支持jlink、nrfutil、nrfjprog、pyocd、openocd-nrf5多种烧录方式其中 jlink runner 默认使用nRF52840_xxAA设备名与 4000 kHz 速度。默认 runner 由 west 环境决定通常为 jlink。烧录成功后终端应输出Hello World! rak4631_nrf52840其中rak4631_nrf52840是 Zephyr 板卡模型名来源于设备树的model属性RAKWireless RAK4631 WisBlock LPWAN Module with a Nordic NRF52840 SoC对应的 CONFIG_BOARD 字符串。第四步调试使用 Zephyr 标准的调试流程以 hello_world 为例$ west build -b rak4631/nrf52840 samples/hello_world $ west debugwest debug会启动 GDB 并连接 J-Link进入交互式调试会话支持断点、单步、内存查看等常规调试操作。板卡默认固件已启用CONFIG_USE_SEGGER_RTTy因此在调试会话中还可以配合 RTT Viewer 查看 RTT 日志作为串口控制台之外的补充输出通道。小结RAK4631 在 Zephyr 中是一个开箱即用的 BLE LoRa 双模 LPWAN 板卡设备树完整声明了 SX1262 LoRa 收发器SPI1 挂载、两路 UART、两路 I2C、QSPI、USB、ADC 等外设lora0、led0等别名简化了应用层开发。烧录调试链路以 Segger J-Link OB 为默认方案同时兼容 nrfutil、pyocd、openocd 等 runner。对于开发者而言掌握本文的引脚映射与设备树结构即可在此基础上为 RAK4631 编写 LoRaWAN 节点应用参见 samples/subsys 中的 LoRaWAN 相关示例、BLE 应用或复合应用并结合 RAK WisBlock 丰富的传感器模块快速搭建完整的物联网节点原型。【免费下载链接】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),仅供参考
返回列表