Zephyr 开发实战:Nuvoton NuMaker-M031KI 开发板平台支持与 Hello World 烧录调试指南

发布时间:2026/9/19 7:45:35
Zephyr 开发实战:Nuvoton NuMaker-M031KI 开发板平台支持与 Hello World 烧录调试指南
Zephyr 开发实战Nuvoton NuMaker-M031KI 开发板平台支持与 Hello World 烧录调试指南【免费下载链接】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导读本文围绕 Zephyr RTOS 仓库中 NuMaker-M031KI 开发板官方文档完整介绍这块基于 Nuvoton NuMicro® M031 系列 MCUArm Cortex-M0 内核开发板的硬件特性、Zephyr 平台支持情况、Hello World 应用的编译烧录与调试流程并结合仓库中的设备树、Kconfig 与构建脚本源码深入解释板级配置的底层实现。阅读完本文后你将掌握如何在 Zephyr 中为 numaker_m031ki 目标板完成一次完整的开发闭环从硬件认识、串口连接、编译烧录到使用命令行与 VS Code 进行调试。开发板概览NuMaker-M031KI 的硬件定位NuMaker-M031KI 是由新唐科技Nuvoton专门开发的一款外设高度集成的单片机平台其核心是基于 NuMicro® M031 系列 MCU型号 M031KIAAE构建。官方文档明确指出该板搭载32 位 Arm Cortex-M0 内核是典型的低成本、低功耗、资源充足的入门级与工业级控制平台。根据 board 定义文件该板的 Zephyr 平台元数据如下属性值标识符numaker_m031ki名称NUVOTON NUMAKER-M031KI Kit类型mcu架构arm工具链zephyr / gnuarmembRAM96 KBFlash512 KB厂商nuvoton官方文档列出的核心特性如下32 位 Arm Cortex-M0 M031KIAAE MCUM031 系列的入门款内核内核时钟最高 48 MHz板载 12 MHz 晶振配合 PLL 可运行至最高主频详见下文512 KB 嵌入式 Dual Bank Flash 与 96 KB SRAMDual Bank 架构便于实现双镜像升级A/B 分区Arduino UNO 兼容接口可直接搭配各类 Arduino 扩展板一个复位按键用于复位开发板两颗 LED一颗电源指示一颗用户可编程板载 NU-Link2 ICE 调试器/编程器带 SWD 连接器同时可将 UART0 虚拟为 USB 串口。注意文档中的 NuMaker-M3351KI 为笔误实际板卡型号为 NuMaker-M031KI。支持的硬件特性与时钟来源官方文档通过.. zephyr:board-supported-hw::指令自动列出了该板在 Zephyr 中支持的硬件功能并从源码层面可以确认GPIO 与 UART 是该板的标准启用外设见 numaker_m031ki.yaml 中supported:列表同时 默认 defconfig 中还启用了系统时钟控制器CONFIG_CLOCK_CONTROL_NUMAKER_SCCy、串口CONFIG_SERIALy与中断驱动 UARTCONFIG_UART_INTERRUPT_DRIVENy以及控制台支持CONFIG_CONSOLEy、CONFIG_UART_CONSOLEy。关于时钟文档特别强调板载 12 MHz 晶振允许设备运行在 48 MHz 的最高工作速度。这一说法在设备树中可以得到印证——MCU 的 SRAM 与 Flash 容量定义在 m031kia.dtsi 中sram0位于0x20000000、大小 96 KBFlash 控制器fmc位于0x4000c000映射了 512 KB 的flash0。若需了解外设细节可查阅新唐官方 M031 TRM技术参考手册。板级设备树DTS剖析板级设备树 是整个平台描述的骨架主要包含以下关键信息兼容性声明compatible nuvoton,numaker-m031ki并包含nuvoton/m031kia.dtsi与板级 pinctrl 头文件别名与 chosen 节点led0指向用户 LEDred_ledzephyr,console/zephyr,shell-uart指向uart0115200 波特率见uart0节点的current-speed 115200zephyr,sram、zephyr,flash、zephyr,code-partition分别指向 SRAM、Flash 与slot0_partition其中 code-partition 指向 A/B 分区中的 image-0 槽位用户 LEDred_led接在 GPIOB 第 14 脚低电平有效GPIO_ACTIVE_LOW标签为 User LD0这也是文档中一颗用户自定义 LED的源码实现Flash 分区布局支持 MCUboot 双镜像升级boot_partition偏移0x0大小0xfe00约 63.5 KB标签 mcubootslot0_partition偏移0xfe00大小0x34100约 208 KB标签 image-0slot1_partition偏移0x43f00大小0x34100标签 image-1storage_partition偏移0x78000大小0x800032 KB标签 storage用于存放设置/密钥等持久化数据。引脚复用PinMux配置板级 pinctrl 文件 定义了 UART 的引脚复用关系uart0_defaultPB12用作UART0_RXDPB13用作UART0_TXD——这是默认控制台串口uart1_defaultPB3/PB2分别映射UART1_TXD/UART1_RXDPA0/PA1映射UART1_nRTS/UART1_nCTS而PC4复用为普通 GPIO。注释清晰地给出了 Arduino 引脚到 MCU 引脚的对应关系TX/RX/RTS/CTS/RST -- D1/D0/D11/D12/D2 -- PB3/PB2/PA0/PA1/PC4即 UART1 接在 Arduino UNO 兼容接口的 D0/D1 排针上。构建与烧录从 Hello World 开始串口连接虚拟 COM 端口官方文档给出了具体的串口接线步骤板载调试器 NU-Link2 可将UART0 模拟为 USB 上的虚拟串口VCOM将开发板上的ISW1 DIP 开关第 1-3 位TXD、RXD、VCOM拨到 ON以启用虚拟串口功能使用 USB 线连接 NuMaker-M031KI 与主机运行串口终端程序连接开发板例如$ minicom -D /dev/ttyACM0这里/dev/ttyACM0是典型的 USB CDC ACM 设备节点若系统分配了其他节点号请以实际ls /dev/ttyACM*结果为准。编译并烧录 Hello World使用west构建并烧录 hello_world 示例$ west build -b numaker_m031ki samples/hello_world $ west flash构建命令中的-b numaker_m031ki指定目标板samples/hello_world为 Zephyr 自带的经典示例源码位于 samples/hello_world。west flash会自动探测并使用可用的烧录器。支持的烧录后端Runner文档中的.. zephyr:board-supported-runners::指令展开后对应板级 CMake 配置。查看 board.cmake 可以看到该板支持两种烧录后端board_runner_args(pyocd --targetm031kiaae) include(${ZEPHYR_BASE}/boards/common/pyocd.board.cmake) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)pyOCD以m031kiaae为目标芯片型号与板载 M031KIAAE MCU 对应是首选烧录后端OpenOCD使用 support/openocd.cfg该配置通过source [find interface/nulink.cfg]加载 NU-Link 接口脚本并通过source [find target/numicro.cfg]加载 NuMicro 目标芯片脚本。构建系统会根据当前连接的调试器自动选择合适的 runner。例如使用 OpenOCD 时亦可显式指定west flash -r openocd。调试命令行与 VS Code 双路径命令行调试west debug同样以 hello_world 为例$ west build -b numaker_m031ki samples/hello_world $ west debugwest debug会启动调试器并停在入口处随后即可在调试器中单步执行应用程序Step through the application in your debugger。常用调试器命令包括continue继续运行、break设置断点、next/step单步跳过/步入、print打印变量等。VS Code 调试支持官方文档还提供了基于 VS Code 的图形化调试方案在 VS Code 扩展市场安装Nuvoton NuMicro Cortex-M Pack扩展 IDNuvoton.nuvoton-numicro-cortex-m-pack按照该扩展自带的 Getting Started 指南操作。该扩展是面向新唐 NuMicro Cortex-M 微控制器的一站式开发工具包集成了项目创建、编译、烧录与调试能力适合不习惯纯命令行的工作流。配合 Zephyr 的west工具链使用时可以先用west build生成 ELF再在 VS Code 的调试配置中指向生成的build/zephyr/zephyr.elf并选择 pyOCD 或 OpenOCD 作为调试后端。源码级验证平台配置如何生效为帮助读者进一步理解板级支持在 Zephyr 中的落地方式这里补充几条源码印证链SoC 系列选择板级 Kconfig.numaker_m031ki 通过select SOC_M031XXX将板卡与 soc/nuvoton/numaker/m031x/Kconfig.soc 中定义的 M031XXX SoC 绑定SoC 描述文件在 soc/nuvoton/numaker/soc.yml 中可查到m031x系列及其下的m031xxx具体型号与板级board.yml中声明的socs: m031xxx一一对应SoC 公共设备树m031x.dtsi 定义了 M031 系列通用的外设节点UART、GPIO 等而 m031kia.dtsi 补充了 96 KB SRAM 与 512 KB Flash 的具体容量。由此可以推断M031KIAAE 属于 M031x 系列下的 M031XXX 变体板级支持通过Board → SoC 系列 → 具体型号三级结构逐层复用这正是 Zephyr 可扩展平台模型可参考 boards/Kconfig 与 soc/Kconfig 的组织方式在该板上的体现。参考资源板卡官方文档本文主体boards/nuvoton/numaker_m031ki/doc/index.rst板级设备树numaker_m031ki.dts引脚复用配置numaker_m031ki-pinctrl.dtsi默认配置numaker_m031ki_defconfig烧录后端配置board.cmakeSoC 支持soc/nuvoton/numaker/m031x/Kconfig.soc 与 m031kia.dtsi此外官方资料NuMaker M031KI 用户手册与 M031 技术参考手册 TRM由新唐科技提供可前往 Nuvoton 官网 M031 系列文档页面获取用于进一步查阅外设寄存器细节与电气特性。【免费下载链接】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),仅供参考