Zephyr 开发实战:Microchip MEC15xxEVB ASSY6853 评估板硬件解析与 SPI 镜像烧录指南
2026/9/19 10:16:53 网站建设 项目流程

Zephyr 开发实战:Microchip MEC15xxEVB ASSY6853 评估板硬件解析与 SPI 镜像烧录指南

【免费下载链接】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 仓库中 boards/microchip/mec15xxevb_assy6853/doc/index.rst 为核心依据,系统讲解 MEC15xxEVB ASSY6853 评估板的硬件组成、跳线配置、时钟与串口设定,以及基于 Dediprog SF100 编程器 + SPI Dongle 的完整烧录流程。读完本文,你将掌握该板卡的板级配置细节(含 DTS 源码佐证)、Boot-ROM SPI 镜像的生成与烧录方法,以及常见故障的排查思路。

板卡概览:面向 EC 应用的 MEC15xx 评估平台

MEC15xxEVB ASSY6853 是 Microchip 推出的评估开发套件,用于评估MEC15XX 系列微控制器。MEC15XX 系列是面向笔记本/台式机 Embedded Controller(EC)应用的高集成度 MCU,片上集成了键盘扫描、eSPI、PECI、PS/2、FAN PWM 与转速采集等 EC 典型外设。

需要特别注意的是,该评估板必须与子卡配合使用:主板需要与料号MEC1501 144WFBA SOLDER DC ASSY 6860(CPU 板)对接后才能运行。同时,文档明确说明:

  • MEC152x 已取代 MEC1501 进入量产
  • MEC152x 与 MEC150x 功能相同,唯一的区别是增强了 Boot-ROM SPI loader,其SPI 镜像格式已更新,需要新的 SPI 镜像生成工具
  • MEC1501 与 MEC152x 的 SPI 镜像格式互不兼容,但两者的评估板与 CPU 板硬件互相兼容。

从仓库的板级元数据看,board.yml 声明该板厂商为microchip,SoC 为mec1501_hsz;mec15xxevb_assy6853.dts 中compatible = "microchip,mec15xxevb_assy6853", "microchip,mec1501hsz"与之对应,并定义了model = "Microchip MEC15XXEVB_ASSY6853 evaluation board"

硬件资源一览

该评估板搭载MEC1521HA0SZ ARM Cortex-M4 处理器,主要硬件特性如下(完整继承自官方文档):

  • 256 KB RAM 与 64 KB 启动 ROM
  • 键盘接口(Keyboard interface)
  • ADC 与 GPIO 扩展排针
  • UART0、UART1、UART2 三路串口
  • FAN0 / FAN1 / FAN2 风扇接口排针
  • FAN PWM 接口
  • JTAG/SWD、ETM 与 MCHP Trace 调试端口
  • PECI 3.0 接口
  • I2C 电平转换器
  • 10 个 SMBUS 排针
  • 4 个 SGPIO 排针
  • VCI 接口
  • 5 路独立、硬件驱动的 PS/2 端口
  • eSPI 排针
  • 3 颗呼吸/闪烁 LED(Breathing/Blinking LEDs)
  • 2 个 SPI NOR 芯片座
  • 1 个复位按钮与 1 个 VCC_PWRGD 按钮
  • 1 路外部PCA9555 I/O 扩展芯片,I2C 地址可通过跳线选择
  • 1 路外部LTC2489 Δ-Σ ADC,I2C 地址可通过跳线选择
  • 板级供电跳线可选:+5V 2.1mm/5.5mm 桶形连接器USB Micro A 连接器

更多 SoC 细节请参阅MEC152x 参考手册(见文档末尾 References 部分)。

支持的 Zephyr 功能

文档通过.. zephyr:board-supported-hw::指令自动渲染受支持的功能列表。结合仓库中的设备树源码可以确认,该板已启用并配置的外设包括(见 mec15xxevb_assy6853.dts):

  • UART2&uart2,115200 baud,作为 Zephyr console 与 shell)
  • ADC0(ADC04~ADC07 与 VREF2 引脚)
  • I2C/SMBUSi2c_smb_0i2c_smb_1i2c_smb_2,其中 I2C01 上挂载 NXP PCA9555,地址 0x26)
  • eSPI0(配置了 IO-GIRQ 19、VW-GIRQs 24/25、PC-GIRQ 15 及完整 8 线 pinctrl)
  • PS/2ps2_0ps2_1两路,均带 sleep 态 pinctrl)
  • PWM0键盘控制器 kbd0(8×16 矩阵)、PECI0SPI0(SHD SPI,port-sel = <0>、单线模式)、TACH0(风扇转速采集)

