0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

系统中的无名英雄:EC

进迭时空 ? 2025-08-26 09:03 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

在现代计算机体系结构中,尤其是在笔记本电脑等移动平台中,存在一个至关重要的组件,它默默无闻地工作,却主导着系统的功耗、稳定性和用户交互体验。这就是嵌入式控制器(Embedded Controller, EC)。



嵌入式控制器(EC)



EC 是什么?


EC 是一种专用的低功耗微控制器MCU),集成在主板上,负责处理大量与主处理器(Application Processor, AP)解耦的系统级任务。其最显著的特点之一是“始终在线”(always-on)的运行模式:只要主板持续供电,即便电脑休眠或关机,它依然在工作,随时准备响应你的唤醒、开机等指令。




为什么需要 EC?


EC 的诞生源于计算机系统设计中的一个基本原则:功能分工。主处理器(CPU)擅长执行高性能的复杂计算任务,但若同时承担大量低速、琐碎且需实时响应的硬件控制工作,将严重影响系统整体效率。


EC 正是为此诞生的一种专用低功耗控制器,用于分担这类任务。它的职责也因此不断演进:


在 PC 发展早期,为避免 CPU 被键盘频繁的中断和扫描操作所干扰,工程师引入了微控制器(即 EC 的前身)来专门监控键盘矩阵,并将处理后的按键信号上传至主机。

随着笔记本电脑普及,EC 的角色显著扩展,它接管了电源管理、散热风扇控制和快捷键响应等功能。

如今,EC的控制已深入系统底层,其职责已涵盖复杂的充电协议(如USB PD)、多样的传感器管理,以及“开盖唤醒/启动”等功能。


总的来看,EC 的存在使得许多对时效性和功耗有严苛要求的底层任务从 CPU 中解耦,显著提升了系统的响应效率、稳定性与能效表现。




EC 的职责


EC 覆盖的职责范围非常广泛,涉及多个与底层硬件紧密交互的实时控制任务。其核心功能涵盖电源管理、热控制、人机交互、传感器协同等多个方面,是保障系统稳定运行、降低功耗、优化用户体验的关键组成部分。


下表对 EC 的主要职责进行了分类整理,以便更直观地展现其在系统中的角色分工。


表1:EC功能与职责

6f98d6f8-8218-11f0-9080-92fbcf53809c.png




主机与 EC 的桥梁


EC与主机之间需要一条稳定高效的物理通道来交换命令和数据。随着技术的演进,连接EC的总线也经历了一次重要的升级换代,从传统的LPC总线演进到了现代PC架构的新标准——eSPI总线。


过去,这种连接主要依赖LPC(Low Pin Count)总线。LPC以其结构简单、兼容性强的特点服务了多年。然而,随着笔记本电脑向着更轻薄、更长续航、功能更复杂的方向发展,LPC在带宽、功耗和引脚数量上的局限性日益凸显,已无法满足现代系统的需求。


为此,Intel推出了LPC的继任者——eSPI(Enhanced Serial Peripheral Interface)总线,并迅速成为现代PC平台的新标准。eSPI针对PC体系结构进行了全面优化:


更少的引脚:显著减少了物理引脚数量,简化了主板布线。

更低的电压:工作电压降至1.8V,降低了功耗,并更好地适配主流SoC。

更高的频率:提升了时钟频率,并支持双通道和四通道模式,大幅提升了数据吞吐量。


这些技术进步为现代轻薄型笔记本的设计带来了显而易见的益处。更少的引脚和更低的电压,意味着主板设计可以更简洁、功耗更低、续航更长。


而eSPI提供的更高带宽,则为EC承担更复杂的任务提供了坚实的基础,使其能够从容应对高频的传感器数据读取、复杂的USB-C Power Delivery协议协商等对通信速率要求高的功能。


表2:LPC vs. eSPI 总线对比

6fb25588-8218-11f0-9080-92fbcf53809c.jpg



深入x86平台 EC


深入x86平台 EC,首先聚焦其广泛应用于 Windows 平台笔记本和台式机中的EC生态。




