Zephyr 中的 NXP MIMXRT1064-EVK 开发板支持详解:硬件资源、引脚复用与烧录调试指南
2026/9/19 13:18:16 网站建设 项目流程
  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary 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
点击查看免费下载

MIMXRT1064-EVK 是 NXP 面向 i.MX RT10xx 跨界处理器家族推出的评估板,在 Zephyr RTOS 中被视为 RT10xx 系列的超集(superset)板卡,也是 NXP 在 Zephyr 中推进 Full Platform Support 的重点对象。本文基于仓库中该板卡的官方板级文档 boards/nxp/mimxrt1064_evk/doc/index.rst,结合设备树、引脚复用、Kconfig 与烧录脚本等源码,完整梳理板卡硬件资源、支持的 Zephyr 特性、引脚映射、时钟/串口配置,以及从调试探针配置到烧录、调试、故障排查的完整实战流程。

板卡概览:i.MX RT1064 跨界处理器

i.MX RT1064 在业界首个跨界(crossover)处理器系列 i.MX RT 的基础上,将 i.MX RT 系列扩展为三个可扩展产品家族。它把片上 SRAM 翻倍至 1 MB,同时保持与 i.MX RT1050 的 pin-to-pin 兼容。该系列引入了非常适合实时应用的新特性,包括:

  • 高速 GPIO(High-Speed GPIO)
  • CAN FD
  • 同步并行 NAND/NOR/PSRAM 控制器

i.MX RT1064 搭载 Arm Cortex-M7 内核,最高运行频率 600 MHz。

在 Zephyr 仓库中,板级标识符为mimxrt1064_evk,其硬件元数据定义于 mimxrt1064_evk.yaml(架构 arm,RAM 32768 KB,flash 4096 KB,vendor 为 nxp);SoC 层面的关联通过 Kconfig.mimxrt1064_evk 中的CONFIG_BOARD_MIMXRT1064_EVK选择SOC_PART_NUMBER_MIMXRT1064DVL6A完成。

硬件资源清单

MIMXRT1064-EVK 板载资源如下:

  • 主控:MIMXRT1064DVL6A MCU(600 MHz,1024 KB 片上内存,4096 KB 片上 QSPI Flash)
  • 内存
    • 256 Mbit SDRAM
    • 64 Mbit QSPI Flash
    • 512 Mbit Hyper Flash
    • TF 卡座(SD 卡)
  • 显示:LCD 连接器
  • 以太网:10/100 Mbit/s 以太网 PHY
  • USB:USB 2.0 OTG 连接器、USB 2.0 Host 连接器
  • 音频:3.5 mm 立体声耳机插孔、板载麦克风、左右扬声器输出连接器
  • 电源:5 V DC 电源插孔
  • 调试:JTAG 20-pin 连接器、OpenSDA(DAPLink 固件)
  • 传感器:FXOS8700CQ 6 轴电子罗盘、CMOS 摄像头传感器接口
  • 扩展:Arduino 接口
  • 总线:CAN 总线连接器

外部存储器

该平台的外部存储器及其在 Zephyr 中的状态如下表:

器件控制器状态
MT48LC16M16A2SEMC通过设备配置数据块(device configuration data block)启用,在启动时完成 SEMC 初始化

在设备树 mimxrt1064_evk.dts 中,该 SDRAM 节点被定义为sdram0: memory@80000000(Micron MT48LC16M16A2B4-6AIT:G,reg = <0x80000000 DT_SIZE_M(32)>),并且通过chosen中的zephyr,sram = &sdram0被选为 Zephyr 的主 SRAM 区域;zephyr,itcmzephyr,dtcm分别指向 ITCM 与 DTCM。Kconfig 侧由 Kconfig.defconfig 默认使能CONFIG_DEVICE_CONFIGURATION_DATACONFIG_NXP_IMX_EXTERNAL_SDRAM,正是这两项在启动早期完成 SEMC 对 SDRAM 的初始化。

支持的 Zephyr 特性

NXP 将 MIMXRT1064-EVK 视为 i.MX RT10xx MCU 家族的超集板卡,是 NXP 在 Zephyr 中 Full Platform Support 的聚焦对象,新特性的支持会优先在此板卡上落地。

