Zephyr MAX32655FTHR 开发板指南:硬件架构、双核(M4 + RV32)构建与 DAPLink 烧录调试
【免费下载链接】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 仓库中 MAX32655FTHR 板级文档 编写,系统讲解这款面向超低功耗无线应用的 Analog Devices 开发板:硬件与外设规格、Zephyr 板级目标(max32655fthr/max32655/m4与max32655fthr/max32655/rv32)的设备树与默认配置要点、按键/LED 引脚定义,以及基于板载 DAPLink 的west flash/west debug烧录调试流程。读完后可直接在该板上完成构建、烧录与双核(Cortex-M4 + RISC-V RV32)开发。
MAX32655FTHR 开发板正面
板卡概述
MAX32655FTHR 是 Analog Devices 推出的快速开发平台,帮助工程师基于MAX32655(Arm Cortex-M4F + Bluetooth 5.2 LE)快速实现超低功耗无线方案。板载MAX20303 PMIC负责电池与电源管理。板型采用 0.9in × 2.6in 双排针脚位,兼容 Adafruit Feather Wing 外设扩展板。板上集成了数字麦克风、低功耗立体声音频 CODEC、128Mb QSPI Flash、micro SD 卡座、RGB 指示灯和按键等外设,定位为快速概念验证(PoC)与早期软件开发平台。
MAX32655FTHR 板载模块
MAX32655FTHR 背面
Zephyr 的移植运行在 MAX32655 的Cortex-M4F 主核上;从 Kconfig.max32655fthr 可以看到,板级 Kconfig 会根据目标限定符自动选择SOC_MAX32655_M4或SOC_MAX32655_RV32两个 SoC 配置。
硬件规格
MAX32655 MCU
- 超低功耗无线微控制器
- 片内 100MHz 振荡器
- 灵活的低功耗模式,可选 7.3728MHz 系统时钟
- 512KB Flash、128KB SRAM(其中一个 32KB SRAM Bank 可选 ECC)
- 16KB 指令缓存
Bluetooth 5.2 LE 射频
- 专用超低功耗 32 位RISC-V 协处理器,卸载时序敏感的蓝牙处理
- 完全开源的 Bluetooth 5.2 协议栈
- 支持 AoA、AoD、LE Audio、Mesh
- 高速模式(2Mbps)、长距模式(125kbps / 500kbps)
- 接收灵敏度 -97.5dBm,发射功率 +4.5dBm
- 单端天线接口(50Ω)
电源管理(最大化电池寿命)
- 2.0V~3.6V 供电范围
- 集成 SIMO 电源调节器
- 动态电压缩放(DVS)
- 3.0V 下 23.8μA/MHz 工作电流;32KB 保持电流 4.4μA @ 3.0V
- 低功耗模式下 SRAM 保持 + RTC 可选
系统控制外设
- 最多 2 组高速 SPI 主/从
- 最多 3 组高速 I2C 主/从(3.4Mbps)
- 最多 4 组 UART、1 组 I2S 主/从
- 最多 8 输入、10 位 Σ-Δ ADC,7.8ksps
- 最多 4 个微功耗比较器
- 定时器:最多 2 个 4×32 位定时器、2 个 LP 定时器、2 个看门狗定时器
- 1-Wire 主机
- 最多 4 个 Pulse Train(PWM)引擎
- 带唤醒定时器的 RTC
- 最多 52 个 GPIO
安全与完整性
- 可选安全启动(Secure Boot)
- TRNG 种子生成器
- AES 128/192/256 硬件加速引擎
板上外部器件
- 立体声音频 CODEC 接口
- 数字麦克风
- PMIC 与电池充电电路
- 128Mb(16MB)QSPI Flash
- micro SD 卡接口
- RGB LED
- 按键
Zephyr 板级目标与支持特性
该板在 board.yml 中注册于adi厂商下,SoC 为max32655,并提供两个构建目标(board qualifier):
| 目标 | 架构 | 工具链 | 支持的子系统 | RAM / Flash |
|---|---|---|---|---|
max32655fthr/max32655/m4 | arm | zephyr、gnuarmemb | gpio、serial、trng、i2c、dma、watchdog、spi、adc、counter、rtc_counter、feather_i2c、feather_spi、pwm、flash | 64KB / 352KB(片内) |
max32655fthr/max32655/rv32 | riscv | zephyr | gpio、serial、flash、spi | 64KB / 128KB(分区) |
上表数据来自 max32655fthr_max32655_m4.yaml 与 max32655fthr_max32655_rv32.yaml:M4 目标支持面更广(含 trng、dma、adc、watchdog、pwm 等),RV32 目标为次核裁剪后的最小集。
默认 Kconfig 配置差异同样清晰(见 max32655fthr_max32655_m4_defconfig 与 max32655fthr_max32655_rv32_defconfig):
- M4:启用
ARM_MPU(内存保护单元)、GPIO、UART 控制台、中断驱动 UART、USE_DT_CODE_PARTITION(使用设备树中的代码分区); - RV32:系统时钟滴答
CONFIG_SYS_CLOCK_TICKS_PER_SEC=5000(5kHz 心跳),同样启用 GPIO、UART 控制台与代码分区,但未启用 MPU。
设备树中的关键配置
板级公共配置集中在 max32655fthr.dtsi,M4 与 RV32 的目标 DTS 分别位于 max32655fthr_max32655_m4.dts 和 max32655fthr_max32655_rv32.dts。几个值得注意的设计:
1. 双核 SRAM 划分。M4 主核使用SRAM0(32KB) + SRAM1(32KB)拼出 64KB(0x20000000),RV32 次核使用SRAM2(48KB) + SRAM3(16KB)共 64KB(0x20010000):
soc { /* M4: SRAM0(32KB) + SRAM1(32KB) */ m4_sram: memory@20000000 { compatible = "mmio-sram"; reg = <0x20000000 DT_SIZE_K(64)>; }; /* RV32: SRAM2(48KB) + SRAM3(16KB) */ rv32_sram: memory@20010000 { compatible = "mmio-sram"; reg = <0x20010000 DT_SIZE_K(64)>; }; };2. 128Mb QSPI Flash 三分区。外部 flash(w25q128jv@1,JEDEC IDef 70 18,16MB,SPI0 CS1,最高 10MHz)在设备树中被划为三个 mapped partition:
| 分区 | 标签 | 起始地址 | 大小 | 用途 |
|---|---|---|---|---|
m4_partition | image-m4 | 0x0 | 320KB | M4 固件镜像 |
storage_partition | storage-m4 | 0x50000 | 64KB | M4 存储(如 settings) |
rv32_partition | image-rv32 | 0x60000 | 128KB | RV32 固件镜像 |
M4 的chosen节点同时声明zephyr,code-partition = &m4_partition与zephyr,code-rv32-partition = &rv32_partition,为双核 sysbuild 构建提供分区依据。
3. 双串口 + Feather 排针。M4 控制台默认使用uart0(TX=P0.1、RX=P0.0,115200-8N1,并配置了 DMA 收发通道);uart3(TX=P2.7、RX=P2.6)作为feather_serial映射到 Feather 排针 TX/RX,是RV32 核的默认控制台。两个目标均启用了zephyr,shell-uart。
4. Feather 排针引脚映射。feather_connector节点实现了adafruit-feather-header兼容标准,将 0~16 号排针映射到具体 GPIO(如 SDA→P0.31、SCL→P0.30、TX→P2.7、RX→P2.6、MISO→P0.22、MOSI→P0.21、SCK→P0.23、AIN0~AIN5→GPIO2 的 0~5 号引脚),因此标准 Feather Wing 扩展板可直接插用。此外板上i2c2(Feather I2C,P0.30/P0.31)、spi1(Feather SPI)、i2s0(音频,P1.2~P1.5)、trng、dma0、wdt0、rtc_counter均已在设备树中置为okay。SPI/I2C 部分引脚显式选择了MAX32_VSEL_VDDIOH供电域,保证与 3.3V 外设的互操作。
按键(Push Buttons)
板上有 6 个按键。其中 SW2、SW3 与唤醒键在 max32655fthr.dtsi 中注册为gpio-keys(内部上拉、低电平有效),SW2/SW3 经过板上消抖 IC:
- SW1 — PMIC 电源键。开机状态下长按 12 秒执行硬关断;关机状态下按下则开机。该按键状态也可被 MAX32655 固件读取:
PMIC_PFN2信号连接到Port 0.13(带缓冲的输入),按下时信号拉低。 - SW2 — 用户可编程功能键。经消抖 IC 连接到Port 0.2。设备树中定义为
pb1,上报输入事件INPUT_KEY_0。 - SW3 — 用户可编程功能键。经消抖 IC 连接到Port 0.3,定义为
pb2,上报INPUT_KEY_1。 - SW4 — 唤醒键。连接到Port 3.1,定义为
pb_wakeup,上报INPUT_KEY_WAKEUP;该引脚在设备树中额外配置了MAX32_GPIO_VSEL_VDDIOH电平域。 - SW5 — 复位键。通过 MAX32655 的
RSTN输入复位芯片。 - SW6 — DAPLink 适配器键。上电时按住此键可将板载 DAPLink 适配器(MAX32625)进入 MAINTENANCE 模式,用于更新 DAPLink 固件。
兼容性别名sw0 = &pb1、sw1 = &pb2已提供,便于复用官方 sample 代码。
指示灯(LEDs)
板上有 3 颗 RGB LED:
LED1 (D1) — 用户可控。直接接 MAX32655 GPIO,可被用户固件控制:
- Port 0.18:红色
- Port 0.19:绿色
- Port 0.26:蓝色
设备树中注册为
gpio-leds(低电平点亮),并给出别名led0/led1/led2以兼容标准示例。需要留意:设备树里三个节点的颜色标签(Red/Blue/Green)与官方文档的引脚颜色描述顺序不一致(文档为 0.18=红、0.19=绿、0.26=蓝),若按颜色命名 LED 请以引脚号为准自行核对。LED2 (D2) — PMIC 指示灯。接 MAX20303 PMIC 的
LEDx输出,通过I2C 命令控制,也可配置为充电状态指示。LED3 (D3) — DAPLink 状态灯。由板载 DAPLink 适配器(MAX32625)控制,不可作为用户 LED 使用。
编程与调试
烧录(Flashing)
板上 MAX32625 微控制器出厂已刷入DAPLink固件,它提供了通过 USB 对 MAX32655 主核进行调试与烧录的能力(对应cmsis-dapOpenOCD 接口)。流程非常简单:
- 用 USB 线连接主机;
- 直接运行
west flash将固件镜像写入 Flash; - 若需全片擦除,加
--erase选项执行west flash --erase。
从 board.cmake 引用的 openocd-adi-max32.boards.cmake 可以看到底层细节:M4 目标走cmsis-dap.cfg接口 +max32655.cfg目标,擦除命令为max32xxx mass_erase 0,并针对 M4/M33 系列启用了allow_low_pwr_dbg。
调试(Debugging)
调试方式与烧录相同,只需把west flash换成:
west debug即可通过同一 DAPLink 链路挂接调试器并暂停程序执行。
RV32 RISC-V 次核
MAX32655 SoC 的次级 RV32(RISC-V)核通过max32655fthr/max32655/rv32板级限定符支持,默认使用 Feather 排针的 TX/RX(即feather_serial/uart3,115200)作为控制台。
利用sysbuild可以一次构建两个核的镜像,官方示例位于 samples/sysbuild/hello_world:
# 以 M4 为目标板构建,sysbuild 会同时生成 M4 与 RV32 两个核的镜像 west build -p -b max32655fthr/max32655/m4 samples/sysbuild/hello_world # 目前将镜像烧录到两个核需要 jlink runner 及外接 J-Link 编程器 west flash --runner jlink从源码结构看,RV32 核的 OpenOCD 配置与 M4 不同:RISC-V 侧使用${SOC}_riscv.cfg目标、FTDI 调试接口(ftdi/olimex-arm-usb-ocd-h.cfg)以及 CMSIS-DAP 的 Flash 接口(cmsis-dap.cfg),这解释了为什么双核烧录当前要求 J-Link 而非纯 USB DAPLink 链路。
参考与延伸阅读
- 板级文档原文:boards/adi/max32655fthr/doc/index.rst(硬件规格、按键/LED 定义、烧录调试流程)
- 硬件详细资料请查阅 Analog Devices 官方的 MAX32655FTHR 产品页面
- 双核构建示例:samples/sysbuild/hello_world
- 板级源码入口:Kconfig.max32655fthr、board.cmake、max32655fthr.dtsi
- 同系列开发板(不同 SoC,可对照其 文档 结构)如 MAX32650EVB、MAX32672FTHR 等,位于 boards/adi 目录下
适用前提与限制:以上所有引脚、分区与命令均以当前仓库中的设备树/板级配置为准;RV32 目标的支持面(gpio/serial/flash/spi)小于 M4 目标;双核烧录需外接 J-Link,纯 USB DAPLink 链路仅覆盖 M4 主核的west flash/west debug。
【免费下载链接】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),仅供参考