x86平台 EC


‘x86平台EC’ 并非指 EC 本身采用 x86 指令集,而是指其用于配合搭载 Intel 或 AMD x86 架构处理器的 PC 系统平台。事实上,EC 通常基于 ARMRISC-V 或其他 RISC(精简指令集)架构的 MCU,这类架构以低功耗、快速响应为优势,更适合处理实时性强、资源受限的底层任务。


这种设计与主处理器所采用的 CISC(复杂指令集计算机)架构形成了互补关系:前者专注于任务调度和状态管理,后者承担高性能的应用处理。


基于这样的设计定位,x86 平台逐渐发展出一套成熟的 EC 生态系统,芯片方案主要由几家厂商提供并广泛应用于主流 PC 产品中。其中较为常见的供应商包括新唐科技(Nuvoton)、联阳半导体(ITE Tech)和微芯科技(Microchip)等。


6fc81652-8218-11f0-9080-92fbcf53809c.png


这张简化系统框图描绘了基于 Intel Kaby Lake U MCP 平台的核心组件连接。图中央的 Intel KABYLAKE_U MCP 是主处理器,它通过 eSPI 接口与 SMSC KBC MEC1505 这个EC紧密连接。


EC 负责直接管理键盘/触摸板和系统散热风扇。这张图是系统主要模块连接的概览,因此没有展示所有详细的电路和元件,实际上和EC相连接的还有SPI Flash、LED灯等模块。




主机与EC通信方式


在Windows操作系统中,EC与系统的交互深度整合在ACPI(高级配置与电源接口)框架之内。我们可以将这种复杂的交互分解为三个逻辑层面来理解:上层的ACPI抽象接口、中层的系统核心驱动以及底层的硬件通信协议。


1. 上层:ACPI抽象接口 (The "API" Layer)


系统固件(BIOS/UEFI)会提供一系列ACPI表(如DSDT和SSDT),这些表中用ACPI机器语言(AML)定义了EC所支持的功能。这些功能被封装成一个个标准化的“控制方法”(Control Methods)。


操作系统只需调用这些抽象的、如同API般的方法,即可命令EC工作,而无需关心其底层的硬件实现细节。

6fdc2b4c-8218-11f0-9080-92fbcf53809c.png

取自ACPI-spec6.5 4.8节


2. 中层:Acpi.sys 核心驱动 (The "Translator" Layer)


Windows内置的Acpi.sys驱动程序是连接操作系统与EC等硬件的核心桥梁。它的主要职责是:在系统启动时解析BIOS提供的ACPI表,将硬件功能呈现给操作系统;并在运行时,将操作系统发出的标准请求(如获取电池信息)翻译成EC能懂的底层硬件命令。


3. 底层:硬件通信协议 (The "Physical" Layer)


这是Acpi.sys实际与EC进行“对话”的方式。这个通信过程遵循ACPI规范,包含两种方向的通信:


主机到EC的通信(命令/查询): 当Acpi.sys需要执行一个ACPI方法时,它会通过I/O端口与EC通信。

检查状态:首先查询 命令/状态寄存器 (Port 0x66),等待输入缓冲(IBF)标志位清空,表示EC已准备好接收命令。

发送命令/数据:向 命令/状态寄存器 (Port 0x66) 或 数据寄存器 (Port 0x62) 写入相应的字节。

获取响应:等待输出缓冲(OBF)标志位置位,表示EC已将响应数据准备好,然后从 数据寄存器 (Port 0x62) 读取结果。 这个“检查-发送-等待-读取”的握手过程确保了主机与EC之间的同步。


EC到主机的通信(事件通知): 当EC需要主动报告一个事件时,它无法直接向CPU发送复杂数据。

触发中断:EC会向CPU发送一个系统控制中断(System Control Interrupt, SCI)。

系统响应:Acpi.sys捕获到这个SCI中断,但它只知道“有事发生”,并不知道具体是什么事。

查询事件:因此,Acpi.sys会立即通过上述的主机到EC通信方式,向EC发送一个“查询事件”的命令(例如,读取EC的特定状态字节)。

