news 2026/9/20 1:25:16

Zephyr RTOS 下的 NXP MIMXRT1024-EVK 开发板实战指南:硬件特性、引脚映射与烧录调试

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Zephyr RTOS 下的 NXP MIMXRT1024-EVK 开发板实战指南:硬件特性、引脚映射与烧录调试
  • 操作系统
  • 嵌入式
  • 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
点击查看免费下载

导读

本文以 Zephyr RTOS 仓库中的 MIMXRT1024-EVK 板级文档 为核心,全面讲解这块基于 NXP i.MX RT1024 跨界处理器(Arm Cortex-M7 @ 500 MHz)的评估板在 Zephyr 中的使用方法。你将掌握该板的硬件资源布局、外部存储器与板级外设的使能方式、系统时钟与串口配置、完整的引脚复用(pinmux)映射表,以及使用 west 命令进行编译、烧录和调试的完整流程,可直接在真实硬件上跑通 hello_world 并开始自己的应用开发。

一、板卡概览:低成本 LQFP 封装的高性能跨界 MCU

i.MX RT1024 是 NXP i.MX RT10xx 跨界处理器家族中的一员,定位是在低成本 LQFP 封装内提供高性能特性,从而简化客户的板卡设计与布线。它运行 Arm Cortex-M7 内核,主频 500 MHz,板载 MCU 型号为 MIMXRT1024DAG5A(600 MHz 主频、256 KB 片上内存、4096 KB 片上 QSPI 闪存)。

从 Zephyr 仓库的板级定义文件 mimxrt1024_evk.yaml 可以看到,该板被声明为type: mcuarch: arm,支持 zephyr 与 gnuarmemb 两种工具链,并对外宣称支持以下特性:

特性类别说明
adc / arduino_gpio / arduino_serial模拟采样与 Arduino 兼容接口
can / dma / flash / gpioCAN 总线、DMA、Flash 存储与 GPIO
hwinfo / netif:eth / ptp_clock硬件信息、以太网接口与 PTP 时钟
pwm / sdhc / spi / usb_devicePWM、SD 卡、SPI 与 USB 设备
watchdog / rtc看门狗与实时时钟

在 board.yml 中,板卡 SoC 被绑定为mimxrt1024;而 Kconfig.mimxrt1024_evk 则通过select SOC_PART_NUMBER_MIMXRT1024DAG5A将具体芯片型号固化到板级配置中。

硬件资源清单

按板卡文档整理,MIMXRT1024-EVK 的硬件资源可分为以下几类:

  • 存储:256 Mbit SDRAM、32 Mbit QSPI Flash、用于 SD 卡的 TF 卡座。
  • 连接:10/100 Mbit/s 以太网 PHY、Micro USB Host 与 OTG 连接器、CAN 收发器、Arduino 接口。
  • 音频:音频编解码器(Audio Codec)、4 极音频耳机插孔、麦克风、外部扬声器连接。
  • 电源:5 V DC 电源插孔。
  • 调试:10 针 JTAG 连接器、带 DAPLink 固件的 OpenSDA。
  • 传感器:6 轴 FXOS8700CQ 数字加速度计与磁力计。

这些外设在 Zephyr 的板级设备树 mimxrt1024_evk.dts 中均有对应节点,例如fxos8700挂接在 LPI2C4 总线上(地址0x1f),SD 卡通过usdhc1zephyr,sdmmc-disk形式注册为名为 "SD" 的磁盘。

二、外部存储器:SEMC 与 QSPI Flash 的板级使能

该平台的外部存储器配置如下:

器件控制器状态
MT48LC16M16A2P(SDRAM)SEMC通过设备配置数据块(device configuration data block)在启动时初始化 SEMC 从而启用

设备树 mimxrt1024_evk.dts 中,SDRAM 被声明为sdram0: memory@80000000(ISSI IS42S16160J-6TLI,容量 32 MB),同时通过chosen节点将其指定为zephyr,sram,即默认的运行内存。

QSPI Flash 方面,板载 32 Mbit(4 MB)的 W25Q32JV,被指定为zephyr,flashzephyr,flash-controller。该 Flash 上预置了 4 个分区(扇区大小为 4 KB,分区大小均按 4 KB 对齐):

分区标签起始地址大小
boot_partitionmcuboot0x00000000128 KB
slot0_partitionimage-00x000200001924 KB
slot1_partitionimage-10x002010001924 KB
storage_partitionstorage0x003e2000120 KB