板级 YAML 元数据(mimxrt1064_evk.yaml)声明的受支持特性包括:adc、arduino_gpio、arduino_serial、can、counter、display、dma、flash、gpio、hwinfo、i2c、netif:eth、ptp_clock、pwm、sdhc、spi、usb_device、video、watchdog、rtc。这些能力在设备树与引脚复用中均有对应实现:

  • 以太网&enet&enet_mac启用 RMII 接口,PHY 为 Microchip KSZ8081(phy@0),通过&enet_mdio管理,并启用了&enet_ptp_clock(PTP 1588)。
  • CAN FD&flexcan2启用,配套can-transceiver节点声明max-bitrate = <5000000>(5 Mbit/s)。
  • SD 卡&usdhc1启用,带pwr-gpioscd-gpios卡检测,并挂载zephyr,sdmmc-disk(disk-name "SD")。
  • USBzephyr_udc0: &usb1作为 USB 设备控制器启用。
  • 视频&csi(CMOS 传感器接口)与&pxp(像素处理加速器)启用。
  • PWM&flexpwm2_pwm3驱动板载绿灯的 PWM 通道。
  • 看门狗与 RTC&wdog0&counter_rtc均启用,rtc别名指向counter_rtc
  • ADC&adc1启用,对应 ADC1 的 IN0 与 IN15 两个通道。
  • 音频&sai1配置为 I2S 音频,板载 Wolfson WM8960 编解码器(audio_codec: wm8960@1a),并通过i2s-codec-tx = &sai1别名暴露给音频子系统。

支持的 Shield

上述特性中有部分通过 Zephyr shield 进行验证,在 MIMXRT1064-EVK 上测试过的 shield 包括:

  • rk043fn02h_ct 与 rk043fn66hs_ctg:支持 Display 显示接口。设备树中的zephyr_lcdif: &lcdif节点与nxp_parallel_lcd_connector(并行 FPC 接口)即为此类并行 LCD 而设计,该接口在多个 NXP EVK 上通用。
  • dvp_fpc24_mt9m114:支持 CSI 视频/摄像头接口。设备树中dvp_fpc24_i2c: &lpi2c1dvp_fpc24_interface: &csi为其预留了对接口的引用,引脚复用见下文pinmux_csi

引脚连接与 I/O 复用

MIMXRT1064 SoC 拥有四对 pinmux/GPIO 控制器。板级引脚复用定义集中在 mimxrt1064_evk-pinctrl.dtsi(该文件由gen_board_pinctrl.py依据mimxrt1064_evk.mex生成),设备树中各外设通过pinctrl-0 = <&pinmux_xxx>引用相应组。下表汇总了主要引脚的默认功能与用途:

引脚名功能用途
GPIO_AD_B0_00LPSPI1_SCKSPI
GPIO_AD_B0_01LPSPI1_SDOSPI
GPIO_AD_B0_02LPSPI3_SDI / LCD_RSTSPI / LCD 显示
GPIO_AD_B0_03LPSPI3_PCS0SPI
GPIO_AD_B0_05GPIOSD 卡
GPIO_AD_B0_09GPIO / ENET_RSTLED / 以太网
GPIO_AD_B0_10GPIO / ENET_INTGPIO / 以太网
GPIO_AD_B0_11GPIO触摸中断
GPIO_AD_B0_12LPUART1_TXUART 控制台
GPIO_AD_B0_13LPUART1_RXUART 控制台
GPIO_AD_B1_06LPUART3_TXUART Arduino
GPIO_AD_B1_07LPUART3_RXUART Arduino
WAKEUPGPIOSW0
GPIO_B0_00 ~ GPIO_B0_15LCD_CLK / LCD_ENABLE / LCD_HSYNC / LCD_VSYNC / LCD_DATA00~15LCD 显示
GPIO_B1_00 ~ GPIO_B1_03LCD_DATA12~15LCD 显示
GPIO_B1_04 ~ GPIO_B1_11ENET_RX_DATA00 / ENET_RX_DATA01 / ENET_RX_EN / ENET_TX_DATA00 / ENET_TX_DATA01 / ENET_TX_EN / ENET_REF_CLK / ENET_RX_ER以太网
GPIO_B1_12GPIOSD 卡
GPIO_B1_14USDHC1_VSELECTSD 卡
GPIO_B1_15BACKLIGHT_CTLLCD 显示
GPIO_EMC_40ENET_MDC以太网
GPIO_EMC_41ENET_MDIO以太网
GPIO_SD_B0_00USDHC1_CMD / LPSPI1_SCKSD 卡 / SPI
GPIO_SD_B0_01USDHC1_CLK / LPSPI1_PCS0SD 卡 / SPI
GPIO_SD_B0_02USDHC1_DATA0 / LPSPI1_SDOSD 卡 / SPI
GPIO_SD_B0_03USDHC1_DATA1 / LPSPI1_SDISD 卡 / SPI
GPIO_SD_B0_04USDHC1_DATA2SD 卡
GPIO_SD_B0_05USDHC1_DATA3SD 卡
GPIO_SD_B1_05FLEXSPIA_DQSQSPI Flash
GPIO_SD_B1_06FLEXSPIA_SS0_BQSPI Flash
GPIO_SD_B1_07FLEXSPIA_SCLKQSPI Flash
GPIO_SD_B1_08FLEXSPIA_DATA00QSPI Flash
GPIO_SD_B1_09FLEXSPIA_DATA01QSPI Flash
GPIO_SD_B1_10FLEXSPIA_DATA02QSPI Flash
GPIO_SD_B1_11FLEXSPIA_DATA03QSPI Flash
GPIO_AD_B1_11ADCADC1 通道 0
GPIO_AD_B1_10ADCADC1 通道 1

