Zephyr RTOS 下的 NXP FRDM-MCXN236 开发板完全指南:硬件资源、烧录调试与工程实践
2026/9/19 20:17:35 网站建设 项目流程

Zephyr RTOS 下的 NXP FRDM-MCXN236 开发板完全指南:硬件资源、烧录调试与工程实践

【免费下载链接】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

FRDM-MCXN236 是 NXP 面向 MCX N23X 系列 MCU 推出的紧凑型可扩展开发板,集成了 150 MHz Arm Cortex-M33 内核、双 Bank Flash、高速 USB 与板载 MCU-Link 调试器。本文以 Zephyr 仓库中该板卡的官方文档 boards/nxp/frdm_mcxn236/doc/index.rst 为骨架,结合板级源码、设备树与构建配置,系统讲解硬件特性、引脚连接、系统时钟、串口控制台配置、LinkServer/J-Link 烧录调试流程与常见问题排查,帮助你在这块板上从零跑通 Zephyr 应用。

板卡概览:为 MCX N23X 快速原型验证而生

FRDM-MCXN236 定位为快速原型验证平台:尺寸紧凑、扩展方式多样,提供行业标准排针以便访问 MCU 的全部 I/O,内置开放标准的串行接口、外部 Flash 以及板载 MCU-Link 调试器。MCX N 系列是高能效、高性能微控制器,其智能外设与硬件加速器为多任务处理和高性能计算提供了支撑。

该板卡的 SoC 为 MCX-N236,与 Zephyr 中的 SoC 支持(nxp,mcxn236)一一对应,板级兼容性声明位于 frdm_mcxn236.dts:

model = "NXP FRDM_N236 board"; compatible = "nxp,mcxn236", "nxp,mcx";

硬件资源详解

根据板卡文档,FRDM-MCXN236 的核心硬件配置如下:

  • 主控:MCX-N236 Arm Cortex-M33 微控制器,主频 150 MHz
  • 存储:1 MB 双 Bank 片上 Flash、352 KB RAM
  • USB:高速 USB(Host/Device),片上 HS PHY,配 HS USB Type-C 连接器
  • 串行外设:8 路 LP Flexcomm,每路均支持 SPI、I2C、UART
  • 其他外设:2 路 FlexCAN(支持 FD)、2 路 I3C、2 路 SAI
  • 调试:板载 MCU-Link 调试器(CMSIS-DAP 协议)
  • 扩展接口:Arduino 排针、FlexIO/LCD 排针、SmartDMA/摄像头排针、mikroBUS

这些规格在仓库源码中都有对应实现。RAM 方面,SoC 级设备树 nxp_mcxn23x_common.dtsi 声明了sram0(256 KB),板级 frdm_mcxn236.dts 则将实际可用的 SRAM 配置为 192 KB:

&sram0 { compatible = "mmio-sram"; reg = <0x20000000 DT_SIZE_K(192)>; };

Flash 部分,SoC 设备树将 1 MB 片上 Flash 建模为soc-nv-flash,擦除块 8 KB、写入块 128 B(由 ROM Flash API 支持):

flash: flash@0 { compatible = "soc-nv-flash"; reg = <0 DT_SIZE_M(1)>; erase-block-size = <DT_SIZE_K(8)>; /* MCXN23x ROM Flash API supports writing of 128B pages. */ write-block-size = <128>; };

而板级设备树进一步将 1 MB Flash 划分为 mcuboot(80 KB)、两个等大的升级槽位 slot0/slot1(各 440 KB)以及 storage 分区(64 KB),分区边界严格对齐 8 KB 扇区,详见 frdm_mcxn236.dts。

板载外设映射与引脚连接

文档在 "Connections and IOs" 一节给出了调试串口引脚的连接关系:

名称功能用途
P0_PIO1_8UARTUART RX
P1_PIO1_9UARTUART TX

从板级设备树可以看到,这两根引脚属于 Flexcomm4,对应的引脚复用配置位于 frdm_mcxn236-pinctrl.dtsi:

pinmux_flexcomm4_lpuart: pinmux_flexcomm4_lpuart { group0 { pinmux = <FC4_P0_PIO1_8>, <FC4_P1_PIO1_9>; slew-rate = "fast"; drive-strength = "low"; input-enable; }; };