这是标准的 MCUboot 双槽(A/B)OTA 布局,zephyr,code-partition指向slot0_partition,方便直接配合 samples/boards/mcuboot 一类的引导方案使用。

从板级构建脚本 CMakeLists.txt 可以进一步看到底层实现:

  • 当启用CONFIG_DEVICE_CONFIGURATION_DATA时,会编译 dcd/dcd.c(DCD,Device Configuration Data),它负责在启动阶段配置 SEMC 以初始化外部 SDRAM;
  • 当启用CONFIG_BOOT_FLEXSPI_NOR时,会编译 xip/evkmimxrt1024_flexspi_nor_config.c,用于配置 FlexSPI NOR Flash 的启动参数。

若把 SDRAM 用作 RAM 但未包含 DCD,构建时会给出告警:“You are using SDRAM as RAM but no device configuration data (DCD) is included. This configuration may not boot”。板级默认配置 Kconfig.defconfig 中已经默认使能了DEVICE_CONFIGURATION_DATANXP_IMX_EXTERNAL_SDRAM,因此开箱即可正常运行在外部 SDRAM 上。

三、支持的特性与兼容策略

板卡文档明确给出提示:对于尚未支持的特性,请参照同系列的超集板卡 mimxrt1064_evk。NXP 优先为超集板卡提供 Zephyr 的完整平台支持(Full Platform Support),因此 mimxrt1064_evk 上已经支持的额外特性,通常也可以复用到本板(mimxrt1024_evk)上。

从设备树看,本板已使能的主要外设包括:

  • 以太网enet/enet_mac/enet_mdio均处于okay状态,PHY 为 Microchip KSZ8081(RMII 接口),支持随机 MAC 地址(zephyr,random-mac-address)与 PTP 时钟(enet_ptp_clock);
  • 串口lpuart1(控制台,115200 波特率)、lpuart2(Arduino 串口);
  • CANflexcan1,带can-transceiver节点(最大比特率 5 Mbps);
  • I2Clpi2c4,挂载 FXOS8700 六轴传感器;
  • SPIlpspi1,通过edma0的通道 0/1 映射到 RX/TX DMA;
  • ADCadc1
  • 定时器gpt_hw_timersystick同时使能;
  • USBusb1(作为zephyr_udc0使用);
  • SD 卡usdhc1,带 4 组不同速度等级的 pinmux;
  • 看门狗与 RTC 计数器wdog0counter_rtc

四、连接与 I/O:完整引脚映射表

MIMXRT1024 SoC 拥有五对 pinmux/GPIO 控制器。板卡文档给出了以下经过验证的引脚映射(这也是 mimxrt1024_evk-pinctrl.dtsi 中 pinmux 配置的来源):

引脚名复用功能用途
GPIO_AD_B1_08GPIOLED
GPIO_AD_B0_06LPUART1_TXUART 控制台
GPIO_AD_B0_07LPUART1_RXUART 控制台
WAKEUPGPIOSW4
GPIO_AD_B0_04ENET_RST以太网
GPIO_AD_B0_08ENET_REF_CLK以太网
GPIO_AD_B0_09ENET_RX_DATA01以太网
GPIO_AD_B0_10ENET_RX_DATA00 / LPSPI1_SCK以太网 / SPI
GPIO_AD_B0_11ENET_RX_EN / LPSPI1_PCS0以太网 / SPI
GPIO_AD_B0_12ENET_RX_ER / LPSPI1_SDO以太网 / SPI
GPIO_AD_B0_13ENET_TX_EN / LPSPI1_SDI以太网 / SPI
GPIO_AD_B0_14ENET_TX_DATA00以太网
GPIO_AD_B0_15ENET_TX_DATA01以太网
GPIO_AD_B1_06ENET_INT以太网
GPIO_EMC_41ENET_MDC以太网
GPIO_EMC_40ENET_MDIO以太网
GPIO_SD_B1_00FLEXCAN1_TXCAN TX
GPIO_SD_B1_01FLEXCAN1_RXCAN RX
GPIO_SD_B1_02LPI2C4_SCLI2C SCL
GPIO_SD_B1_03LPI2C4_SDAI2C SDA
GPIO_SD_B1_05DQSQSPI Flash
GPIO_AD_B1_11ADC1ADC1 通道 11
GPIO_AD_B1_10ADC1ADC1 通道 10
GPIO_AD_B1_10FLEXPWM1FLEXPWM1 通道 A2

