- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
MIMXRT685-EVK 是 NXP 面向 32 位沉浸式音频与语音用户界面场景推出的 crossover MCU 评估板,搭载 Cortex-M33 主核与 Cadence Tensilica HiFi 4 音频 DSP 双核架构。本文以 Zephyr 仓库中 boards/nxp/mimxrt685_evk/doc/index.rst 为骨架,结合板级源码(DTS、Kconfig、pinctrl、init.c)与开发实践,系统讲解该板卡的硬件资源、引脚功能、Zephyr 支持特性、烧录调试流程以及 HiFi 4 DSP 双核开发的完整方案。读完本文,你将能够独立完成 mimxrt685_evk 上 CM33 应用与 HiFi 4 DSP 工程的构建、烧录、调试,并理解其音频子系统的底层配置逻辑。
NXP MIMXRT685-EVK 开发板实物,板载 Cortex-M33 主核与 HiFi 4 音频 DSP、Octal SPI Flash、PSRAM、SD 卡槽及丰富音频外设。
板卡概览:面向语音交互的 crossover MCU
i.MX RT600 是专为 32 位沉浸式音频播放与语音用户界面(VUI)应用设计的 crossover MCU 家族。它将高性能 Cadence Tensilica HiFi 4 音频 DSP 与新一代 Cortex-M33 核结合,为语音辅助端节点提供了安全、低功耗的嵌入式处理平台。芯片内部提供最高 4.5 MB 片上 SRAM,并通过多个高带宽接口(如带实时解密引擎的 Octal/Quad SPI 接口)访问片外 Flash。
MIMXRT685-EVK 的完整硬件配置如下:
- 主控:MIMXRT685SFVKB Cortex-M33(300 MHz,128 KB TCM)核处理器,配 Cadence Xtensa HiFi4 DSP
- 调试:板载高速 USB Link2 调试探针,支持 CMSIS-DAP 协议(仅支持 Cortex M33 调试)
- 连接:高速 USB 端口(micro A/B 连接器,支持主机或设备功能);UART、I2C、SPI 端口桥接到板载调试探针
- 存储:512 MB Macronix Octal SPI Flash(1.8 V 工作电压);4.5 MB Apmemory PSRAM;全尺寸 SD 卡槽(SDIO)
- 电源:NXP PCA9420UK PMIC
- 人机接口:用户 LED、复位键与用户按键
- 扩展:Arduino 与 PMod/Host 扩展连接器
- 传感器:NXP FXOS8700CQ 加速度计
- 音频:立体声音频编解码器(line in/out 与驻极体麦克风);双路 NXP TFA9894 数字功放(可选外部 +5V 供电驱动高功率扬声器);支持通过 12-pin 排针接入最多八路板载数字麦克风;板载两路 DMIC
官方参考文档(i.MX RT685 Datasheet/Reference Manual、MIMXRT685-EVK User Guide/Schematics 等)可访问 NXP 官网获取,这里不再赘述。
Zephyr 支持特性与板级工程结构
NXP 将 MIMXRT685-EVK 视为 i.MX RT6xx 系列 MCU 的 superset 板卡,并以此板卡作为 Zephyr Full Platform Support 的焦点,优先为其使能新的 Zephyr 特性,从而带动整个 RT6xx 家族。与之非常相似的姊妹板卡是mimxrt595_evk,该板可能已支持一些可复用到 mimxrt685_evk 的额外特性。
板卡支持特性可通过zephyr:board-supported-hw指令自动生成(对应 board.yml 声明socs: mimxrt685s)。从 Zephyr 仓库中的板级源码可以确认的实际支持情况包括:
- 板级工程:boards/nxp/mimxrt685_evk/ 下同时提供 CM33 与 HiFi 4 两套目标:
mimxrt685_evk/mimxrt685s/cm33:基于 mimxrt685_evk_mimxrt685s_cm33.dts 与同名 defconfigmimxrt685_evk/mimxrt685s/hifi4:基于 mimxrt685_evk_mimxrt685s_hifi4.dts 与同名 defconfig
- SoC 选择:Kconfig.mimxrt685_evk 通过
SOC_PART_NUMBER_MIMXRT685SFVKB、SOC_MIMXRT685S_CM33、SOC_MIMXRT685S_HIFI4完成板级到 SoC 的绑定。 - CM33 默认配置(mimxrt685_evk_mimxrt685s_cm33_defconfig):启用 Console/UART 串口、中断驱动 UART、GPIO,并默认开启 TrustZone-M(
CONFIG_TRUSTED_EXECUTION_SECURE=y)、ARM MPU 与硬件栈保护。 - 默认时钟:Kconfig.defconfig 配置外部晶振
XTAL_SYS_CLK_HZ=24000000、SYSOSC_SETTLING_US=260;若未使用 MCUboot 则自动使能NXP_IMXRT_BOOT_HEADER。 - 设备树别名:CM33 DTS 中定义
sw0/sw1、led0~led2、usart-0、pwm-0、watchdog0、accel0/magn0、sdhc0、dmic0、mbox等标准别名,方便应用直接引用。
连接与 IO:引脚功能对照表
MIMXRT685 SoC 通过 IOCON 寄存器配置引脚功能。板级引脚复用(pinmux)由 mimxrt685_evk-pinctrl.dtsi 统一声明(该文件由gen_board_pinctrl.py从 NXP 的 MIMXRT685-EVK.mex 工程生成),引脚功能映射如下:
| 引脚 | 功能 | 用途 |
|---|---|---|
| PIO0_2 | USART | USART RX |
| PIO0_1 | USART | USART TX |
| PIO0_14 | GPIO | GREEN LED |
| PIO1_1 | GPIO | SW0 |
| PIO0_17 | I2C | I2C SDA |
| PIO0_18 | I2C | I2C SCL |
| PIO1_5 | GPIO | FXOS8700 TRIGGER |
| PIO1_5 | SPI | SPI MOSI |
| PIO1_4 | SPI | SPI MISO |
| PIO1_3 | SPI | SPI SCK |
| PIO1_6 | SPI | SPI SSEL |
| PIO0_23 | I2S | I2S DATAOUT |
| PIO0_22 | I2S | I2S TX WS |
| PIO0_21 | I2S | I2S TX SCK |
| PIO0_9 | I2S | I2S DATAIN |
| PIO0_29 | USART | USART TX |
| PIO0_30 | USART | USART RX |
| PIO1_11 | FLEXSPI0B_DATA0 | OctalSPI Flash |
| PIO1_12 | FLEXSPI0B_DATA1 | OctalSPI Flash |
| PIO1_13 | FLEXSPI0B_DATA2 | OctalSPI Flash |
| PIO1_14 | FLEXSPI0B_DATA3 | OctalSPI Flash |
| PIO1_29 | FLEXSPI0B_SCLK | OctalSPI Flash |
| PIO2_12 | PIO2_12 | OctalSPI Flash |
| PIO2_17 | FLEXSPI0B_DATA4 | OctalSPI Flash |
| PIO2_18 | FLEXSPI0B_DATA5 | OctalSPI Flash |
| PIO2_19 | FLEXSPI0B_SS0_N | OctalSPI Flash |
| PIO2_22 | FLEXSPI0B_DATA6 | OctalSPI Flash |
| PIO2_23 | FLEXSPI0B_DATA7 | OctalSPI Flash |
| PIO0_27 | SCT0_OUT7 | PWM |
| PIO1_30 | SD0_CLK | SD 卡 |
| PIO1_31 | SD0_CMD | SD 卡 |
| PIO2_0 | SD0_D0 | SD 卡 |
| PIO2_1 | SD0_D1 | SD 卡 |
| PIO2_2 | SD0_D2 | SD 卡 |
| PIO2_3 | SD0_D3 | SD 卡 |
| PIO2_4 | SD0_WR_PRT | SD 卡 |
| PIO2_9 | SD0_CD | SD 卡 |
| PIO2_10 | SD0_RST | SD 卡 |
从 pinctrl 源码可以进一步看出板级外设的接线细节:
- 控制台 USART(flexcomm0):
FC0_RXD_SDA_MOSI_DATA_PIO0_2(RX,使能 input)与FC0_TXD_SCL_MISO_WS_PIO0_1(TX),对应文档表中的 PIO0_2/PIO0_1。 - I2C(flexcomm2,接 Arduino 与 FXOS8700):
FC2_CTS_SDA_SSEL0_PIO0_17/FC2_RTS_SCL_SSEL1_PIO0_18,配置了bias-pull-up、开漏(drive-open-drain)与高驱动强度,即表格中的 PIO0_17/PIO0_18。 - SPI(flexcomm5,接 Arduino):SCK=PIO1_3、MISO=PIO1_4、MOSI=PIO1_5、SSEL0=PIO1_6。
- I2S:接收通道 flexcomm1(DATA=PIO0_9)与发送通道 flexcomm3(SCK=PIO0_21、WS=PIO0_22、DATAOUT=PIO0_23,外加 MCLK=PIO1_10),为音频编解码器提供双通道信号。
- Octal SPI Flash:FLEXSPI0B 的 8 根数据线(DATA0-7)、SCLK、SS0_N 以及 GPIO PIO2_12 全部用于板载 Macronix Octal Flash。
- SCTimer PWM:
SCT0_OUT7_PIO0_27对应文档中的 PWM 引脚;此外SCT0_OUT0_PIO0_14、SCT0_OUT6_PIO0_26/31分别映射绿色、蓝色、红色 PWM LED。 - SD 卡(usdhc0):CLK=PIO1_30、CMD=PIO1_31、D0-D3=PIO2_0~3,并含写保护(PIO2_4)、卡检测(PIO2_9)与复位(PIO2_10)信号。
- I3C 总线(i3c0):SCL=PIO2_29、SDA=PIO2_30、PUR=PIO2_31,板上 WM8904 音频编解码器挂接在此总线(地址 0x1a)。
- DMIC:
DMIC0_DATA2_3_PIO2_21、DMIC0_DATA0_1_PIO2_20、DMIC0_CLK0_1_PIO2_16用于板载数字麦克风。
ADC 方面,pinctrl 注释给出了完整的 ADC 通道对照表:例如 PIO0_5/CH0A 对应 Schematic 的 ADC0_0(Arduino J30.1)、PIO0_6/CH0B 对应 ADC0_8(J30.2)、PIO0_19/CH2A 对应 ADC0_2(J30.3)、PIO0_20/CH2B 对应 ADC0_10(J30.4)等;0A~5A 通道可与 0B~5B 配对构成差分输入。
系统时钟与串口配置
MIMXRT685-EVK 默认使用OS Event timer(os_timer)作为系统时钟源。这一配置体现在 CM33 设备树中:
&os_timer { status = "okay"; wakeup-source; };设备树中的注释明确说明:若需切换到 SYSTICK 定时器,只需将&os_timer替换为&systick即可,为不同内核 tick 策略提供了灵活切换的入口。
串口方面,MIMXRT685 SoC 提供 8 个 FLEXCOMM 接口,板级默认将flexcomm0配置为 USART 控制台,其余接口按需分配给 I2C/SPI/I2S 等外设。控制台配置示例如下:
&flexcomm0 { compatible = "nxp,lpc-usart"; status = "okay"; current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm0_usart>; pinctrl-names = "default"; dmas = <&dma0 0>, <&dma0 1>; dma-names = "rx", "tx"; };设备树中通过zephyr,console、zephyr,shell-uart、zephyr,uart-mcumgr均指向 flexcomm0,串口同时承担控制台、shell 与 mcumgr 通道职责。CM33 与 HiFi 4 两个域共用该 FLEXCOMM0 控制台引脚(PIO0_1/PIO0_2)。
烧录与调试:三种调试探针方案
烧录与调试应用前,需要先配置调试探针。本板默认使用LPC-Link2(板载 Link2 调试探针),支持三种工作模式,对应zephyr:board-supported-runners声明的 runner:
方案一:LinkServer CMSIS-DAP(默认)
- 安装 LinkServer 调试主机工具(
linkserver-debug-host-tools)并确保其在 PATH 中。LinkServer 兼容板载调试器的默认 CMSIS-DAP 固件。 - 确认跳线 JP17、JP18、JP19 均已安装(默认已装)。
linkserver是本板的默认 runner,直接执行:
west flash west debug方案二:LPCLink2 板载 J-Link
- 安装 J-Link 调试主机工具(
jlink-debug-host-tools)并加入 PATH。 - 安装跳线 JP17、JP18、JP19(默认已装),将 SWD 信号连接至板载调试电路。
- 按 LPC-Link2 J-Link 板载调试探针的说明烧写 J-Link 固件,并确保固件为最新版本。
west flash -r jlink west debug -r jlink方案三:外部 J-Link 探针
- 安装 J-Link 调试主机工具并加入 PATH。
- 移除跳线 J17、J18、J19(默认已装),以断开板载调试电路对 SWD 信号的影响。
- 将 J-Link 探针连接到 J2 10-pin 调试排针。
west flash -r jlink west debug -r jlink配置串口终端与控制台参数
将 USB 线从 PC 连接到板卡 J16 接口,使用任意串口终端(minicom、putty 等)并设置以下参数:
- 波特率:115200
- 数据位:8
- 校验位:None
- 停止位:1
这与设备树中 flexcomm0 的current-speed = <115200>一致。板载调试探针会把 UART/I2C/SPI 桥接为 USB 虚拟串口,因此 J16 一根 USB 线即可同时完成供电、调试与串口通信。
烧录与调试 Hello World 示例
以hello_world示例演示完整流程(默认使用 LinkServer):
west build -b mimxrt685_evk/mimxrt685s/cm33 samples/hello_world west flash打开串口终端,复位板卡(按 RESET 按键),终端应输出:
***** Booting Zephyr OS v1.14.0 ***** Hello World! mimxrt685_evk调试流程相同,将flash目标替换为debug:
west build -b mimxrt685_evk/mimxrt685s/cm33 samples/hello_world west debug在调试器中单步执行应用,终端同样会出现上述输出(示例中展示了zephyr-v2.3.0版本号输出,实际输出取决于所用 Zephyr 版本)。
常见问题:调试探针连接失败
如果调试探针连接失败并出现以下错误,通常是 Flash 中残留的镜像干扰所致:
Remote debugging using :2331 Remote communication error. Target disconnected.: Connection reset by peer. "monitor" command not supported by this target. "monitor" command not supported by this target. You can't do that when your target is `exec' (gdb) Could not connect to target. Please check power, connection and settings.修复步骤:
- 将 SW5 DIP 开关拨到ON-ON-ON,阻止从 Flash 启动。
- 按 SW3 复位。
- 重新运行
west debug或west flash,烧录一个已知可用的 Zephyr 应用(例如 Hello World)。 - 将 SW5 DIP 开关拨回ON-OFF-ON,恢复从 Flash 启动。
- 按 SW3 复位,完成修复。
HiFi 4 DSP 核:双核音频开发实战
i.MX RT685 中实例化的 Cadence HiFi 4 DSP 核在 Zephyr 中得到完整支持,可搭配专有 Xtensa 工具链(早期包中的xcc、较新版本中的xt-clang)以及 Zephyr SDK 中的xtensa-nxp_rt600_adsp_zephyr-elfGCC 变体使用。
构建 HiFi 4 工程
- GCC(Zephyr SDK):无需特殊配置,直接使用 SDK 自带的 Xtensa GCC 变体。
- 专有 Xtensa 工具链:需要设置
XTENSA_CORE、XTENSA_TOOLCHAIN_PATH、TOOLCHAIN_VER(按安装版本),并将ZEPHYR_TOOLCHAIN_VARIANT设为xcc或xt-clang。
构建命令(目标板为mimxrt685_evk/mimxrt685s/hifi4):
west build -b mimxrt685_evk/mimxrt685s/hifi4 samples/hello_world从 mimxrt685_evk_mimxrt685s_hifi4_defconfig 可以看到 HiFi 4 域的差异化配置:启用CONFIG_GEN_ISR_TABLES、关闭CONFIG_GEN_IRQ_VECTOR_TABLE、使用CONFIG_XTENSA_SMALL_VECTOR_TABLE_ENTRY小向量表项,并关闭CONFIG_NXP_IMXRT_BOOT_HEADER(DSP 核不需要 boot header)。HiFi 4 域设备树 mimxrt685_evk_mimxrt685s_hifi4.dts 复用同一套 LED/按键/串口,并使用独立的 DMA1 通道驱动 I2S 与 flexcomm0 控制台。
调试 HiFi 4
调试可直接使用 J-Link GDB Server,配合xt-gdb(专有 Xtensa 工具链)或gdb(Zephyr SDK)连接。若需与 CM33 核同步联调,可使用xt-ocd守护进程实现 HiFi 4 与 CM33 的协同调试,详见 NXP 的 RT600 Dual-Core Communication and Debugging 应用笔记。
初始化与启动机制
由于 HiFi 4 DSP 被定位为次级核(secondary core),必须显式初始化后才能工作。这一职责由实例化在 RT685 CM33 域中的nxp_rtxxx_adsp_ctrl驱动承担:驱动初始化时会完成电源域与时钟设置,足以支持调试器连接;在 AMP(非对称多处理)系统中,该驱动还负责代码加载与运行控制(run control)。
在 CM33 域中,hifi4/init.c 通过board_early_init_hook()完成音频相关初始化:当 flexcomm1 与 flexcomm3 均以nxp,lpc-i2s兼容且启用 I2S 时,代码会通过 SYSCTL1 的SHAREDCTRLSET/FCCTRLSEL寄存器配置 Flexcomm 之间的共享时钟/数据通路——既支持CONFIG_I2S_TEST_SEPARATE_DEVICES下的 I2S 内部回环测试,也支持面向 WM8904 编解码器的双工音频配置,为开发者在 DSP 侧调试 I2S 音频链路提供了硬件级的验证基础。
深入板级资源:Flash、PSRAM、SD 卡与 PMIC
Octal SPI Flash 与分区布局
设备树中flexspi节点挂接 Macronix MX25UM51345G Octal SPI Flash(64 MB),工作于 OPI STR 模式(Kconfig.defconfig中FLASH_MCUX_FLEXSPI_MX25UM51345G_OPI_STR为默认选项),最高 SPI 频率 120 MHz。Flash 分区如下(分区大小需与 4 KB 扇区对齐):
| 分区 | 标签 | 地址 | 大小 |
|---|---|---|---|
| boot_partition | mcuboot | 0x00000000 | 128 KB |
| slot0_partition | image-0 | 0x00020000 | 3 MB |
| slot1_partition | image-1 | 0x00320000 | 3 MB |
| storage_partition | storage | 0x00620000 | 58 MB - 128 KB |
该布局直接支持 MCUboot 双镜像(A/B)升级方案,zephyr,code-partition指向 slot0。
PSRAM、SD 卡与 PMIC
- 4.5 MB PSRAM 提供大容量 RAM 扩展;设备树注释提示:若不使用 USB 并需要额外 MPU 区域,可禁用
sram1节点。 - SD 卡通过
usdhc0接口工作,设备树中为兼容 1.8V SD 卡设置了no-1-8-v(禁用 1.8V 协商)、pwr-gpios(PIO2_10)与cd-gpios(PIO2_9)卡检测。 - NXP PCA9420 PMIC 通过独立 I2C(
pmic_i2c)访问,设备树默认使能 BUCK1/BUCK2 与 LDO1/LDO2 的regulator-boot-on。
USB 与音频外设
- USB 高速设备控制器
usbhs使能并通过usbphy配置校准参数(tx-d-cal、tx-cal-45-dp-ohms等)。 - 音频链路完整:WM8904 编解码器(I3C 地址 0x1a)提供 MCLK 时钟;DMIC0/PDMC0/PDMC1 配置了增益与 DC 截止频率(如
gainshift = <3>、dc-cutoff = "155hz"),支撑从数字麦克风采集到编解码输出的全链路音频处理,这正是 HiFi 4 DSP 的核心应用场景。
小结
MIMXRT685-EVK 在 Zephyr 中同时具备 CM33 主核与 HiFi 4 DSP 双目标支持:CM33 侧提供 TrustZone-M、MPU 硬件栈保护与完整外设(串口、I2C/SPI/I2S、Octal SPI Flash、SD 卡、USB、ADC、音频编解码),HiFi 4 侧通过nxp_rtxxx_adsp_ctrl实现次级核的电源/时钟初始化与 AMP 代码加载。默认 LinkServer runner 与west flash/west debug命令提供了开箱即用的开发体验;遇到 Flash 残留导致的连接失败时,可按 SW5 拨码方案修复。对语音交互、音频编解码与双核异构开发感兴趣的开发者,可进一步参考姊妹板卡 mimxrt595_evk 与 NXP 官方文档,将本文的板级配置与 Zephyr 驱动源码结合,快速搭建完整的音频应用原型。
- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
相关推荐
Zephyr 在 NXP MIMXRT1160-EVK 上的双核开发指南:架构、构建、烧录与调试
Zephyr 在 NXP MIMXRT1160 EVK 上的双核开发指南:架构、构建、烧录与调试 本篇技术指南以 Zephyr RTOS 中 mimxrt116
操作系统嵌入式RTOS物联网Zephyr 在 NXP i.MX95 EVK 上的多核启动与调试实战指南
Zephyr 在 NXP i.MX95 EVK 上的多核启动与调试实战指南 本文以 boards/nxp/imx95_evk/doc/index.rst htt
操作系统嵌入式RTOS物联网Zephyr 下 NXP MIMXRT685-AUD-EVK 开发板支持指南:硬件资源、板级配置与烧录调试实战
Zephyr 下 NXP MIMXRT685 AUD EVK 开发板支持指南:硬件资源、板级配置与烧录调试实战 MIMXRT685 AUD EVK 是 Zeph
操作系统嵌入式RTOS物联网
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考