文档提到 MCX-N236 SoC 共有 6 个 GPIO 控制器,每个引脚的功能通过 pinmux 寄存器配置。板级设备树将 5 个 GPIO 控制器(gpio0 ~ gpio4)全部使能,并定义了丰富的别名与板载器件,见 frdm_mcxn236.dts:

  • LEDled0/led1/led2对应红(gpio4 18)、绿(gpio4 19)、蓝(gpio4 17)三色 LED,均为低电平有效
  • 按键sw0对应用户按键 SW2(gpio0 20,低电平有效、内部上拉,可通过 WUU 外部引脚 4 唤醒),sw1对应 SW3(gpio0 6)
  • 加速度计accel0指向挂接在 Flexcomm2 I2C 总线上的 FXLS8974 传感器(地址 0x18)
  • 其他别名watchdog0pwm-0(FlexPWM1)、rtcdie-temp0canbus(flexcan1)等

其中按键的唤醒能力通过 WUU(Wake-Up Unit)实现,设备树中显式声明了唤醒控制:

user_button_2: button_0 { label = "User SW2"; gpios = <&gpio0 20 (GPIO_ACTIVE_LOW | GPIO_PULL_UP)>; zephyr,code = <INPUT_KEY_WAKEUP>; /* SW2 wakes via WUU external pin 4. */ wakeup-ctrls = <&wuu NXP_WUU_PIN_4_FALLING_INT>; };

此外,板级设备树还完整映射了 Arduino R3 排针的 22 个引脚(A0~A5、D0~D15)到具体 GPIO,并定义了 8080 并行 LCD 连接器与 DVP 20 针摄像头连接器的引脚映射,这为下文的 Shields 支持提供了设备树基础。

系统时钟:PLL0 输出 150 MHz

板卡文档明确指出,MCX-N236 SoC 使用 PLL0 作为系统时钟源,运行在150 MHz。这一配置在 SoC 级源码 soc/nxp/mcx/mcxn/flash_clock_setup.c 中得到了印证:

/* PLL0 is set to 150 MHz */ uint32_t pll_rate = 150000000;

该文件同时展示了 FLEXSPI 时钟如何从 PLL0 分频而来(分频系数最大为 8),并对非安全(non-secure)执行模式做了条件编译保护。若你的应用对时钟有特殊要求(例如切换内核定时器),设备树中还同时使能了os_timersysticklptmr0(作为系统定时器伴随时钟),具体选用可通过 Kconfig 按应用需求控制,见 frdm_mcxn236.dts。

串口(Serial Port):Flexcomm4 作为控制台

MCX-N236 SoC 提供 8 路 FLEXCOMM 接口用于串行通信,其中Flexcomm4 被配置为 UART 控制台。板级设备树在chosen节点中做了三处绑定,分别指定 UART mcumgr、控制台与 shell 串口:

chosen { zephyr,uart-mcumgr = &flexcomm4_lpuart4; zephyr,console = &flexcomm4_lpuart4; zephyr,shell-uart = &flexcomm4_lpuart4; ... };

同时为 Flexcomm4 UART 配置了 115200 波特率与引脚复用:

&flexcomm4_lpuart4 { current-speed = <115200>; pinctrl-0 = <&pinmux_flexcomm4_lpuart>; pinctrl-names = "default"; };

板级 defconfig frdm_mcxn236_defconfig 中CONFIG_CONSOLE=yCONFIG_UART_CONSOLE=yCONFIG_SERIAL=yCONFIG_UART_INTERRUPT_DRIVEN=y即是对控制台能力的默认使能。

控制台连接参数

将 USB 线从 PC 连接到板卡 J10 接口,使用任意串口终端工具(minicom、putty 等)并按以下参数连接:

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

支持的 Shields 扩展板

文档列出了两块经过官方在 FRDM-MCXN236 上验证的 Zephyr Shield:

  • lcd_par_s035:支持显示接口。该板使用 Shield 的 MIPI_DBI 接口,连接至片上 FlexIO 外设。相关设备树配置在 frdm_mcxn236.dts,其中zephyr_mipi_dbi_parallel节点将 FlexIO 的 8 个 shifter、EN/WR 引脚(28)、RD 引脚(27)、数据起始引脚(4)以及复位/片选/RS 引脚与 eDMA0 通道 0 绑定,实现并行 LCD 驱动
  • dvp_20pin_ov7670:支持 SmartDMA 视频接口。设备树通过 SmartDMA 外设实现视频捕获(nxp,video-smartdma,vsync/hsync/pclk 引脚分别为 4/5/7),见 frdm_mcxn236.dts

构建、烧录与调试

