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/SMBUS(
i2c_smb_0、i2c_smb_1、i2c_smb_2,其中 I2C01 上挂载 NXP PCA9555,地址 0x26) - eSPI0(配置了 IO-GIRQ 19、VW-GIRQs 24/25、PC-GIRQ 15 及完整 8 线 pinctrl)
- PS/2(
ps2_0、ps2_1两路,均带 sleep 态 pinctrl) - PWM0、键盘控制器 kbd0(8×16 矩阵)、PECI0、SPI0(SHD SPI,
port-sel = <0>、单线模式)、TACH0(风扇转速采集)
板卡硬件组成
整套评估板由以下硬件模块构成(对应文档中的原理图引用):
- MEC15xx EVBASSY 6853 Rev A(主板)
- MEC1501 144WFBA SOLDER DC ASSY 6883(MEC152x 硅片子卡)
- 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,console与zephyr,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:
| JP22 | JP32 | JP33 | JP37 | JP43 | JP47 | JP54 | JP56 | JP58 | JP64 | JP65 |
|---|---|---|---|---|---|---|---|---|---|---|
| 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 |
| JP72 | JP73 | JP76 | JP79 | JP80 | JP81 | JP82 | JP84 | JP87 | JP89 |
|---|---|---|---|---|---|---|---|---|---|
| 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 | 1-2 |
| JP90 | JP91 | JP100 | JP101 | JP118 |
|---|---|---|---|---|
| 1-2 | 1-2 | 1-2 | 1-2 | 2-3 |
其中特殊功能跳线的含义如下表:
| 跳线 | 功能 | 设置 |
|---|---|---|
| JP5 | VCC Power good | 1-2 |
| JP4 | nRESETI | 1-2 |
| JP45 | JTAG_STRAP | 2-3 |
Boot-ROM 拉带(Boot-ROM Straps)
以下跳线配置MEC1501 Boot-ROM 拉带:
| 跳线 | 功能 | 设置 |
|---|---|---|
| JP93 | CMP_STRAP | 2-3 |
| JP11 | CR_STRAP | 1-2 |
| JP46 | VTR2_STRAP | 2-3 |
| JP96 | BSS_STRAP | 1-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-2 | 2-3 | 2-3 | 2-3 | 1-2 | |
| 4-5 | 4-5 | 5-6 | 5-6 | 3-4 | |
| 7-8 | 8-9 | 8-9 | 8-9 | 5-6 | |
| 10-11 | 10-11 | 11-12 | 11-12 | ||
| 14-15 | 14-15 | ||||
| 17-18 | 20-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 晶振配置:
| JP2 | JP3 |
|---|---|
| 1-2 | 2-3 |
外部 32KHz(50% 占空比)配置:
| JP2 | JP3 |
|---|---|
| NC | 1-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 编程器
若使用Dediprog SF100 编程器,先完成其环境设置:
- Windows 版本可在 SF100 产品页面获取;
- Linux 版本源码可从 SF100 Linux GitHub 仓库获取,并按照 SF100 Linux 手册完成安装。
Linux 用户务必把
SF100Linux目录下的60-dediprog.rulesudev 规则文件复制到/etc/udev/rules.d(原文为 rules.s 或 rules.d),然后重启 udev 服务:$ udevadm control --reload将
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_RomELinux 与 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)
将SPI Dongle ASSY 6791连接到 EVB 的
J44接口:将编程器连接到 Assy6791 板上的
J6排针,它将烧写 SPI NOR 芯片U3。请确保编程器的偏移地址为 0x0。烧录可使用 Dediprog SF100 或同类 SPI 烧录工具。关键注意:Dediprog 排针上的 SPI MISO/MOSI 是交换的!必须用独立导线将 Dediprog 引脚与 Assy6791 SPI 板的引脚按下表连接:
Dediprog 连接器 Assy6791 J6 连接器 VCC 1 GND 2 CS 3 CLK 4 MOSI 5 MISO 6 (注意表中 MISO/MOSI 与引脚 5/6 的交叉对应关系,这是本步骤最常见的错误来源。)
将 MEC15xxEVB_ASSY_6853 板的UART2 端口通过 RS232 线缆连接到主机。
通过 micro-USB 线缆为板卡供电,并在JP88 7-8之间安装跳线以选择该供电方式:
完成后的最终接线应如下图所示:
第五步:构建(Building)
- 像平常一样构建
hello_world示例(west build -b mec15xxevb_assy6853 samples/hello_world); - 若构建系统能找到镜像生成工具,将生成
spi_image.bin文件(位于构建目录),该二进制镜像即可用于烧写 SPI 芯片。
第六步:烧录(Flashing)
在第一个终端中运行终端程序监听串口输出。Linux 下设备通常为
/dev/ttyUSB0,请勿关闭该终端。例如:$ minicom -D /dev/ttyUSB0 -o-o选项让 minicom 不发送 modem 初始化字符串。连接参数配置为:- 波特率:115200
- 数据位:8
- 校验:None
- 停止位:1
在第二个终端窗口中用
west烧录板卡,建议将两个终端分屏以便同时观察:$ west flash注意:
west进程启动后,请按下 Reset 按钮并保持按住,直到整个west进程成功结束。替代方案:如果不想每次按 Reset,可在west flash编程期间断开 SPI Dongle ASSY 6791 与 EVB 的连接,烧录完成后再插回J44接口并重新上电,效果相同。你应在第一个终端看到输出
"Hello World! mec15xxevb_assy6853"。如果没看到,按一下 Reset 按钮,消息即会出现。
调试(Debugging)
该板配备Cortex ETM 端口,可通过单一物理连接完成跟踪与调试;此外还带有仅支持 JTAG 会话的插座。
故障排查(Troubleshooting)
- 若应用未运行,请确认
LED7、LED8、LED1三颗 LED 均已点亮;只要有其一熄灭,请重新检查电源相关跳线。 - 若无法用 Dediprog 编程,请将 Assy6791 从主板 Assy6853 上断开后重试。
- 若 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_1(port-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),仅供参考