板卡硬件组成

整套评估板由以下硬件模块构成(对应文档中的原理图引用):

  1. MEC15xx EVBASSY 6853 Rev A(主板)
  2. MEC1501 144WFBA SOLDER DC ASSY 6883(MEC152x 硅片子卡)
  3. SPI DONGLE ASSY 6791(SPI 烧录适配器,用于烧写板载 SPI NOR)

系统时钟与串口配置

系统时钟:MEC1521 使用48 MHz 内部振荡器 + 片内 PLL,最终产生12 MHz 的 EC 时钟频率。相关寄存器为数据手册第 4 章 "4.0 POWER, CLOCKS, and RESETS" 中的 Processor clock control register。

串口UART2 被配置为串口日志输出。在设备树中对应配置为:

&uart2 { status = "okay"; current-speed = <115200>; pinctrl-0 = <&uart2_tx_gpio146 &uart2_rx_gpio145>; pinctrl-names = "default"; };

(见 mec15xxevb_assy6853.dts)。同时chosen节点将zephyr,consolezephyr,shell-uart均指向&uart2,确保printk/shell 输出走 UART2。板级 defconfig(mec15xxevb_assy6853_defconfig)则启用了CONFIG_SOC_MEC1501_VTR3_1_8V、时钟控制、UART 控制台与 GPIO 等基础配置。

跳线设置指南

以下跳线设置针对MEC15xx EVB Assy 6853 Rev A1p0,用于正确演示板卡功能。高级用户可以偏离此推荐配置,但请自行评估风险。

电源相关跳线

  • 使用+5V 电源适配器供电:连接桶形连接器P11(5.5mm 外径 / 2.1mm 内径),并将跳线移至JP88 5-6
  • 使用micro-USB 型 A/B 连接器P12供电:将跳线移至JP88 7-8

注意:JP88 上必须且只能安装一枚跳线(A single jumper is required in JP88)。

常规配置跳线(全部置于 1-2)

以下跳线组用于配置 VCC Power good、nRESETI 与 JTAG_STRAP 等信号,默认全部短接 1-2:

JP22JP32JP33JP37JP43JP47JP54JP56JP58JP64JP65
1-21-21-21-21-21-21-21-21-21-21-2
JP72JP73JP76JP79JP80JP81JP82JP84JP87JP89
1-21-21-21-21-21-21-21-21-21-2
JP90JP91JP100JP101JP118
1-21-21-21-22-3

其中特殊功能跳线的含义如下表:

跳线功能设置
JP5VCC Power good1-2
JP4nRESETI1-2
JP45JTAG_STRAP2-3

Boot-ROM 拉带(Boot-ROM Straps)

以下跳线配置MEC1501 Boot-ROM 拉带

跳线功能设置
JP93CMP_STRAP2-3
JP11CR_STRAP1-2
JP46VTR2_STRAP2-3
JP96BSS_STRAP1-2

JP96 1-2将 SHD SPI CS0# 上拉到 VTR2。MEC1501 Boot-ROM 会采样 SHD SPI CS0#,若为高电平,则从SHD SPI加载代码——这正是后续通过 SPI Dongle 烧录 SPI NOR 后能够启动固件的硬件基础。

外设路由跳线(Peripheral Routing Jumpers)

下表中每一列分别用于使能 UART2、SWD、PVT SPI、SHD SPI 与 LED0-2 对应的引脚路由:

JP48 (UART2)JP9 (UART2)JP9 (SWD)JP38 (PVT SPI)JP98 (SHD SPI)JP41 (LED0-2)
1-22-32-32-31-2
4-54-55-65-63-4
7-88-98-98-95-6
10-1110-1111-1211-12
14-1514-15
17-1820-21

注意:启用 UART2 时,请确保JP39上 1-2、3-4 均已安装跳线。 为接收 UART2 串口输出,请按下图确认JP9已配置为 UART2 输出模式。

ASSY 6883 子卡(MEC1501 144WFBGA Socket DC Rev B1p0)的 32KHz 时钟跳线

上述跳线配置覆盖主板。ASSY 6883 MEC1501 CPU 板提供可选的外部 32KHz 时钟源能力:板上自带 32KHz 晶振,也可配置为在 XTAL2/32KHZ_IN 引脚上使用外部 50% 占空比的 32KHz 信号源。注意:固件必须在 MEC15xx 时钟使能寄存器中选择与跳线设置匹配的时钟源。如果使用 MEC15xx 内部硅振荡器,则 32K 跳线设置无关紧要。JP1用于示波器观测测试时钟输出。

并行 32KHz 晶振配置

JP2JP3
1-22-3