板卡的构建与烧录遵循 Zephyr 标准流程(详见 Zephyr 文档中的 build_an_application 与 application_run 章节)。板卡支持的烧录运行器(runner)通过zephyr:board-supported-runners::指令在文档中自动列出,实际配置位于 board.cmake:

board_runner_args(jlink "--device=MCXN236" "--reset-after-load") board_runner_args(linkserver "--device=MCXN236:FRDM-MCXN236") # Pyocd support added with the NXP.MCXN236_DFP.17.0.0.pack CMSIS Pack board_runner_args(pyocd "--target=mcxn236") include(${ZEPHYR_BASE}/boards/common/linkserver.board.cmake) include(${ZEPHYR_BASE}/boards/common/jlink.board.cmake) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake)

可以看到该板支持 LinkServer、J-Link 与 pyocd 三种烧录方式,默认使用 LinkServer。

配置调试探针(Debug Probe)

烧录与调试都需要调试探针。该板默认使用板载MCU-Link CMSIS-DAP 调试探针,开箱即用。

使用 LinkServer

LinkServer 是本板的默认 runner,支持出厂固件的 MCU-Link。若板载调试电路的固件被更换过,需要按文档指引重新烧录默认 MCU-Link 固件:将跳线 JP5 短接使板卡进入DFU 模式,再执行固件编程。

使用 J-Link

J-Link 有两种接入方式:

  1. 复用板载调试电路:按文档指引将板载调试电路更新为 Segger J-Link 固件(同样需要短接跳线 JP5 进入 DFU 模式)
  2. 外接调试探针:将外部 J-Link 连接到板卡的 10 针 SWD 连接器(J12),同时必须短接跳线 JP7

两种方式都使用-r jlink选项指定 jlink runner:

west flash -r jlink

烧录示例(hello_world)

以官方 hello_world 示例为例,烧录命令为:

west build -b frdm_mcxn236 samples/hello_world west flash

打开串口终端,按下 RESET 按键复位板卡,终端应输出:

*** Booting Zephyr OS build v3.6.0-4478-ge6c3a42f5f52 *** Hello World! frdm_mcxn236/mcxn236

调试示例(hello_world)

调试流程与烧录类似,west debug会启动调试器并挂接目标:

west build -b frdm_mcxn236/mcxn236 samples/hello_world west debug

打开串口终端,在调试器中单步执行应用,终端应输出与烧录示例相同的信息(*** Booting Zephyr OS build ... ***Hello World! frdm_mcxn236/mcxn236)。

安全特性与 MCUboot 升级模式

板级 defconfig 默认启用了内存保护与 TrustZone 相关配置:

CONFIG_ARM_MPU=y CONFIG_HW_STACK_PROTECTION=y # Enable TrustZone-M CONFIG_TRUSTED_EXECUTION_SECURE=y

在 MCUboot 集成方面,Kconfig.defconfig 与 Kconfig.sysbuild 明确规定该板仅支持 MCUboot 的"upgrade only"(仅升级,OVERWRITE_ONLY)模式,且两个升级槽位大小必须相等——这与板级设备树中 slot0/slot1 各 440 KB 的等分设计完全一致。

常见问题排查

文档在 Troubleshooting 一节引用了两个通用文档片段,供遇到问题时参考:

  • Segger ECC / SystemView 相关:涉及 Segger 调试工具链与系统视图组件的使用(由segger-ecc-systemview.rst.inc提供)
  • 板卡通用排障:包括探针固件、烧录失败、串口无输出等常见问题的通用处理建议(由board-footer.rst.inc提供)

排查时可重点检查:JP5 是否处于 DFU 模式(影响固件烧录)、JP7 是否短接(影响外部 J-Link 接入)、串口参数是否为 115200-8-N-1,以及板载 MCU-Link 固件是否为出厂默认版本。

小结

FRDM-MCXN236 在 Zephyr 中拥有完整的板级支持:从 1 MB 双 Bank Flash 的分区管理、192 KB SRAM 配置、150 MHz PLL0 时钟树,到 Flexcomm4 控制台、Arduino/LCD/摄像头扩展接口,再到 LinkServer、J-Link、pyocd 三种烧录调试链路,均有清晰的设备树与构建配置佐证。按照本文流程,你可以快速在这块板上完成从构建、烧录、串口调试到外设扩展的全流程开发,并在此基础上深入 MCX N23X 的低功耗、TrustZone 安全与智能外设特性。

【免费下载链接】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),仅供参考

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

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

立即咨询