注意:上表中有几处引脚存在复用冲突,这正是 pinmux 文件中的注释所强调的:

  • GPIO_AD_B0_10 ~ _13四个引脚同时承担 ENET 数据/控制信号与 LPSPI1 功能(/* conflicts with enet pinmux */),因此以太网与 SPI 不能同时使用这两组功能;
  • GPIO_AD_B1_08既是用户 LED(GPIO)又是 LPUART2_TX(/* conflicts with user led */);
  • GPIO_AD_B1_10同时映射 ADC1 通道 10 与 FLEXPWM1 A2。

与设备树的对应关系

设备树中leds节点将green_led绑定到gpio1的 24 号引脚(即GPIO_AD_B1_08,active-high),并作为led0别名;gpio_keys节点将user_button绑定到gpio5的 0 号引脚(WAKEUP,上拉、active-low),按键事件码为INPUT_KEY_0,同时作为sw0mcuboot-button0arduino_header节点则通过arduino-header-r3兼容绑定,把 Arduino UNO R3 的 A0~A5、D0~D15 全部映射到 GPIO1/GPIO3 的具体引脚上。

五、系统时钟:SysTick 与 GPT 的电源管理协作

MIMXRT1024 SoC 默认使用SysTick作为系统时钟源,运行在 500 MHz。设备树中systickgpt_hw_timer同时处于使能状态,其协作逻辑如下:

  • 未启用电源管理时,使用 SysTick 提供系统时钟;
  • 启用电源管理后,板上的 32 KHz 低频振荡器将作为 GPT 定时器的时钟源来产生系统时钟,从而允许内核时钟被门控(gate),进入更低的功耗状态,代价是系统时钟分辨率降低。

构建脚本 CMakeLists.txt 中对应地给出告警:启用CONFIG_MCUX_GPT_TIMER会开启更低功耗模式,但会降低硬件定时器分辨率。如果你在意定时精度,就不要在启用电源管理时使用 GPT。

六、串口(Serial Port):控制台配置

MIMXRT1024 SoC 共有八个 UART,其中只有LPUART1被配置为 Zephyr 控制台,其余未使用。设备树chosen节点中的zephyr,consolezephyr,shell-uartzephyr,uart-mcumgr均指向lpuart1,波特率设定为 115200(current-speed = <115200>)。

控制台对应的默认配置见 mimxrt1024_evk_defconfig:CONFIG_CONSOLE=yCONFIG_UART_CONSOLE=yCONFIG_SERIAL=y。此外该 defconfig 还默认开启了CONFIG_GPIOCONFIG_ARM_MPUCONFIG_HW_STACK_PROTECTION,说明板卡默认即带 MPU 内存保护与硬件栈保护。

七、烧录与调试(Programming and Debugging)

支持的调试主机工具

板卡文档说明该板支持 3 种调试主机工具,安装你偏好的工具后,再按下方“配置调试探针”一节进行设置:

工具说明
LinkServer默认,NXP 官方支持
J-LinkNXP 官方支持
pyOCDNXP 不官方支持

对应关系同样体现在 board.cmake 中:

board_runner_args(pyocd "--target=mimxrt1024") board_runner_args(jlink "--device=MIMXRT1024xxx5A") board_runner_args(linkserver "--device=MIMXRT1024xxxxx:MIMXRT1024-EVK")

它分别声明了三个 runner 的器件参数,并引入linkserver.board.cmakejlink.board.cmakepyocd.board.cmake三个通用构建模块。

配置调试探针

RT1024 板上的关键跳线与接口:

  • J47 / J48:SWD 隔离跳线;
  • J42:DFU 模式跳线;
  • J55:10 针 JTAG/SWD 排针。

板载调试探针为 LPC-Link2,出厂固件为 CMSIS-DAP(DAPLink)形态,具体配置方法见 boards/nxp/common/rt1xxx-lpclink2-debug.rst.inc:

  • 使用 LinkServer / pyOCD(CMSIS-DAP 模式):按 LPC-Link2 的说明将板载探针固件重刷为 CMSIS-DAP 固件,并确保 SWD 隔离跳线已安装(populated)。
  • 使用 J-Link 模式:有两种选择——将板载调试电路刷为 Segger J-Link 固件(注意 J-Link 固件不会通过调试 USB 给板供电,需为 EVK 切换其他电源来源),或将外部 J-Link 探针接到外部 JTAG/SWD 排针(此时需移除 SWD 隔离跳线)。

配置控制台(串口终端)