外部 32KHz(50% 占空比)配置

JP2JP3
NC1-2

ASSY 6856 子卡(MEC1503 144WFBGA Socket DC Rev B1p0)说明

MEC1503 ASSY 6856 CPU 卡不包含板载外部 32K 晶振或振荡器。唯一的跳线块JP1仅用于示波器观测测试时钟输出,不用于配置

编程与调试:SPI 镜像烧录完整流程

该板通过将固件写入板载 SPI NOR 芯片来启动(Boot-ROM 从 SHD SPI 加载代码),因此烧录流程围绕SPI 镜像生成 + SPI 编程器展开。Zephyr 构建系统会为板卡注册dediprogflasher(见 board.cmake,其中指定--spi-image=${PROJECT_BINARY_DIR}/${SPI_IMAGE_NAME}--vcc=0,即使用 3.5V 烧录电压)。

第一步:准备 Dediprog SF100 编程器

  1. 若使用Dediprog SF100 编程器,先完成其环境设置:

    • Windows 版本可在 SF100 产品页面获取;
    • Linux 版本源码可从 SF100 Linux GitHub 仓库获取,并按照 SF100 Linux 手册完成安装。
  2. Linux 用户务必把SF100Linux目录下的60-dediprog.rulesudev 规则文件复制到/etc/udev/rules.d(原文为 rules.s 或 rules.d),然后重启 udev 服务:

    $ udevadm control --reload
  3. dpcmd(Linux)或dpcmd.exe(Windows)所在目录加入系统PATH

第二步:获取 SPI 镜像生成工具

克隆MEC152x SPI Image Gen仓库(或直接下载该目录中的文件);若使用预生产 MEC150x芯片,则使用MEC150x SPI Image Gen仓库。

将镜像生成工具纳入 Zephyr 构建有两种方式:加入PATH,或设置环境变量EVERGLADES_SPI_GEN

export EVERGLADES_SPI_GEN=<path to tool>/everglades_spi_gen_RomE

Linux 与 Windows 下的工具文件名不同;预生产 MEC1501 SoC 对应工具为everglades_spi_gen_lin64

第三步(可选):自定义 SPI 镜像配置文件

如需覆盖默认配置,可指定自定义 SPI 镜像配置文件:

export EVERGLADES_SPI_CFG=custom_spi_cfg.txt

若不设置,构建系统默认使用板卡自带的 support/spi_cfg.txt。该文件包含两组 IMAGE 段,关键参数解析如下:

  • SPISizeMegabits = 4:SPI NOR 容量 4 Mbit;
  • ImageLocation = 0x10000 / 0x20000:两组镜像在 SPI 中的存放偏移;
  • SpiFreqMHz = 24 / 12:镜像 0 按 24 MHz(Dual 读命令)读取,镜像 1 按 12 MHz(Single 读命令)读取;
  • FwBinFile = zephyr.bin:固件源文件即构建产物zephyr.bin
  • FwLoadAddress = 0xE0000:固件加载地址;
  • UseECDSA = false/FwEncrypt = false:默认不启用签名与加密(示例中的密钥文件仅为配置模板字段)。

构建系统集成逻辑见 boards/microchip/mec15xxevb_assy6853/CMakeLists.txt:它优先读取EVERGLADES_SPI_GEN环境变量,否则按平台在PATH中查找everglades_spi_gen_lin64(Linux)或everglades_spi_gen.exe(Windows);工具可用时,会追加一条 post-build 命令everglades_spi_gen -i <cfg> -o <build>/spi_image.bin,从而在构建阶段自动生成 SPI 镜像。

第四步:硬件接线(Wiring)

  1. SPI Dongle ASSY 6791连接到 EVB 的J44接口:

  2. 将编程器连接到 Assy6791 板上的J6排针,它将烧写 SPI NOR 芯片U3。请确保编程器的偏移地址为 0x0。烧录可使用 Dediprog SF100 或同类 SPI 烧录工具。

  3. 关键注意:Dediprog 排针上的 SPI MISO/MOSI 是交换的!必须用独立导线将 Dediprog 引脚与 Assy6791 SPI 板的引脚按下表连接:

    Dediprog 连接器Assy6791 J6 连接器
    VCC1
    GND2
    CS3
    CLK4
    MOSI5
    MISO6

    (注意表中 MISO/MOSI 与引脚 5/6 的交叉对应关系,这是本步骤最常见的错误来源。)

  4. 将 MEC15xxEVB_ASSY_6853 板的UART2 端口通过 RS232 线缆连接到主机。

  5. 通过 micro-USB 线缆为板卡供电,并在JP88 7-8之间安装跳线以选择该供电方式:

  6. 完成后的最终接线应如下图所示:

