- 操作系统
- 嵌入式
- RTOS
- 物联网
【免费下载链接】zephyr
Primary Git Repository for the Zephyr Project. Zephyr is a new generation, scalable, optimized, secure RTOS for multiple hardware architectures.
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 中的状态如下表:
| 器件 | 控制器 | 状态 |
|---|---|---|
| MT48LC16M16A2 | SEMC | 通过设备配置数据块(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,itcm、zephyr,dtcm分别指向 ITCM 与 DTCM。Kconfig 侧由 Kconfig.defconfig 默认使能CONFIG_DEVICE_CONFIGURATION_DATA与CONFIG_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-gpios、cd-gpios卡检测,并挂载zephyr,sdmmc-disk(disk-name "SD")。 - USB:
zephyr_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: &lpi2c1与dvp_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_00 | LPSPI1_SCK | SPI |
| GPIO_AD_B0_01 | LPSPI1_SDO | SPI |
| GPIO_AD_B0_02 | LPSPI3_SDI / LCD_RST | SPI / LCD 显示 |
| GPIO_AD_B0_03 | LPSPI3_PCS0 | SPI |
| GPIO_AD_B0_05 | GPIO | SD 卡 |
| GPIO_AD_B0_09 | GPIO / ENET_RST | LED / 以太网 |
| GPIO_AD_B0_10 | GPIO / ENET_INT | GPIO / 以太网 |
| GPIO_AD_B0_11 | GPIO | 触摸中断 |
| GPIO_AD_B0_12 | LPUART1_TX | UART 控制台 |
| GPIO_AD_B0_13 | LPUART1_RX | UART 控制台 |
| GPIO_AD_B1_06 | LPUART3_TX | UART Arduino |
| GPIO_AD_B1_07 | LPUART3_RX | UART Arduino |
| WAKEUP | GPIO | SW0 |
| GPIO_B0_00 ~ GPIO_B0_15 | LCD_CLK / LCD_ENABLE / LCD_HSYNC / LCD_VSYNC / LCD_DATA00~15 | LCD 显示 |
| GPIO_B1_00 ~ GPIO_B1_03 | LCD_DATA12~15 | LCD 显示 |
| GPIO_B1_04 ~ GPIO_B1_11 | ENET_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_12 | GPIO | SD 卡 |
| GPIO_B1_14 | USDHC1_VSELECT | SD 卡 |
| GPIO_B1_15 | BACKLIGHT_CTL | LCD 显示 |
| GPIO_EMC_40 | ENET_MDC | 以太网 |
| GPIO_EMC_41 | ENET_MDIO | 以太网 |
| GPIO_SD_B0_00 | USDHC1_CMD / LPSPI1_SCK | SD 卡 / SPI |
| GPIO_SD_B0_01 | USDHC1_CLK / LPSPI1_PCS0 | SD 卡 / SPI |
| GPIO_SD_B0_02 | USDHC1_DATA0 / LPSPI1_SDO | SD 卡 / SPI |
| GPIO_SD_B0_03 | USDHC1_DATA1 / LPSPI1_SDI | SD 卡 / SPI |
| GPIO_SD_B0_04 | USDHC1_DATA2 | SD 卡 |
| GPIO_SD_B0_05 | USDHC1_DATA3 | SD 卡 |
| GPIO_SD_B1_05 | FLEXSPIA_DQS | QSPI Flash |
| GPIO_SD_B1_06 | FLEXSPIA_SS0_B | QSPI Flash |
| GPIO_SD_B1_07 | FLEXSPIA_SCLK | QSPI Flash |
| GPIO_SD_B1_08 | FLEXSPIA_DATA00 | QSPI Flash |
| GPIO_SD_B1_09 | FLEXSPIA_DATA01 | QSPI Flash |
| GPIO_SD_B1_10 | FLEXSPIA_DATA02 | QSPI Flash |
| GPIO_SD_B1_11 | FLEXSPIA_DATA03 | QSPI Flash |
| GPIO_AD_B1_11 | ADC | ADC1 通道 0 |
| GPIO_AD_B1_10 | ADC | ADC1 通道 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-led0→green_pwm_led(FLEXPWM2_PWM3,周期 20 ms,极性取反)sw0→user_button(GPIO5 第 0 脚 WAKEUP,上拉 + 低有效,zephyr,code = <INPUT_KEY_0>,对应按键 SW8)watchdog0→wdog0;sdhc0→usdhc1;rtc→counter_rtcmcuboot-button0→user_button(供 MCUboot 进入恢复模式)
chosen节点进一步指定了系统关键绑定:控制台zephyr,console = &lpuart1、zephyr,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状态为okay,current-speed = <115200>,并提供了default与sleep两套引脚复用(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.cmake、pyocd.board.cmake引入。
配置好主机工具与板卡后,即可按常规方式构建并烧录应用程序(参考 Zephyr 的构建与运行指南)。
配置调试探针
重要提示
- 要从 QSPI Flash 启动,请将SW7 拨到 0010,SW5 拨到 0000。
- 当器件进入低功耗状态时,调试器可能无法访问芯片。启用
CONFIG_PM时务必谨慎;若调试器无法烧录,参见下文"故障排查"一节。
对 RT1064 而言:J47/J48是 SWD 隔离跳线,J42是 DFU 模式跳线,J21是 20-pin JTAG/SWD 排针。
本板卡板载 LPC-Link2 调试探针(默认固件为 DAPLink)。根据所安装的主机工具,配置方式如下:
使用 CMSIS-DAP(LinkServer / pyOCD)与 LPC-Link2 探针:
- 按照 LPC-Link2 CMSIS-DAP 调试固件重刷说明,重新编程板载探针固件;
- 确保 SWD 隔离跳线已插上。
使用 J-Link 与 LPC-Link2 探针:有两种选择——将板载调试电路更新为 Segger J-Link 固件,或在 EVK 上外接 J-Link 探针。
- 更新板载调试电路:
- 将 EVK 的电源切换到非调试 USB 的其他电源(J-Link 固件不会通过调试 USB 为 EVK 供电);
- 按 LPC-Link2 J-Link 板载调试固件说明重刷板载探针固件;
- 确保 SWD 隔离跳线已插上。
- 外接 J-Link 探针:移除 SWD 隔离跳线,将探针连接到外部 JTAG/SWD 排针。
关于在 MIMXRT1060/1064 EVK 上使用 J-Link 的更多细节,可参阅 NXP 社区的相关知识库文章。
配置控制台
无论选择哪种调试探针,都可以将OpenSDA 微控制器用作 USB-to-serial 适配器来连接串口控制台:
- 确认跳线J45 和 J46 处于 ON(出厂默认即为 ON),将 UART 信号连接到 OpenSDA 微控制器;
- 用 USB 线将 PC 连接到J41;
- 在 minicom、putty 等串口终端中按以下参数连接:
| 参数 | 值 |
|---|---|
| 速度(Speed) | 115200 |
| 数据位(Data) | 8 bits |
| 校验(Parity) | None |
| 停止位(Stop bits) | 1 |
使用 SWO
SWO 可作为日志后端使用,设置CONFIG_LOG_BACKEND_SWO=y即可。SWO 查看器应配置为CPU 频率 132 MHz、SWO 频率 7500 kHz。引脚复用文件中的pinmux_swo(GPIO_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 来修复:
- 将 SW7 DIP 开关拨到ON-OFF-ON-OFF,阻止从 QSPI Flash 启动;
- 按下SW9复位;
- 使用一个已知可正常工作的 Zephyr 应用重新执行
west debug或west flash; - 将 SW7 DIP 开关拨回OFF-OFF-ON-OFF,恢复从 QSPI Flash 启动;
- 按下SW9复位。
west flash / debug 挂起
如果west flash或west 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.
相关推荐
Zephyr 中 NXP LPCXpresso55S06 开发板支持详解:硬件资源、引脚映射、构建烧录与调试实战
Zephyr 中 NXP LPCXpresso55S06 开发板支持详解:硬件资源、引脚映射、构建烧录与调试实战 本文以 Zephyr 仓库中 boards/n
操作系统嵌入式RTOS物联网Zephyr 中的 NXP LPCXpresso54114 板级支持:硬件、引脚复用、烧录与调试实战指南
Zephyr 中的 NXP LPCXpresso54114 板级支持:硬件、引脚复用、烧录与调试实战指南 本篇指南围绕 Zephyr 仓库中 LPCXpress
操作系统嵌入式RTOS物联网Zephyr 支持的 NXP FRDM-MCXC242 开发板:硬件资源、引脚映射与烧录调试实战指南
Zephyr 支持的 NXP FRDM MCXC242 开发板:硬件资源、引脚映射与烧录调试实战指南 导读 FRDM MCXC242 是 NXP 推出的一款面向
操作系统嵌入式RTOS物联网
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考