注意:要在本板上使用 SPI 外设,必须先用 0 欧姆电阻焊接 R278、R279、R280、R281 四个焊位。引脚复用文件中pinmux_lpspi1的注释也明确提示:LPSPI1 与 USDHC 引脚冲突,需在 EVK 板上连接 R278~R281。

从引脚复用源码可以看到若干引脚冲突关系,开发者在启用外设时需要特别注意:

  • pinmux_csi与 LPUART3、FLEXCAN1 冲突;
  • pinmux_lpspi3与 LCDIF 引脚冲突;
  • pinmux_flexcan1与 SAI1 冲突;
  • pinmux_lpspi1与 USDHC 冲突。

板载外设在设备树中的映射

设备树 mimxrt1064_evk.dts 定义了几个对应用户常用的别名(aliases):

  • led0→ 绿灯green_led(GPIO1 第 9 脚,GPIO_ACTIVE_LOW,标签 "User LD1")
  • pwm-led0green_pwm_led(FLEXPWM2_PWM3,周期 20 ms,极性取反)
  • sw0user_button(GPIO5 第 0 脚 WAKEUP,上拉 + 低有效,zephyr,code = <INPUT_KEY_0>,对应按键 SW8)
  • watchdog0wdog0sdhc0usdhc1rtccounter_rtc
  • mcuboot-button0user_button(供 MCUboot 进入恢复模式)

chosen节点进一步指定了系统关键绑定:控制台zephyr,console = &lpuart1zephyr,shell-uart = &lpuart1、CAN 总线zephyr,canbus = &flexcan2、触摸屏zephyr,touch = &ft5336、Flash 控制器与 Flash 器件、代码分区slot0_partition等。此外,板卡还定义了Arduino R3 接口映射arduino_header,兼容arduino-header-r3),将 A0~A5、D0~D15 引脚映射到对应的 GPIO1/GPIO3 引脚,以及两个标准 FPC 连接器节点(并行 LCD 与 I2C 触摸)。

系统时钟

MIMXRT1064 SoC 默认使用SysTick作为系统时钟源,以 600 MHz 运行。

当启用电源管理(CONFIG_PM)时,板上的 32 kHz 低频振荡器将被用作GPT 定时器的时钟源来产生系统时钟。该方案允许进入更低功耗状态(核心时钟可被门控,这一点在设备树&gpt_hw_timer&systick的注释中有说明),代价是时钟分辨率下降。

串口配置

MIMXRT1064 SoC 拥有 8 个 UART。其中LPUART1被配置为控制台(console),其余 UART 默认未使用。设备树中&lpuart1状态为okaycurrent-speed = <115200>,并提供了defaultsleep两套引脚复用(pinmux_lpuart1/pinmux_lpuart1_sleep),以便在低功耗时切换引脚状态。

此外,Arduino 串口由arduino_serial: &lpuart3提供(arduino_serial特性对应 YAML 中的arduino_serial),同样配置为 115200 baud,并带sleep引脚复用状态。

编程与调试

MIMXRT1064-EVK 支持 3 种调试主机工具,用户可选择偏好的工具安装后,按下文"配置调试探针"一节完成板卡配置:

  • J-Link(NXP 官方支持)—— board.cmake 中通过board_runner_args(jlink "--device=MIMXRT1064")指定设备型号
  • LinkServer(NXP 官方支持)——board_runner_args(linkserver "--device=MIMXRT1064xxxxA:EVK-MIMXRT1064")
  • pyOCD(NXP 不提供官方支持)——board_runner_args(pyocd "--target=mimxrt1064")

对应的 runner 支持通过include(${ZEPHYR_BASE}/boards/common/linkserver.board.cmake)jlink.board.cmakepyocd.board.cmake引入。

配置好主机工具与板卡后,即可按常规方式构建并烧录应用程序(参考 Zephyr 的构建与运行指南)。

配置调试探针

重要提示

  • 要从 QSPI Flash 启动,请将SW7 拨到 0010SW5 拨到 0000
  • 当器件进入低功耗状态时,调试器可能无法访问芯片。启用CONFIG_PM时务必谨慎;若调试器无法烧录,参见下文"故障排查"一节。

对 RT1064 而言:J47/J48是 SWD 隔离跳线,J42是 DFU 模式跳线,J21是 20-pin JTAG/SWD 排针。

