ARTICLE DETAIL

资讯详情

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

Zephyr 中的 Decawave DWM1001-DEV 开发板支持:从板级配置到 UWB 应用构建与烧录

Zephyr 中的 Decawave DWM1001-DEV 开发板支持:从板级配置到 UWB 应用构建与烧录 操作系统嵌入式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 RTOS 仓库中 boards/qorvo/decawave_dwm1001_dev/doc/index.rst 展开系统讲解 Qorvo原 DecawaveDWM1001-DEV 开发板在 Zephyr 中的支持情况从板级设备树DTS、引脚复用、Kconfig 配置到基于 J-Link OB 的构建、烧录与调试流程。读完本文你将能够独立完成该板卡的 hello_world 示例构建与烧录并理解其 UWB 无线定位模块 DW1000 在 Zephyr 中的驱动集成方式。板卡概述DWM1001 模块与开发板DWM1001-DEV 是 Decawave现已被 Qorvo 收购推出的超宽带UWB开发板。Zephyr 仓库中的 board.yml 将其标识为板卡名称decawave_dwm1001_dev全称 Decawave DWM1001厂商qorvo板载 SoCnrf52832DWM1001 模块本身集成了两块核心芯片Nordic nRF52832 蓝牙 SoC负责应用处理与 Decawave DW1000 UWB 收发器负责 IEEE 802.15.4 UWB 物理层通信。开发板在此基础上增加了电池连接器与充电电路支持电池供电与充电管理LED 与按键用户交互Raspberry-Pi 兼容排针便于与树莓派等主机对接USB 连接器供电与数据板载 J-Link OB提供 SWD 调试、虚拟串口Virtual COM Port与 Segger RTT 能力。从 decawave_dwm1001_dev.dts 可以看到其设备树模型声明为model Decawave DWM1001-DEV、compatible decawave,dwm1001这也是应用中通过 devicetree 匹配该板卡的关键标识。板级硬件资源从设备树看外设分布decawave_dwm1001_dev.dts 是理解该板卡能力的第一手资料。它基于 Nordicnrf52832_qfaa.dtsi展开并引入了独立的引脚复用描述文件 decawave_dwm1001_dev-pinctrl.dtsi。系统角色分配chosen 节点chosen { zephyr,console uart0; zephyr,shell-uart uart0; zephyr,uart-mcumgr uart0; zephyr,bt-mon-uart uart0; zephyr,bt-c2h-uart uart0; zephyr,sram sram0; zephyr,flash flash0; zephyr,code-partition slot0_partition; zephyr,ieee802154 ieee802154; };uart0同时承担控制台、shell、mcumgr 以及蓝牙监控/主机通信的角色波特率在 decawave_dwm1001_dev.dts 中固定为current-speed 115200。zephyr,ieee802154指向板载的 DW1000 节点表明该板卡在 Zephyr 中默认作为 802.15.4UWB无线节点使用。板载外设外设节点引脚/参数说明红色 LED 0led0_redP0.14低电平有效GPIO LED绿色 LED 1led1_greenP0.30低电平有效GPIO LED红色 LED 2led2_redP0.22低电平有效GPIO LED蓝色 LED 3led3_blueP0.31低电平有效GPIO LED红色 PWM LEDpwm_led0_redPWM0 通道 0P0.2220ms 周期极性反转可用于呼吸灯等 PWM 效果按键button0P0.2上拉 低电平有效映射为INPUT_KEY_0aliases节点将sw0、led0~led3、pwm-led0、watchdog0、accel0等别名导出以便 samples 直接引用。值得注意的是accel0 lis2dh12板载了一颗 ST LIS2DH12 加速度计挂在 I2C0 总线上地址0x19中断引脚为 P0.25。总线与外设配置UART0使用nordic,nrf-uart驱动默认与睡眠两套引脚配置I2C0使用nordic,nrf-twim时钟频率为I2C_BITRATE_FAST400 kHzSDA/SCL 位于 P0.29/P0.28启用上拉SPI1使用nordic,nrf-spiCS 为 P0.3SPI2使用nordic,nrf-spiCS 为 P0.17低有效其上挂载了核心的DW1000节点ADCstatus okay使能PWM0输出到 P0.22与红色 LED 2 复用启用极性反转UICR设置gpio-as-nreset启用 GPIO 作为复位控制GPIO / GPIOTE均使能支撑按键与中断功能。引脚复用的完整映射TX/RX/SCK/MOSI/MISO 等集中在 decawave_dwm1001_dev-pinctrl.dtsi 中且每个外设都同时提供default与sleep两套状态睡眠态启用low-power-enable以降低静态功耗——这体现了 Zephyr pinctrl 机制在低功耗场景下的典型用法。核心无线模块DW1000 UWB 收发器DWM1001 的亮点在于其 UWB 能力。设备树中 DW1000 节点如下位于 SPI2 上ieee802154: dw10000 { compatible decawave,dw1000; spi-max-frequency 8000000; int-gpios gpio0 19 GPIO_ACTIVE_HIGH; /* P0.19 中断 */ reset-gpios gpio0 24 GPIO_ACTIVE_LOW; /* P0.24 复位 */ status okay; reg 0; };该节点由 Zephyr 的 IEEE 802.15.4 驱动栈承载驱动实现在 drivers/ieee802154/ieee802154_dw1000.c配套的寄存器定义见 drivers/ieee802154/ieee802154_dw1000_regs.h。驱动的使能依赖 Kconfig 中的 IEEE802154 与 SPI 选项——在 Kconfig.defconfig 中可以看到config SPI default y depends on IEEE802154即只要启用了 IEEE802154 无线协议栈SPI 总线会自动开启以驱动 DW1000。这一设计保证了 DW1000 的 SPI 通信始终可用支撑 UWB 测距/定位应用的开发。默认软件配置与 Kconfig 选项板级 defconfig 文件 decawave_dwm1001_dev_defconfig 给出了板卡的默认软件配置# 使能 MPU CONFIG_ARM_MPUy # 使能 Segger RTT CONFIG_USE_SEGGER_RTTy # 使能 GPIO CONFIG_GPIOy # 使能 UART 驱动 CONFIG_SERIALy # 使能控制台 CONFIG_CONSOLEy CONFIG_UART_CONSOLEy CONFIG_RTT_CONSOLEy要点解读CONFIG_ARM_MPUy启用 ARM MPU为应用提供内存保护CONFIG_USE_SEGGER_RTTy与CONFIG_RTT_CONSOLEy由于板载 J-Link OB 支持 RTT控制台输出既可以通过 USB 虚拟串口CONFIG_UART_CONSOLE查看也可以通过 Segger RTT Viewer 查看二者同时可用CONFIG_GPIO、CONFIG_SERIAL、CONFIG_CONSOLE保证 LED、按键、串口控制台开箱即用。板卡选择由 Kconfig.decawave_dwm1001_dev 定义config BOARD_DECAWAVE_DWM1001_DEV select SOC_NRF52832_QFAA而 Kconfig.defconfig 中的config I2C / default SENSOR保证启用传感器框架时 I2CLIS2DH12 加速度计依赖随之开启。此外 board.yml 声明该板卡为arm架构 MCURAM 64 KB、Flash 512 KB对应 nRF52832 的 512KB Flash / 64KB RAM支持 Zephyr 与 GNU ARM Embedded 两套工具链。Flash 分区布局与 MCUboot 支持decawave_dwm1001_dev.dts 中定义了完整的 Flash 分区表支持 MCUboot 引导加载与固件升级分区起始地址大小标签boot_partition0x000000000xc00048 KBmcubootslot0_partition0x0000c0000x32000200 KBimage-0slot1_partition0x0003e0000x32000200 KBimage-1scratch_partition0x000700000xa00040 KBimage-scratchstorage_partition0x0007a0000x600024 KBstoragechosen中的zephyr,code-partition slot0_partition表明应用程序默认烧写到 slot0。这一布局与 Nordic 生态的 DFU固件升级流程一致若使用 MCUboot 进行 A/B 升级两个 200KB 的镜像槽位可以容纳大部分 Zephyr 应用。构建、烧录与调试环境准备J-Link 工具链DWM1001-DEV 板载 J-Link OB烧录与调试完全复用 Nordic nRF5x 的开发工具链。参考 doc/develop/flash_debug/nordic_segger.rst 完成以下安装Segger J-Link 软件包提供 J-Link 固件、桌面工具、SWD 调试、拖放烧录的 Mass Storage 设备、USB CDC ACM 虚拟串口、RTT 控制台与 Ozone 调试器nRF5x 命令行工具nrfjprog用于擦除、编程与复位目标芯片。安装完成后确认nrfjprog位于 PATH 中。Linux 下若使用虚拟串口可将当前用户加入dialout组并重新登录若系统装有 ModemManager建议先停止它systemctl stop ModemManager.service以免其向 TTY 设备发送 AT 指令干扰串口通信。查看串口输出原文档给出了使用 minicom 监听串口的示例$ minicom -D tty_device -b 115200其中tty_device替换为开发板的串口设备节点例如 Linux 下的/dev/ttyACM0波特率与设备树中uart0的current-speed 115200一致。也可以直接使用west的串口监视能力或其他终端工具。构建并烧录 hello_world以 samples/hello_world 为例构建并烧录$ west build -b decawave_dwm1001_dev samples/hello_world $ west flashwest build -b decawave_dwm1001_dev指定板卡west flash会自动选择可用的 runner 完成烧录。烧录完成后hello_world 会在串口上打印经典的 Hello World! 与 Zephyr 版本信息。支持的烧录与调试后端Runnersboard.cmake 声明了三种烧录后端及其参数board_runner_args(jlink --devicenRF52832_xxAA --speed4000 --reset-after-load) board_runner_args(pyocd --targetnrf52832) set(OPENOCD_NRF5_SUBFAMILY nrf52) 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)J-Link默认优先以nRF52832_xxAA为目标器件SWD 时钟 4000 kHz烧录后自动复位运行pyOCD目标为nrf52832OpenOCD使用 nRF52 子系列配置。三者均可通过west flash/west debug使用也可以绕过 runner 直接使用 nrfjprog 手动烧录$ nrfjprog --eraseall -f nrf52 $ nrfjprog --program build/zephyr/zephyr.hex -f nrf52 $ nrfjprog --reset -f nrf52调试与 RTT 输出由于板载 J-Link OB除 SWD 单步调试外还可以使用 Segger RTT 查看控制台日志配合 defconfig 中的CONFIG_USE_SEGGER_RTTy与CONFIG_RTT_CONSOLEy。这在虚拟串口被占用或需要低延迟日志时尤为实用。west debug可启动 J-Link 调试会话如 Ozone / GDB 后端具体配置沿用 nordic_segger 文档中的通用 Nordic 流程。扩展阅读板卡设备树与分区decawave_dwm1001_dev.dts引脚复用decawave_dwm1001_dev-pinctrl.dtsi板级 KconfigKconfig.decawave_dwm1001_dev、Kconfig.defconfig构建/烧录后端board.cmakeDW1000 无线驱动drivers/ieee802154/ieee802154_dw1000.c 与 寄存器定义Nordic J-Link 工具链安装doc/develop/flash_debug/nordic_segger.rstQorvo 板卡系列索引boards/qorvo/index.rst需要注意的是以上构建与烧录流程适用于当前仓库版本所支持的 Zephyr 工具链环境实际使用时请以仓库内west.yml声明的版本依赖为准。赞分享操作系统嵌入式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点击查看免费下载相关推荐RIOT OS 支持 Decawave DWM1001 板卡硬件配置、烧录流程与 UART 串口实战RIOT OS 支持 Decawave DWM1001 板卡硬件配置、烧录流程与 UART 串口实战 本文基于 RIOT 仓库中 boards/dwm1001物联网嵌入式操作系统实时系统Decawave DWM3001CDK 开发板 Zephyr 使用指南板载资源、环境配置与烧录调试Decawave DWM3001CDK 开发板 Zephyr 使用指南板载资源、环境配置与烧录调试 Decawave DWM3001CDK 是 QorvoD操作系统嵌入式RTOS物联网Zephyr 中 RSK-RX140 开发板支持详解从板级硬件到 E2 Lite 烧录与调试Zephyr 中 RSK RX140 开发板支持详解从板级硬件到 E2 Lite 烧录与调试 导读 本文围绕 Zephyr RTOS 仓库中 RSK RX14操作系统嵌入式RTOS物联网创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表