执行方法:EC返回一个事件代码(如0xBA代表合盖),Acpi.sys根据这个代码,去执行ACPI表中预定义好的相应方法(如_QBA),从而完成整个事件的上报和处理。


总结一下这个流程:

用户合上笔记本盖子,EC 检测到该物理事件。

EC 向主机发送 System Control Interrupt(SCI)中断,通知系统有事件发生。

Acpi.sys 捕获 SCI 中断后执行标准查询流程:

通过0x66端口发送命令0x84(EC Query)。

然后从0x62端口读取返回的 “查询码”(如0xBA)。

Acpi.sys 根据返回码0xBA映射到 ACPI 表中对应的_QBA控制方法并执行。

例如,_QBA方法中可能定义“执行屏幕关闭”、“挂起”等动作,系统根据_QBA方法执行相应电源或UI逻辑。




EC固件:隐藏的软件层


EC 固件是实现 EC 功能的软件核心,但对最终用户而言通常是“看不见的”。其更新一般不会单独发布,而是与系统 BIOS/UEFI 一同打包,由设备制造商(OEM)提供。


x86平台EC整个系统围绕 ACPI 架构构建,ACPI定义了操作系统与 EC 的交互规范。这一高度标准化的模型保障了与 Windows 等主流操作系统的良好兼容性,成为 PC 平台稳定运行的基础。


然而,随着计算生态不断演化,特别是基于ARM、RISC-V等非x86架构笔记本电脑的出现,催生了对不同EC实现方案的需求。对于那些希望在多样化硬件平台上实现统一底层控制、或寻求不依赖传统ACPI模型的方案的系统构建者而言,一种新的设计应运而生。这正是谷歌为其Chromebook打造ChromiumOS EC的背景。



深入ChromiumOS EC



下文将详细探讨 ChromiumOS EC 的设计理念、通信模型与其在 ChromeOS 生态中的具体实现。




ChromiumOS EC


自2012年左右,ChromiumOS EC的代码始终是开源的。其完整的源代码托管在chromiumos/platform/ec Git仓库中,仓库地址如下,供全球开发者查阅、使用和贡献。


https://chromium.googlesource.com/chromiumos/platform/ec




主机与EC通信方式


在ChromeOS设备中,主机与EC之间的通信遵循一套定义清晰、分层明确的协议,其核心是一个标准的“请求-响应”机制。其通信模型包含两个层面:


逻辑协议层 (Host Command Protocol):定义了AP与EC之间“说什么”,即数据包的格式、命令的ID和参数。

物理传输层 (Physical Transport Layer):定义了“怎么说”,即使用哪种物理总线(如eSPI, I2C, SPI等)来传输这些数据包。


为了更好地理解,我们来看一次完整的通信事务是如何在这两个层面协作下完成的。通信总是由主机发起,遵循一个标准的“请求-响应”模型。


第1步 - 主机侧:构建逻辑请求包

主机上的软件——无论是Linux内核中cros_ec系列驱动(位于drivers/platform/chrome/),还是用户态的ectool等工具——首先会构建一个标准的二进制请求包。这个包在逻辑上由两部分组成:

一个struct ec_host_request结构体,其中包含命令ID、参数长度和校验和。

紧跟其后的、该命令所需的具体参数数据。


第2步 - 物理层:发送请求

主机驱动程序将构建好的逻辑请求包,通过选定的物理总线(如eSPI, I2C, SPI等)发送给EC。具体使用哪种总线取决于硬件设计。


第3步 - EC侧:接收与处理命令

EC上的固件从物理总线上接收到数据。数据首先由芯片特定的驱动代码处理,然后传递给通用的主机命令处理任务(HOSTCMD)。该任务会根据包中的命令ID,调用相应的处理函数来执行具体任务(如读取温度、设置键盘背光等)。


第4步 - 物理层:处理“忙碌”状态 (握手关键)