本板卡板载 LPC-Link2 调试探针(默认固件为 DAPLink)。根据所安装的主机工具,配置方式如下:

使用 CMSIS-DAP(LinkServer / pyOCD)与 LPC-Link2 探针:

  1. 按照 LPC-Link2 CMSIS-DAP 调试固件重刷说明,重新编程板载探针固件;
  2. 确保 SWD 隔离跳线已插上。

使用 J-Link 与 LPC-Link2 探针:有两种选择——将板载调试电路更新为 Segger J-Link 固件,或在 EVK 上外接 J-Link 探针。

  • 更新板载调试电路:
    1. 将 EVK 的电源切换到非调试 USB 的其他电源(J-Link 固件不会通过调试 USB 为 EVK 供电);
    2. 按 LPC-Link2 J-Link 板载调试固件说明重刷板载探针固件;
    3. 确保 SWD 隔离跳线已插上。
  • 外接 J-Link 探针:移除 SWD 隔离跳线,将探针连接到外部 JTAG/SWD 排针。

关于在 MIMXRT1060/1064 EVK 上使用 J-Link 的更多细节,可参阅 NXP 社区的相关知识库文章。

配置控制台

无论选择哪种调试探针,都可以将OpenSDA 微控制器用作 USB-to-serial 适配器来连接串口控制台:

  1. 确认跳线J45 和 J46 处于 ON(出厂默认即为 ON),将 UART 信号连接到 OpenSDA 微控制器;
  2. 用 USB 线将 PC 连接到J41
  3. 在 minicom、putty 等串口终端中按以下参数连接:
参数
速度(Speed)115200
数据位(Data)8 bits
校验(Parity)None
停止位(Stop bits)1

使用 SWO

SWO 可作为日志后端使用,设置CONFIG_LOG_BACKEND_SWO=y即可。SWO 查看器应配置为CPU 频率 132 MHzSWO 频率 7500 kHz。引脚复用文件中的pinmux_swoGPIO_AD_B0_10复用为ARM_TRACE_SWO)正是为这一用途准备的,其注释与文档给出的参数一致。

烧录示例(hello_world)

以 Zephyr 的hello_world示例应用为例,烧录命令为:

west build -b mimxrt1064_evk samples/hello_world west flash

打开串口终端,按下板上的SW9 按键复位,终端中应看到如下输出:

***** Booting Zephyr OS v1.14.0-rc1 ***** Hello World! mimxrt1064_evk

调试示例(hello_world)

同样以hello_world为例,启动调试会话:

west build -b mimxrt1064_evk samples/hello_world west debug

打开串口终端,在调试器中单步执行应用,应看到相同输出:

***** Booting Zephyr OS v1.14.0-rc1 ***** Hello World! mimxrt1064_evk

故障排查

调试探针无法连接(QSPI Flash 中的启动头损坏)

如果调试探针连接失败并出现以下错误,很可能是 QSPI Flash 中的启动头(boot header)无效或损坏。启动头由CONFIG_NXP_IMXRT_BOOT_HEADER配置:

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.

可通过以下步骤擦除并重新烧录 QSPI Flash 来修复:

  1. 将 SW7 DIP 开关拨到ON-OFF-ON-OFF,阻止从 QSPI Flash 启动;
  2. 按下SW9复位;
  3. 使用一个已知可正常工作的 Zephyr 应用重新执行west debugwest flash
  4. 将 SW7 DIP 开关拨回OFF-OFF-ON-OFF,恢复从 QSPI Flash 启动;
  5. 按下SW9复位。

west flash / debug 挂起

如果west flashwest debug命令失败并在执行runners.jlink时挂起,请确认 J-Link 调试探针已正确配置、已供电,并与 EVK 正确连接。

小结

MIMXRT1064-EVK 在 Zephyr 生态中的定位是 i.MX RT10xx 家族的"超集"参考板:它集 600 MHz Cortex-M7、1 MB 片上 SRAM、SDRAM/QSPI/Hyper Flash 多种外部存储器、以太网、USB OTG/Host、CAN FD、LCD/CSI 显示视频、WM8960 音频与 Arduino 扩展于一体。本文结合 板级文档、设备树、引脚复用、Kconfig 与 烧录脚本 等仓库资源,给出了从硬件能力、引脚映射、时钟/串口配置到三种调试探针、控制台、SWO、烧录调试及故障恢复的完整路径,可作为在这块板卡上进行 Zephyr 开发的一站式参考。相关示例可进一步参考 samples/hello_world 与 samples/drivers 中的板卡驱动示例。

  • 操作系统
  • 嵌入式
  • RTOS
  • 物联网

【免费下载链接】zephyr

Primary 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),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询