第五步:构建(Building)

  1. 像平常一样构建hello_world示例(west build -b mec15xxevb_assy6853 samples/hello_world);
  2. 若构建系统能找到镜像生成工具,将生成spi_image.bin文件(位于构建目录),该二进制镜像即可用于烧写 SPI 芯片。

第六步:烧录(Flashing)

  1. 在第一个终端中运行终端程序监听串口输出。Linux 下设备通常为/dev/ttyUSB0,请勿关闭该终端。例如:

    $ minicom -D /dev/ttyUSB0 -o

    -o选项让 minicom 不发送 modem 初始化字符串。连接参数配置为:

    • 波特率:115200
    • 数据位:8
    • 校验:None
    • 停止位:1
  2. 在第二个终端窗口中用west烧录板卡,建议将两个终端分屏以便同时观察:

    $ west flash

    注意west进程启动后,请按下 Reset 按钮并保持按住,直到整个west进程成功结束。替代方案:如果不想每次按 Reset,可在west flash编程期间断开 SPI Dongle ASSY 6791 与 EVB 的连接,烧录完成后再插回J44接口并重新上电,效果相同。

  3. 你应在第一个终端看到输出"Hello World! mec15xxevb_assy6853"。如果没看到,按一下 Reset 按钮,消息即会出现。

调试(Debugging)

该板配备Cortex ETM 端口,可通过单一物理连接完成跟踪与调试;此外还带有仅支持 JTAG 会话的插座。

故障排查(Troubleshooting)

  1. 若应用未运行,请确认LED7LED8LED1三颗 LED 均已点亮;只要有其一熄灭,请重新检查电源相关跳线。
  2. 若无法用 Dediprog 编程,请将 Assy6791 从主板 Assy6853 上断开后重试。
  3. 若 Dediprog 无法检测到板载 flash,请按下板卡 Reset 按钮后重试。

扩展实践:在 I2C01 上测试 PCA9555

板载 NXPPCA95xx(PCA9555PW)I2C 从设备连接到I2C00 端口,但I2C00 与用于串口日志的 UART2 RS232-TTL 转换器共用引脚,因此无法同时使用 UART2 与 I2C00。要改在 I2C01 端口上测试,需按下表调整跳线:

  • JP99 1-2连接:将 I2C01_SDA 从 CPU 接到排针 J5
  • JP99 13-14连接:将 I2C01_SCL 从 CPU 接到排针 J5
  • JP25 21-22连接:I2C01_SDA 外部上拉
  • JP25 23-24连接:I2C01_SCL 外部上拉
  • JP44.1 ↔ J5.1连接:将 NXP PCA95xx 接入 I2C01
  • JP44.3 ↔ J5.3连接:将 NXP PCA95xx 接入 I2C01

从设备树看,PCA9555 挂载在i2c_smb_1port-sel = <1>)上,地址为0x26,其地址由JP53决定(1-2 = A0,3-4 = A1,5-6 = A2,地址格式0100<A2><A1><A0>b;默认 JP53 短接 1-2,得到 0x26),见 mec15xxevb_assy6853.dts。

板级支持源码导读

若想深入了解该板在 Zephyr 中的实现,可继续研读以下仓库文件:

  • mec15xxevb_assy6853.dts:外设使能、chosen/aliases节点、LED 定义(GPIO153/156/157,低电平有效)与各外设 pinctrl 绑定;
  • mec15xxevb_assy6853-pinctrl.dtsi:UART/ADC/I2C/eSPI/PS2/PWM/键盘/PECI/SPI/TACH 等引脚的引脚复用与 sleep 态定义;
  • mec15xxevb_assy6853_defconfig:SoC 电压档(VTR3 1.8V)、时钟控制、串口控制台与 GPIO 使能;
  • board.cmake 与 CMakeLists.txt:dediprog flasher 注册与 SPI 镜像后处理命令;
  • support/spi_cfg.txt:默认 SPI 镜像布局(双镜像、频率、读命令等)。

参考资料

官方文档末尾列出了以下参考资料(可依据对应名称检索):MEC1501 与 MEC152x 的数据手册/参考手册、MEC15xx EVB ASSY 6853 主板原理图、MEC1501 子卡(ASSY 6883)原理图、MEC1503 子卡(ASSY 6856)原理图、SPI Dongle ASSY 6791 原理图,以及 MEC152x/MEC150x SPI 镜像生成工具与 Dediprog SF100 的相关手册。所有跳线、接线与寄存器细节请以这些原理图与数据手册为准。

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

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

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

立即咨询