EC执行命令需要时间(通常是微秒到毫秒级)。在这段时间里,主机不能连续发送新命令,必须等待。EC通过物理层的特定机制来告知主机“请等待”。这是不同总线实现差异的核心所在:

LPC:EC会在其命令状态寄存器中设置一个“处理中”的状态位(如EC_LPC_STATUS_PROCESSING),主机通过轮询该位来判断EC是否忙碌。

I2C:作为I2C总线上的从设备,EC会将SCL时钟线拉低,强制主机暂停传输,直到命令处理完毕。

SPI:在EC准备好响应之前,它会持续返回一个特定的前导字节(preamble)。主机则不断读取,直到收到特殊的“帧起始”字节(EC_SPI_FRAME_START),才知道有效的响应数据来了。

UART:主机发送完命令后立即等待。EC处理完毕后,通过UART异步发回响应。


第5步 - EC侧:封装逻辑响应包

命令执行完毕后,EC会构建一个逻辑响应包。其结构与请求包类似,包含一个struct ec_host_response结构体(内含执行结果码、返回数据长度和校验和)以及可选的返回数据。


第6步 - 物理层:返回响应与完成

EC将响应包通过同一物理总线发送回主机。主机在正确处理了第4步的等待后,接收到完整的响应包。至此,一次通信事务结束。



案例研究:键盘事件处理流程对比


前文从生态、架构与通信协议层面,阐述了传统x86平台EC与ChromiumOS EC的宏观差异。为了更具体地理解这些差异如何体现在实际功能中,本部分将以最常见的人机交互——键盘按键——为例,解析一个按键事件从物理触发到被操作系统响应的完整链路,方便理解两种体系在设计和实现上的不同。




x86平台的键盘事件处理


在传统x86平台,键盘处理流程与ACPI和经典的键盘控制器(KBC)模型紧密结合。


处理流程:

EC硬件响应:用户按键后,EC内部兼容8042 KBC的模块捕获信号,生成原始扫描码。

数据就绪与中断:EC将扫描码放入“输出缓冲寄存器”(I/O 0x60),并在“状态寄存器”(I/O 0x64)中设置标志位,然后通过专用的IRQ1向主CPU发送硬件中断。

主机驱动读取:操作系统的i8042控制器驱动响应中断,直接访问I/O端口0x60,读取原始扫描码。

翻译与上报:i8042驱动将扫描码交由上层键盘驱动进行翻译,转换为操作系统可识别的标准化键码,并送入输入子系统。


6fef6360-8218-11f0-9080-92fbcf53809c.png




ChromeOS EC 的键盘事件处理


在ChromeOS平台,EC在其中扮演了更主动的事件处理和封装角色。


处理流程:

EC软件扫描:EC内的RTOS任务(keyboard_scan_task)扫描键盘矩阵,感知到按键变化。

生成MKBP事件:EC固件将整个键盘矩阵的状态打包成一个结构化的MKBP(Matrix Keyboard Protocol)事件,并将其放入内部事件队列。

通用事件通知:EC通过一个通用的主机事件中断(非专用于键盘)通知主机“有事件发生”。

主机协议查询:主机驱动(cros_ec)响应中断后,通过主机命令协议发送一个EC_CMD_GET_NEXT_EVENT(获取下一个事件)的请求给EC。

EC响应事件:EC从队列中取出MKBP事件,将其作为响应数据打包,通过总线返回给主机。

解析与上报:主机驱动接收响应,解析出键盘矩阵数据,计算出具体按键变化,再生成标准键码送入输入子系统。


70078f4e-8218-11f0-9080-92fbcf53809c.png



当EC遇上RISC-V:进迭时空的探索



自研eSPI控制器


在任何一个现代计算平台中,主处理器与EC之间都需要一条高效、稳定的数据通道。为了让即将发布的芯片无缝融入并支持主流EC生态,进迭时空在其中集成了自研的eSPI控制器


这为进迭时空即将发布的芯片提供了与现代 EC 进行通信所必需的、符合行业标准的物理接口。透过这条高速、低功耗、低引脚数的标准通道,进迭时空的 RISC-V 平台能够高效地处理来自EC的各类底层硬件交互,为上层应用的稳定运行提供硬件保障。


