- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
本篇技术指南围绕 Zephyr RTOS 仓库中 RAK3172 板级定义(boards/rakwireless/rak3172/doc/index.rst)展开,完整梳理该 WisDuo LPWAN 模块的硬件资源、设备树与分区布局、支持的驱动功能,并给出从源码构建、pyOCD 烧录到串口验证hello_world的完整实操流程。读完本文,你将能够在 Zephyr 环境下独立完成 RAK3172 应用的构建、烧录与串口调试,并理解其时钟树、LoRa 射频前端与 MCUboot 分区等底层实现细节。
板级概览:一颗邮票模块承载完整 LoRa 节点
RAK3172 是 RAKwireless 推出的 WisDuo LPWAN 邮票式(stamp)模块,核心是一颗STM32WLE5CC芯片。该板级支持定义位于boards/rakwireless/rak3172/,其compatible字符串为stm32,rak3172_stm32wl(见 rak3172.dts)。从板级 YAML(rak3172.yaml)可以看到官方声明的能力矩阵:
| 项目 | 数值 / 说明 |
|---|---|
| 类型 | mcu(ARM Cortex 架构) |
| RAM | 64 KB |
| Flash | 256 KB |
| 支持的驱动 | counter、gpio、i2c、nvs、spi、uart、watchdog、lora |
| 工具链 | zephyr、gnuarmemb |
模块的硬件特征如下:
- 主控:STM32WLE5CC,LPWAN 专用单核 Cortex®-M4,主频 48 MHz
- 存储:256-Kbyte Flash + 64-Kbyte SRAM
- 射频:LoRa® 调制 RF 收发器
- 安全:硬件 AES256 加密引擎 + 真随机数生成器(TRNG)
- 天线:SMA 连接器直连 LoRa 天线
- IO 接口:UART、I2C、SPI、SWD
评估底板(breakout board)以 RAK3172 邮票模块为核心,将模块引脚扇出到标准的2.54 mm 排针,方便直接访问模块全部引脚,也便于快速评估模块各项能力。板卡引脚分布如下图所示:
从板级源码角度看,RAK3172 有两块 LED 指示灯定义于 rak3172.dts:绿色 LED(GPIOA0)与蓝色 LED(GPIOA1),并已通过aliases将led0指向绿色 LED,应用中可直接使用标准 LED API 操作。
设备树剖析:时钟树、串口与外围接口
板级设备树文件 rak3172.dts 及其公共定义 dts/arm/rakwireless/rak3172.dtsi 共同描述了整块板卡的硬件拓扑,下面逐层拆解。
时钟树:48 MHz 系统主频
系统时钟由 PLL 从HSE 32 MHz晶振倍频得到。在公共 dtsi 中,clk_hse与clk_lse均被使能,LSE 频率固定为 32768 Hz,用于驱动 RTC 与低功耗定时器:
&pll配置为div-m = 1、mul-n = 6、div-r = 4、div-q = 4,以 HSE 为时钟源&rcc将系统时钟设定为DT_FREQ_M(48),即 48 MHzlptim1被选为 Zephyr 系统定时器(zephyr,system-timer),时钟源来自 LSE,适合低功耗场景rtc同样以 LSE 为时钟源并处于okay状态
串口:usart1 作默认控制台
chosen节点将zephyr,console与zephyr,shell-uart均指向usart1(PB6/PB7),其波特率默认配置为 115200。usart2(PA2/PA3)同样以 115200 使能,可作为扩展串口使用。
其他外围接口
- I2C2:SCL=PA12、SDA=PA11,时钟频率配置为
I2C_BITRATE_FAST(400 kHz) - SPI1:NSS=PA4、SCK=PA5、MISO=PA6、MOSI=PA7
- 看门狗:
iwdg独立看门狗已使能,并经aliases暴露为watchdog0 - 安全外设:
aes(AES256 硬件加密)与rng(真随机数发生器)均处于okay状态
LoRa 射频前端
LoRa 收发器挂载于subghzspi总线上,公共 dtsi 中定义了射频前端控制引脚与发射功率参数:
tx-enable-gpios:PC13(FE_CTRL1)rx-enable-gpios:PB8(FE_CTRL2)power-amplifier-output = "rfo-hp",rfo-hp-max-power = <22>(最大 22 dBm 发射功率)
射频驱动实现在 drivers/lora/native/sx126x/(含 STM32WL 专用 HAL sx126x_hal_stm32wl.c),此外也提供了基于 LoRaMAC-node 的 drivers/lora/loramac-node/sx126x.c 实现可供参考。
Flash 分区:面向 MCUboot 的布局
flash0定义了四段分区(rak3172.dts),256 KB Flash 的分配如下:
| 分区 | 起始地址 | 大小 | 用途 |
|---|---|---|---|
| boot_partition | 0x00000000 | 32 KB | mcuboot(只读) |
| slot0_partition | 0x00008000 | 108 KB | image-0(主镜像槽) |
| slot1_partition | 0x00023000 | 108 KB | image-1(升级镜像槽) |
| storage_partition | 0x0003e000 | 8 KB | 存储分区(NVS 等) |
chosen中zephyr,code-partition指向slot0_partition,说明该板默认采用 MCUboot 双槽 OTA 升级方案,应用镜像烧写至 slot0。
支持的驱动功能
借助板级 YAML 与设备树,RAK3172 在 Zephyr 中支持以下子系统:
- uart:usart1/usart2,115200 默认波特率,usart1 同时承担控制台与 shell 角色
- gpio:全部引脚可访问,含两路板载 LED
- i2c:I2C2 快速模式 400 kHz
- spi:SPI1 四线全功能
- counter:lptim1 低功耗定时器同时兼任系统定时器
- watchdog:iwdg 独立看门狗
- nvs:基于 storage 分区的非易失存储
- lora:sub-ghz 射频收发(rfo-hp,最大 22 dBm)
默认 defconfig(rak3172_defconfig)已开启CONFIG_SERIAL、CONFIG_GPIO、CONFIG_CLOCK_CONTROL、CONFIG_CONSOLE、CONFIG_UART_CONSOLE,并启用CONFIG_ARM_MPU与CONFIG_HW_STACK_PROTECTION以提供内存保护与硬件栈保护。
烧录与调试:SWD 探针 + pyOCD
RAK3172 没有板载调试器,需要通过外部调试探针连接SWD 引脚进行烧录与调试。Zephyr 侧已在 board.cmake 中预配置好三套烧录工具参数:
- pyOCD:目标芯片
stm32wle5ccux,并附加cmsis_dap.limit_packets=1以规避部分 CMSIS-DAP 探针的传输限制 - J-Link:设备名
STM32WLE5CC,速率 4000 kHz,烧录后自动复位 - STM32CubeProgrammer:SWD 端口、硬件复位模式
使用 pyOCD 烧录前,需要先安装 STM32WL 的器件支持包(该芯片不在 pyOCD 默认器件库内):
$ pyocd pack --update $ pyocd pack --install stm32wl构建并烧录 hello_world
以hello_world示例演示完整流程。首先进入 Zephyr 环境,构建并烧录:
$ west build -b rak3172 samples/hello_world $ west flashwest flash会根据board.cmake中配置的 runner 自动调用 pyOCD 完成烧录;若使用 J-Link 或 STM32CubeProgrammer,也可显式指定:
$ west flash -r jlink $ west flash -r stm32cubeprogrammer烧录完成后,用串口终端连接开发板。默认情况下usart1通过板载 USB 转 TTL 转换器暴露给主机,串口参数如下:
- 波特率:115200
- 数据位:8
- 校验位:None
- 停止位:1
连接串口后应看到如下输出:
Hello World! rak3172/stm32wle5xx其中rak3172/stm32wle5xx表明当前运行的是 RAK3172 板级目标(SoC 为 STM32WLE5 系列),至此应用已在目标板上成功运行。
小结
RAK3172 是 Zephyr 生态中一个开箱即用的 LoRa 节点参考平台:设备树层面已完整覆盖 48 MHz 时钟树、usart1 控制台、I2C/SPI、看门狗、AES/RNG 与 rfo-hp 射频前端;分区布局面向 MCUboot 双槽 OTA;烧录链路同时支持 pyOCD、J-Link 与 STM32CubeProgrammer。开发者只需west build -b rak3172即可将任意 Zephyr 应用(含 LoRa 相关 sample)快速部署到该模块上进行评估与产品原型验证。
- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
相关推荐
Zephyr MAX32650FTHR 开发板支持详解:硬件特性、烧录与调试实战
Zephyr MAX32650FTHR 开发板支持详解:硬件特性、烧录与调试实战 本篇基于 Zephyr 仓库中 MAX32650FTHR 开发板的板级文档(
操作系统嵌入式RTOS物联网Zephyr MadMachine SwiftIO 开发板支持详解:mm_swiftio 与 mm_feather 的硬件、烧录与调试实战
Zephyr MadMachine SwiftIO 开发板支持详解:mm_swiftio 与 mm_feather 的硬件、烧录与调试实战 本文围绕 Zephy
操作系统嵌入式RTOS物联网Zephyr 中的 NXP LPCXpresso54114 板级支持:硬件、引脚复用、烧录与调试实战指南
Zephyr 中的 NXP LPCXpresso54114 板级支持:硬件、引脚复用、烧录与调试实战指南 本篇指南围绕 Zephyr 仓库中 LPCXpress
操作系统嵌入式RTOS物联网
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考