尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Zephyr 板级支持指南:Nuvoton NPCX9M6F EVB 评估板开发、时钟配置与 J-Link 烧录调试实战

Zephyr 板级支持指南:Nuvoton NPCX9M6F EVB 评估板开发、时钟配置与 J-Link 烧录调试实战 Zephyr 板级支持指南Nuvoton NPCX9M6F EVB 评估板开发、时钟配置与 J-Link 烧录调试实战【免费下载链接】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 仓库中 Nuvoton NPCX9M6F_EVB 评估板boards/nuvoton/npcx9m6f_evb/doc/index.rst的板级支持文档展开系统讲解该板的硬件资源、系统时钟方案、串口控制台配置以及基于 J-Link/Servo 的镜像构建、烧录与调试全流程。读者将掌握如何用west build为npcx9m6f_evb构建 blinky 示例、如何理解其 90 MHz 内部振荡器到 15 MHz EC 时钟的 PLL 链路、如何通过 OpenOCD 脚本完成固件烧录与验证以及如何结合仓库源码中的设备树与 defconfig 配置做二次开发。板卡概述面向 EC 控制器开发的 NPCX9M6F_EVBNPCX9M6F_EVB 是 Nuvoton 推出的评估套件EVB用于评估 NPCX9 系列微控制器使用前需与料号为NPCX996F的芯片配套使用This board needs to be mated with part number NPCX996F。该板定位于嵌入式控制器EC开发场景板卡元数据定义于 boards/nuvoton/npcx9m6f_evb/board.ymlboard: name: npcx9m6f_evb full_name: NPCX9M6F_EVB vendor: nuvoton socs: - name: npcx9m6f从源码结构看该 SoC 属于soc/nuvoton/npcx/npcx9系列与 npck3/npcx4/npcx7 同属 Nuvoton NPCX 嵌入式控制器家族Kconfig.npcx9m6f_evb中通过select SOC_NPCX9M6F完成板级到 SoC 的绑定。硬件资源一览官方板级文档列出的核心硬件特性如下ARM Cortex-M4F 处理器带 FPU 的 M4 内核适合实时控制与传感器融合类负载256 KB RAM 与 64 KB Boot ROM注意Zephyr 板卡描述中的ram: 256/flash: 64见 npcx9m6f_evb.yaml分别指 RAM 256 KB、Flash 64 KB与文档中 Boot ROM 64 KB 相互印证ADC 与 GPIO 排针便于外接模拟信号与数字 IOUART0 与 UART1双串口其中 UART1 作为默认日志串口FAN PWM 接口面向 EC 风扇调速应用对应 tach测速与 PWM 外设JTAG 接口用于调试与烧录Intel Modular Embedded Controller CardMECC排针兼容 Intel MECC 规范的模块化 EC 扩展接口。板级外设能力Supported Features通过zephyr:board-supported-hw::指令自动生成的特性列表与 npcx9m6f_evb.yaml 中的supported字段一一对应包含以下可用的驱动外设外设说明adc模拟数字转换EVB 上引出通道 0/2clock时钟控制驱动gpio通用 IO含 LED 与按键矩阵i2cI2C 总线i2c0_0pm电源管理pwmPWM 输出含 LED 呼吸灯pslPSLPad Sleep低功耗 IOtach风扇转速计uart串口UART0/UART1watchdog看门狗在 Zephyr 中可通过west boards | grep npcx9或查阅该 yaml 快速确认板卡能力集作为选择示例与测试套件的依据。系统时钟90 MHz 内部振荡器 PLL 生成 15 MHz EC 时钟板级文档明确NPCX9M6F 使用90 MHz 内部振荡器internal oscillator配合片上 PLL产生15 MHz 的 EC 时钟the 90Mhz internal oscillator with the on-chip PLL to generate a resulting EC clock rate of 15 MHz详见用户手册 Processor clock control register第 4 章。这也意味着该板不需要外部晶振即可获得系统时钟降低了 BOM 成本与硬件设计复杂度。从源码层面可以进一步印证时钟链路的配置方式soc/nuvoton/npcx/npcx9/Kconfig.defconfig中SYS_CLOCK_HW_CYCLES_PER_SEC直接取自设备树节点itims的clock-frequency属性default $(dt_nodelabel_int_prop,itims,clock-frequency)说明 Zephyr 的系统时钟周期频率由 ITIM内部定时器节点决定CORTEX_M_SYSTICK默认在未启用NPCX_ITIM_TIMER时开启即通常使用 Cortex-M4 的 SysTick 作为系统节拍源板级 Kconfig.defconfig 将SYS_CLOCK_TICKS_PER_SEC设为 1000即系统 tick 为 1 ms。开发者在配置外设采样率、波特率或低功耗定时时应始终以内核运行在 15 MHz EC 时钟这一前提来计算分频而不是以 90 MHz 振荡器频率直接估算。连接与 IO设备树中的引脚复用与板载外设板级文档说明 Nuvoton 提供该板的原理图Nuvoton to provide the schematic for this board。在 Zephyr 中板级外设的引脚分配与复用定义在 npcx9m6f_evb.dts 与配套的 npcx9m6f_evb-pinctrl.dtsi 中可直接作为 IO 规划的依据。板载 LED 与 aliasesaliases { /* For samples/basic/blinky_pwm */ pwm-led0 pwm_led0_green; /* For gpio test suites */ led0 gpio_led_red; /* For pwm test suites */ pwm-0 pwm6; /* For i2c test suites */ i2c-0 i2c0_0; /* For watchdog sample */ watchdog0 twd0; peci-0 peci0; }; leds-pwm { compatible pwm-leds; pwm_led0_green: pwm_led_0 { pwms pwm6 0 PWM_MSEC(20) PWM_POLARITY_INVERTED; label User D7 green; }; }; leds-gpio { compatible gpio-leds; gpio_led_red: led_0 { gpios gpio6 0 GPIO_ACTIVE_LOW; label User D8 red; }; };User D7 green由 PWM6 通道 0 驱动20 ms 周期、极性反转适合samples/basic/blinky_pwm呼吸灯演示User D8 redGPIO6 引脚 0低电平有效供 GPIO 测试套件与samples/basic/blinky使用。关键外设引脚复用pinctrl设备树中通过pinctrl-0显式声明各外设的引脚功能替换默认配置外设引脚复用节点引脚/说明UART1控制台uart1_2_sin_gp64/uart1_2_sout_gp65UART1_SL2即 PIN64/65115200 bpsPWM6pwm6_gpc0GPC0开漏输出ADC0adc0_chan0_gp45/adc0_chan2_gp43通道 0/2供adc_api驱动测试eSPIespi_lpc_gp46_47_51_52_53_54_55_57LPC/eSPI 主机接口I2C0_0i2c0_0_sda_scl_gpb4_b5GPB4/5内部上拉并锁定 pinmuxFast 模式Tach1ta1_1_in_gp40风扇测速输入Port-A、LFCLK 采样、每圈 1 脉冲PECIpeci_dat_gp81PECI 数据线键盘矩阵KSI0~KSI7 KSO00~KSO1213×8 矩阵见下此外 npcx9m6f_evb-pinctrl.dtsi 还做了两项关键定制i2c0_0_sda_scl_gpb4_b5 { bias-pull-up; /* Enable internal pull-up for i2c0_0 */ pinmux-locked; /* Lock pinmuxing */ }; pwm6_gpc0 { drive-open-drain; };即 I2C0_0 启用内部上拉并将复用关系锁定PWM6 输出配置为开漏驱动——这些细节在实际硬件适配时容易被忽略却是信号完整性正确的关键。13×8 键盘矩阵示例EVB 通过 KSI0~KSI78 行与 KSO00~KSO1213 列演示键盘矩阵接线kbd { pinctrl-0 ksi0_gp31 /* KSI0 PIN31 */ ... kso12_gp05 /* KSO12 PIN05 */; pinctrl-names default; row-size 8; col-size 13; status okay; };对应引脚为 KSI0PIN31、KSI1PIN30、KSI2PIN27、KSI3PIN26、KSI4PIN25、KSI5PIN24、KSI6PIN23、KSI7PIN22KSO00PIN21、KSO01PIN20、KSO02PIN17、KSO03PIN16、KSO04PIN15、KSO05PIN14、KSO06PIN13、KSO07PIN12、KSO08PIN11、KSO09PIN10、KSO10PIN07、KSO11PIN06、KSO12PIN05。若需裁剪矩阵按row-size/col-size与复用节点同步修改即可。串口UART1 作为日志与控制台板级文档指明 UART1 is configured for serial logs。设备树中的chosen节点做了三处绑定chosen { zephyr,sram sram0; zephyr,console uart1; zephyr,shell-uart uart1; zephyr,flash flash0; };zephyr,console内核打印与printk输出目标zephyr,shell-uartZephyr Shell 交互终端zephyr,sram/zephyr,flash分别指向 sram0 与 flash0供内存与固件布局使用。UART1 的完整配置为uart1 { status okay; current-speed 115200; /* Use UART1_SL2 ie. PIN64.65 */ pinctrl-0 uart1_2_sin_gp64 uart1_2_sout_gp65; pinctrl-names default; };即 UART1_SL2 功能PIN64/65波特率115200。终端软件minicom/puTTY 等需与此一致。驱动层面板级 npcx9m6f_evb_defconfig 启用了CONFIG_SERIAL、CONFIG_UART_INTERRUPT_DRIVEN、CONFIG_CONSOLE与CONFIG_UART_CONSOLE确保日志与控制台可用。编程与调试J-Link/SWD、OpenOCD 与 ChromiumOS Servo板卡自带 CortexETM 端口可通过单条物理连接完成 trace 与调试同时提供JTAG-only 插座comes with sockets for JTAG-only sessions兼顾完整调试与最小化接线两种场景。支持的烧录/调试方式zephyr:board-supported-runners::会列出该板支持的 runner。板级烧录逻辑定义在 board.cmakeboard_runner_args(openocd --cmd-load npcx_write_image) board_runner_args(openocd --cmd-verify npcx_verify_image) include(${ZEPHYR_BASE}/boards/common/openocd.board.cmake)即通过OpenOCD烧录并注册自定义的npcx_write_image写镜像与npcx_verify_image校验镜像两个 Tcl 过程。配套的 support/openocd.cfg 揭示了底层烧录细节# script for Nuvoton NPCX Cortex-M4 Series source [find interface/jlink.cfg] transport select swd source [find target/npcx.cfg] proc npcx_write_image {target_image} { flash write_image erase $target_image 0x64000000 ihex } proc npcx_verify_image {target_image} { verify_image $target_image 0x64000000 ihex }要点调试器接口为J-Linkinterface/jlink.cfg传输协议选择SWD目标定义使用 Nuvoton NPCX 专用 target 脚本target/npcx.cfg固件以IHEX 格式写入地址0x64000000NPCX 系列 Flash 控制器映射地址先擦除后写入并支持写后校验。通过 Servo 烧录ChromiumOS 方案文档说明若正确安装了 IDC 排针该板同时支持 J-TAG 与ChromiumOS servo两种烧录路径。使用 Servo V2、μServo 或 Servo V4CCD时请参考 Chromium EC 官方烧录文档原文中的Chromium EC Flashing Documentation链接。这条路径面向 ChromiumOS/EC 开发工作流适合同时维护 ChromeOS 固件的团队。构建并烧录 blinky 示例板级文档通过zephyr-app-commands::指令给出标准构建命令等价于west build -b npcx9m6f_evb samples/basic/blinky west flashwest build在应用目录下生成构建产物-b npcx9m6f_evb指定目标板west flash自动调用 OpenOCD runner经由 J-Link/SWD 以npcx_write_image流程写入镜像若跳过配置步骤可加--pristine或直接使用文档中的maybe-skip-config语义当构建目录已有配置时不重复配置。烧录后可用 minicom 等工具连接 UART1115200观察 blinky 的启动日志输出。使用 J-Link 调试文档给出的调试方式为Use JTAG/SWD with a J-Link。操作建议从 SEGGER 官网下载并安装 J-Link 驱动文档原文指向 https://www.segger.com/downloads/jlink/请以官方最新发布为准连接 J-Link 与板载 JTAG/SWD 接口在 Zephyr 中通常配合 west 与调试器运行west debug或在 IDE如 Zephyr 支持的 VS Code 插件中启动 GDB 调试会话如需跟踪可借助板卡提供的 Cortex ETM 端口进行单连接 trace 调试。板级默认配置速查结合 npcx9m6f_evb_defconfig该板固件构建时的默认 Kconfig 开关如下二次开发时可在此基础上增量覆盖# Enable NPCX firmware header CONFIG_NPCX_HEADERy CONFIG_NPCX_IMAGE_OUTPUT_HEXy CONFIG_NPCX_HEADER_SPI_MAX_CLOCK_50y CONFIG_NPCX_HEADER_SPI_READ_MODE_DUALy # Enable MPU CONFIG_ARM_MPUy # Clock configuration CONFIG_CLOCK_CONTROLy # UART Driver CONFIG_SERIALy CONFIG_UART_INTERRUPT_DRIVENy # GPIO Driver CONFIG_GPIOy # Console Driver CONFIG_CONSOLEy CONFIG_UART_CONSOLEy配置项说明CONFIG_NPCX_HEADER/CONFIG_NPCX_IMAGE_OUTPUT_HEX生成 NPCX 专用固件头与 IHEX 输出供0x64000000地址烧录使用CONFIG_NPCX_HEADER_SPI_MAX_CLOCK_50/CONFIG_NPCX_HEADER_SPI_READ_MODE_DUALSPI Flash 头信息中的最大时钟与双线读模式影响从 SPI 启动的时序CONFIG_ARM_MPU启用 ARM MPU 内存保护契合 EC 场景对安全性的要求CONFIG_CLOCK_CONTROL启用时钟控制驱动配合前文 PLL 配置串口与 GPIO/Console 开关保证最小可运行系统具备日志输出能力。系统节拍方面板级Kconfig.defconfig设置SYS_CLOCK_TICKS_PER_SEC10001 ms tickSoC 级soc/nuvoton/npcx/npcx9/Kconfig.defconfig设置NUM_IRQS64并默认启用CORTEX_M_SYSTICK共同构成内核时序基础。小结NPCX9M6F_EVB 是体验 Nuvoton NPCX9 系列 EC 微控制器与 Zephyr 集成的直接入口。围绕官方板级文档本文梳理了其 Cortex-M4F 硬件资源、90 MHz 振荡器经 PLL 生成 15 MHz EC 时钟的时钟方案、以 UART1 为日志控制台的串口配置以及 J-Link/SWD OpenOCDIHEX 写入0x64000000与 ChromiumOS Servo 两条烧录路径并补充了设备树引脚复用、键盘矩阵、板级默认 Kconfig 等源码级细节。开发者可依据west build -b npcx9m6f_evb samples/basic/blinky快速上手再参照 npcx9m6f_evb.dts 与 support/openocd.cfg 按需裁剪外设与烧录流程。【免费下载链接】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),仅供参考
返回列表