进迭时空的 eSPI 控制器完整实现了eSPI协议规范,支持所有标准通道类型

外设通道(Peripheral Channel):支持I/O空间和内存映射访问,替代传统LPC接口。

虚拟线通道(Virtual Wire Channel):支持GPIO状态、系统中断、电源管理事件等控制信号传输。

带外通信通道(OOB Channel):支持SMBus/I2C协议转换,实现对温度传感器等外设的访问。

Flash访问通道(Flash Access Channel):提供对共享Flash存储的访问能力,允许EC访问主处理器端的Flash存储器。


701b4cd2-8218-11f0-9080-92fbcf53809c.png

AP与EC连接示意图




软件策略


基于标准的eSPI接口,进迭时空对EC生态的支持分为两个阶段。


初期阶段:支持ChromiumOS EC框架

芯片发布初期不支持ACPI。在此阶段,平台将支持ChromiumOS EC通信框架。采用此框架,开发者可利用Linux内核的cros_ec驱动程序,有助于降低软件开发成本、加速产品上市。

未来规划:兼容ACPI并提供选项

未来,平台计划增加对ACPI规范的支持,以兼容传统的PC生态。届时,基于eSPI控制器的设计,平台将同时支持ACPI EC生态与ChromiumOS EC框架,合作伙伴可根据产品需求选择相应的方案。



结语:演进与未来


从经典的键盘控制器演化至今,EC已成为负责电源、散热、交互等关键底层任务的复杂微控单元。


本文所探讨的两种EC实现——x86平台 ECChromiumOS EC——代表了两种不同的设计哲学和生态模式,两者并无绝对的优劣之分,而是分别服务于不同的技术背景与市场需求。x86平台EC的模式支撑了当今PC世界,而ChromiumOS EC在非传统PC架构(如RISC-V或ARM平台)上,提供了另一种强大的、可定制的实现思路。


