拓冰建站拓冰建站
首页 / 资讯中心 / 正文

Zephyr 板级支持实战:96Boards WisTrio LoRa 追踪板(RAK5205)的引脚配置、构建烧录与 GDB 调试

Zephyr 板级支持实战96Boards WisTrio LoRa 追踪板RAK5205的引脚配置、构建烧录与 GDB 调试【免费下载链接】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导读96Boards WisTrio 是 96Boards IoT Edition 生态中面向 LoRa 低功耗广域网LPWAN应用的开发板基于 RAK Wireless RAK5205 芯片组片上集成了 SX1276 LoRaWAN 调制解调器、STM32L151CB-A MCU 与 GPS 模块。本文以 Zephyr 仓库内 boards/96boards/wistrio/doc/96b_wistrio.rst 板卡文档为主线结合板级源码DTS、defconfig、射频驱动初始化、烧录脚本逐层展开你将掌握 WisTrio 的硬件资源清单、Zephyr 中该板卡的设备树与外设映射细节、两种固件烧录方法ROM 引导加载器与 SWD 调试器以及基于 GDB 的调试流程可直接复现hello_world的构建与烧录全过程。板卡概览一个为 LoRa 而生的 96Boards IoT Edition 平台96Boards WisTrio LoRa Tracker 开发板基于 RAK Wireless RAK5205 芯片组是 96Boards IoT Edition 平台中提供 LoRa 连接的成员之一。片上三颗核心器件各司其职SX1276 LoRaWAN 调制解调器负责 Sub-GHz 无线通信支持 LoRa 长距离低功耗传输STM32L151CB-A MCU板载主控运行 Zephyr 应用GPS 模块配合板载 GPS 天线实现位置追踪这也是其 Tracker 定位的由来。在 Zephyr 中应用通过板卡名96b_wistrio来引用这一配置。该板卡的 SoC 标识为stm32l151xba见 board.yml设备树模型声明为 RAKWireless 96boards WisTrio boardcompatible为rak,wistrio见 96b_wistrio.dts。硬件资源清单板卡文档列出的核心硬件组件如下组件规格核心芯片组RAK5205集成 SX1276 LoRaWAN Modem STM32L151CB-A MCU GPS 模块工作电压3.3VFlash128 KBSRAM16 KB板载传感器加速度计 STMicro LIS3DH环境传感器 Bosch BME680指示灯2 个用户 LED接口GPIO带外部中断能力、UART × 2、I2C × 1射频GPS 模块 GPS 天线、LoRa 天线这些参数与 96b_wistrio.yaml 中声明的ram: 16、flash: 128单位 KB以及支持的驱动列表gpio / i2c / eeprom / lora完全对应。Zephyr 板级支持状态96b_wistrio.yaml声明该板卡的架构为arm支持的 toolchain 为 Zephyr SDK 自带工具链zephyr与 GNU ARM Embeddedgnuarmemb。板级默认配置 96b_wistrio_defconfig 中开启了以下关键功能CONFIG_ARM_MPUy使能 ARM MPU内存保护单元CONFIG_HW_STACK_PROTECTIONy硬件栈保护配合 MPU 防止栈溢出越界CONFIG_SERIALy与CONFIG_CONSOLEy、CONFIG_UART_CONSOLEy启用串口驱动与 UART 控制台输出CONFIG_GPIOy启用 GPIO 驱动。设备树 96b_wistrio.dts 中通过chosen节点将控制台绑定到usart1zephyr,console与zephyr,shell-uartSRAM 与 Flash 分别指向sram0、flash0。时钟方面板级使能了 LSI、HSI 两个内部时钟源并通过 PLLdiv2, mul4将系统主频配置为 32 MHzDT_FREQ_M(32)同时使能了 RTC 与片内 EEPROM。引脚连接与映射LED 与按键板卡提供 2 个用户 LED设备树中以gpio-leds兼容节点描述96b_wistrio.dts信号引脚说明LED1 / User LD1PA12低电平有效GPIO_ACTIVE_LOWLED2 / User LD2PB4低电平有效GPIO_ACTIVE_LOW设备树中green_led_0被aliases映射为led0应用可借助 Zephyr 的 LED API 直接操作。板载按键为 RSTBT1复位按钮。串口Serial Port96Boards WisTrio 板载 2 路 UARTUSART1Zephyr 控制台输出端口默认配置为115200 8N18 数据位、无校验、1 停止位。设备树中对应current-speed 115200引脚为 TXPA9、RXPA1096b_wistrio.dtsUSART3板卡文档标注用于 GPS 模块。需要说明的是当前仓库设备树中实际使能的是usart2TXPA2、RXPA3同样 115200见 96b_wistrio.dtsGPS 串口的精确归属以实际板卡原理图为准。I2C板载 1 路 I2CI2C1连接板载传感器默认映射信号引脚I2C1_SCLPB8I2C1_SDAPB9I2C1 同时引出到J22排针可用于挂接外部传感器。设备树中 I2C1 在 PB8/PB9 上使能并挂载了地址为0x32的 LIS3DH 加速度计节点compatible st,lis3dh, st,lis2dh见 96b_wistrio.dts对应aliases中的accel0。BME680 环境传感器同样经 I2C 总线访问。SPILoRa 射频接口板载 1 路 SPI 连接片上 LoRa 无线电默认映射信号引脚SPI1_SCLKPA5SPI1_MISOPA6SPI1_MOSIPA7SPI1_NSSPB0设备树中 SPI1 的片选为 PB0cs-gpios gpiob 0 GPIO_ACTIVE_LOW其下挂载 SX1276 LoRa 节点lora096b_wistrio.dts关键配置包括reset-gpiosPB13上拉且低电平有效dio-gpios5 路 DIO 中断线分别位于 PA11、PB1、PA3、PH0、PC13spi-max-frequency 1000000SPI 时钟上限 1 MHzpower-amplifier-output pa-boost功放输出选择 PA_BOOST 模式以获得更高发射功率。该节点被aliases映射为lora0对应 Zephyr LoRa 子系统subsys/lorawan可直接基于该设备树驱动 SX1276。LSCon 96Boards 低层连接器作为 96Boards IoT Edition 平台WisTrio 通过 96b_lscon.dtsi 实现了 LSConLow-speed Connector的 GPIO 映射使用gpio-map将 LSCon 编号13–20映射到具体 MCU 引脚PA8、PB3、PB5、PA13、PA14、PA12、PB4其中 GPIO-C 未连接同时lscon_96b_i2c0指向 I2C1、lscon_96b_uart0指向 USART1便于扩展板按标准接口复用外设。LoRa 射频路径天线开关的板级初始化WisTrio 的 LoRa 射频前端使用 Qorvo RFSW8001 天线开关compatible qorvo,rfsw8001绑定定义见 dts/bindings/qorvo,rfsw8001.yaml。设备树中该开关由 3 个 GPIO 控制96b_wistrio.dtsrf1-gpiosPA4上拉rf2-gpiosPB6上拉rf3-gpiosPB7上拉。板级 C 源码 rf.c 实现了board_late_init_hook()在 POST_KERNEL 设备初始化完成后执行此时 GPIO 驱动已可用将 RF1/RF2 配置为高电平、RF3 配置为低电平从而将 RFSW8001 置于RF1/RF2 共存模式。这一细节说明即便只写一个最简单的 Zephyr 应用板卡也会在启动阶段自动完成射频通路切换确保 LoRa 信号能够送达天线。此外设备树中还包含一个regulator-fixed节点sx-osc-enable通过 PH1 控制 SX 振荡器使能并在启动时默认开启。编程与烧录96Boards WisTrio 支持两种烧录方式ROM 引导加载器ROM bootloader与SWD 调试端口后者需要额外的调试硬件。方式一ROM 引导加载器UARTROM 引导加载器需要特殊的激活时序通过 BOOT0 引脚触发支持 UART 与 I2C 两种烧录协议本文只涉及 UART 场景。激活步骤如下使用 USB-Micro 转 USB-A 线缆将 96Boards WisTrio 连接到 Linux PC触发 ROM 引导加载器将BOOT0 连接到 VDD短接 J12 排针的 1、2 脚按下并松开RST复位按钮。激活后即可通过 UART 烧录固件。仓库为这块板卡预配置了stm32flash烧录器runner参数定义在 board.cmakeboard_runner_args(stm32flash --baud-rate115200 --start-addr0x08000000) include(${ZEPHYR_BASE}/boards/common/stm32flash.board.cmake)即以115200 波特率、起始地址0x08000000STM32 内部 Flash 基址执行烧录。以hello_world为例完整的构建与烧录命令为west build -b 96b_wistrio samples/hello_world west flash其中west build -b 96b_wistrio samples/hello_world完成编译west flash调用stm32flash经 UART 将生成的固件写入 Flash。更详细的 ROM 引导加载器激活与使用说明可参考 ST 应用笔记 AN2606板卡文档引用的外部资料。方式二SWD 调试器Black Magic Debug Probe使用 Black Magic Debug Probe 作为 SWD 编程器通过其飞线及 20 针 JTAG 适配板套件连接到 J22 排针上暴露的 SWD 引脚。探针接入主机后会被枚举为 USB 串口设备如/dev/ttyACM0。调试过程推荐使用 Zephyr SDK 自带的 GDB 二进制arm-zephyr-eabi-gdb其他 GDB如 GCC ARM Embedded 提供的 GDB 也可用。典型会话如下$ arm-zephyr-eabi-gdb -q zephyr.elf (gdb) target extended-remote /dev/ttyACM0 Remote debugging using /dev/ttyACM0 (gdb) monitor swdp_scan Target voltage: 3.3V Available Targets: No. Att Driver (gdb) attach 1调试固件烧录完成后可继续使用同一 GDB 实例进行调试。若需重新连接重复上述步骤直到执行attach 1即可之后按常规 GDB 流程操作特别地在 GDB 提示符下输入run可重新启动已烧录的程序。这套流程同时覆盖了烧录与在线调试两个环节monitor swdp_scan用于扫描 SWD 总线上的目标attach 1挂接目标后即可设置断点、单步执行、查看寄存器与内存。小结从文档到可运行固件的完整闭环综合来看96Boards WisTrio 在 Zephyr 中的支持是文档—设备树—源码—工具链四层齐备的文档层96b_wistrio.rst 给出硬件清单、引脚映射与烧录调试指南设备树层96b_wistrio.dts 完成 USART1 控制台、I2C1LIS3DH、SPI1SX1276 LoRa、RTC、EEPROM 以及射频天线开关的完整描述LSCon 映射则让 96Boards 生态的扩展板可直接复用源码层rf.c 在板级初始化阶段自动完成 RFSW8001 共存模式配置SX1276 以pa-boost模式驱动为 LoRaWAN 应用subsys/lorawan提供了开箱即用的射频通路工具链层west build -b 96b_wistrio结合stm32flashrunner 与 Black Magic Probe GDB 会话覆盖了ROM 引导加载器免额外硬件烧录与SWD 硬件调试两条主流开发路径。对开发者而言拿到这块板卡后按上述命令构建hello_world验证串口输出再基于lora0别名接入 LoRaWAN 协议栈即可快速开启端到端的 LoRa 追踪器开发。【免费下载链接】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),仅供参考
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门