无论选择哪种调试探针,都使用OpenSDA 单片机作为 USB 转串口适配器。请确认跳线J50 与 J46 处于 ON 状态(出厂时默认如此),将 UART 信号连接到 OpenSDA 单片机,然后用 USB 线连接 PC 与J23

使用任意串口终端(minicom、putty 等),参数如下:

  • 波特率:115200
  • 数据位:8
  • 校验:无(None)
  • 停止位:1

烧录(Flashing)

以 samples/hello_world 为例,在已配置好 Zephyr 环境的终端中执行:

west build -b mimxrt1024_evk samples/hello_world west flash

west flash等价于带:goals: flash的 zephyr-app-commands 指令,构建目标为flash。)

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

***** Booting Zephyr OS v2.4.0-rc1 ***** Hello World! mimxrt1024_evk

说明:示例输出中的版本号取决于你当前仓库的 Zephyr 版本,实际构建时会打印对应版本的启动横幅。

调试(Debugging)

同样以 hello_world 为例,将构建目标改为debug

west build -b mimxrt1024_evk samples/hello_world west debug

打开串口终端,在调试器中单步执行程序,终端应出现与烧录时相同的输出:

***** Booting Zephyr OS v2.4.0-rc1 ***** Hello World! mimxrt1024_evk

八、从板级文件到实际应用的落地建议

综合上述板级文件,可以提炼出几条在本板上开展实际开发的关键建议:

  1. 默认从外部 SDRAM 运行zephyr,sram指向sdram0,启动依赖 DCD 初始化 SEMC,因此不要随意关闭CONFIG_DEVICE_CONFIGURATION_DATA,否则可能无法启动。
  2. 以太网与 LPSPI1 二选一:两组功能共享GPIO_AD_B0_10~13引脚,如果要用 samples/net 下的网络例程,需避免同时使能 SPI;反之亦然。
  3. LED 与 LPUART2 二选一GPIO_AD_B1_08既是用户 LED 又是 LPUART2_TX,使用 Arduino 串口时需注意引脚冲突。
  4. 电源管理会切换时钟源:启用低功耗时系统时钟会从 SysTick 切到由 32 KHz 晶振驱动的 GPT,精度下降是预期行为。
  5. OTA 分区已就绪:QSPI Flash 上的双槽分区布局(mimxrt1024_evk.dts)与mcuboot-button0别名可直接支撑 MCUboot 引导与镜像升级流程。
  6. 复用超集板经验:当需要某些本板尚未支持的特性时,优先查阅同系列超集板 mimxrt1064_evk 板级文档 的实现方式,往往可以直接迁移。

结语

MIMXRT1024-EVK 以低成本 LQFP 封装提供了 Cortex-M7 500 MHz 的性能,而 Zephyr 的板级支持让它开箱即可使用完整的设备树、引脚复用、存储分区与多工具链烧录调试流程。通过本文梳理的硬件资源、引脚映射、时钟策略与构建调试命令,你可以快速在该板上验证 Zephyr 的网络、存储、传感器与实时控制能力,并基于 board 目录 中的 dts、defconfig 与 pinctrl 文件为定制硬件提供直接参考。

  • 操作系统
  • 嵌入式
  • 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),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/20 1:25:15

Linux服务器部署标准化手册:从分区规划到安全加固

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华
网站建设 2026/9/20 1:24:24

THERM5门窗热工建模:ISO 15099合规性实战指南

简介&#xff1a;本资源是一份面向建筑节能设计人员、门窗研发工程师及高校暖通/建环专业师生的THERM5&#xff08;LBNL&#xff09;软件入门级教学课件&#xff0c;系统解决门窗框与玻璃边缘稳态传热建模难、操作门槛高、结果解读不直观等实际问题。课件以PPT形式呈现&#xf…

作者头像 李华
网站建设 2026/9/20 1:23:04

微型电动汽车前脸虚拟装配质量分析:从公差建模到Python实现

简介&#xff1a;《机械设计与制造》2016年刊发的论文《基于虚拟装配的微型电动汽车前脸装配质量分析》是一份PDF格式的学术文献&#xff0c;面向新能源汽车、汽车制造及机械装配领域的工程师、科研人员和研究生&#xff0c;聚焦微型电动汽车前脸装配偏差控制与公差优化问题。该…

作者头像 李华
网站建设 2026/9/20 1:21:29

基于Jetson NANO与YOLOv5的智能门店访客计数系统实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

作者头像 李华