EC技术的持续发展,无论是遵循哪种模式,都在不断提升设备的能效、用户体验和系统可靠性。未来,EC或其演进形态将继续在各类智能设备中扮演着不可或缺的核心角色。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • mcu
    mcu
    +关注

    关注

    147

    文章

    18115

    浏览量

    371942
  • 计算机系统
    +关注

    关注

    0

    文章

    291

    浏览量

    24866
  • EC
    EC
    +关注

    关注

    0

    文章

    60

    浏览量

    17024
  • 嵌入式控制器

    关注

    0

    文章

    66

    浏览量

    15516
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    无名管道系统调用

    `华清远见嵌入式linux学习资料《无名管道系统调用》, 1.管道创建与关闭说明。管道是基于文件描述符的通信方式,当一个管道建立时它会创建两个文件描述符fd[0]和fd,其中fd[0]固定用于读管道,而fd固定用于写管道,如图1所示这样就构成了一个半双工的通道。。。。。。
    发表于 09-09 14:17

    无名管道的通信方式简介

    最常用的无名管道,有名管道,消息队列,信号,信号量,共享内存等进程间的通信方式。其实后面网络通信套字节 socket的方式也可以归为进程通行。1.无名管道 pipe从 UNIX 系统开始,无名
    发表于 11-04 09:03

    发光二极管的工作原理图解分析

    发光二极管的工作原理图解分析 发光二极管,通常称为LED,是在电子学世界里面的真正无名英雄。它们做了许多不同工
    发表于 04-13 10:21 ?8.3w次阅读

    发光二极管的工作原理以及优缺点解析

    发光二极管,通常称为LED,是在电子学世界里面的真正无名英雄。它们做了许多不同工作和在各种各样的设备都可以看见它的存在。
    发表于 12-06 09:01 ?2.3w次阅读

    LED:电子世界的无名英雄

    在1962年人们首次把LED投入商业用途—最初用于电子表的显示器,稍后又用在越来越多的地方。现在,LED是我们电子世界的无名英雄。它们做着许多的工作,用在各做各样的地方。除此之外,LED构成了电子表
    发表于 08-18 17:23 ?672次阅读

    二极管半导体到底是什么?电子移动是如何让它发光的

    发光二极管,通常称为 LED,是在电子学世界里面的真正无名英雄。它们做了许多不同工作和在各种各样的设备都可以看见它的存在。
    发表于 12-10 22:40 ?10次下载
    二极管半导体到底是什么?电子移动是如何让它发光的

    数字化变局 坚守在技术无人区 一群无名英雄的低调与浪漫

    我们总是习惯,对那些成功站上巅峰的人送出崇拜的注目礼,往往忽略了这些英雄身后,也有着许多工作者的默默陪伴与付出。 如果说数字基础设施是新技术革命的基石,那么存储人就是奠定变革基石的无名英雄。每一次
    的头像 发表于 11-02 08:56 ?6932次阅读

    电源管理IC如何支持智能建筑

      保护电路是当今电子产品的无名英雄。它们可以帮助防止可能损坏电子负载的压力源,例如浪涌和反向电流、过压和欠压。
    的头像 发表于 05-26 15:31 ?1145次阅读
    电源管理IC如何支持智能建筑

    网络畅通的“无名英雄”:华为云CDN,让数据传输又快又稳

    如今,云服务、云计算已经深入到了我们工作和生活的方方面面。一方面,云服务云计算需要高速网络的支持,另一方面,各大网站和软件的访问流量在逐渐增长也是不争的事实,如何解决流量暴增时的数据传输问题就成了
    的头像 发表于 10-26 23:25 ?611次阅读

    EUV光刻的无名英雄

    晶圆厂通常使用光刻胶来图案化抗蚀刻硬掩模,然后依靠硬掩模来保护晶圆。但是,如果光刻胶太薄,它可能会在第一个转移步骤完成之前被侵蚀掉。随着光刻胶厚度的减小,底层厚度也应该减小。
    的头像 发表于 04-27 16:25 ?1369次阅读
    EUV光刻的<b class='flag-5'>无名英雄</b>

    光耦合器在电路板上的作用

    光耦合器经常被普通消费者忽视,它是电路板上的无名英雄,在维护电子系统的完整性和安全性方面发挥着关键作用。
    的头像 发表于 03-01 16:15 ?1070次阅读
    光耦合器在电路板上的作用

    结构化布线在AI数据中心的关键作用

    AI 正在不断颠覆各行各业,推动从电影制作到金融行业等各个领域的创新。而在 AI 系统的背后,隐藏着这样一位无名英雄:结构化布线。
    的头像 发表于 11-21 16:51 ?1011次阅读

    GPS对时服务器时间背后的无名英雄

    它是一种高科技智能的、可单独工作并基于NTP/SNTP 协议的高精度网络时间服务器。装置自上层时间源(GPS/北斗/CDMA/NTP/OCXO/铷原子钟)获取标准时钟信号信息,并将这些信息在网络传输,以满足所有客户端的校时需求。网络需要时间信号的设备较多,如服务器、P
    的头像 发表于 05-22 14:44 ?181次阅读
    GPS对时服务器时间背后的<b class='flag-5'>无名英雄</b>

    晶振:5G通信背后的无名英雄

    接的特性,成为推动各行业变革的关键力量。然而,在这令人瞩目的5G技术背后,有一个看似不起眼却至关重要的电子元器件——晶振,它宛如一位幕后英雄,默默地为5G通信的稳定运行提供着坚实保障。 一、5G通信对晶振性能的严苛要求 (一
    的头像 发表于 07-14 15:11 ?134次阅读

    芯科科技MCU助力低功耗高效嵌入式系统设计

    当考虑提升嵌入式系统速度或能效时,脑海中浮现的可能是更快的CPU或更智能的睡眠模式。但如果我告诉您,Silicon Labs(芯科科技)微控制器(MCU)内部藏着一位无名英雄,能在完全不唤醒CPU的情况下大幅提升设计智能度呢?这就是外设反射
    的头像 发表于 07-29 16:26 ?988次阅读