笔记本电脑中的隐形管家:EC

笔记本电脑中的隐形管家:EC
文章图片
笔记本有很多台式机没有的有趣功能:合上盖子带上就走的便利性 , 睡眠时神秘的呼吸灯 , 漂亮的键盘灯等等 。 这些功能很多都可以在电脑关机的时候还在起作用 , 那么是谁在控制他们呢?肯定不是CPU , 这也让Windows等操作系统失去了执行的土壤 , 他们也可以被排除 。 这个隐形的管家就是EC 。
EC简介
几乎所有的笔记本的主板上都一个小家伙:EC(EmbeddedController) , 它是一个16位的小芯片 , 它与服务器中的BMC类似 , 掌控笔记本电脑的方方面面 。 它最早脱胎于笔记本的键盘控制器 , 现在笔记本上诸多特色功能 , 背后都有它的身影 。 充电指示灯为什么会亮?EC在合适的时间让它亮;风扇为什么狂转?EC觉得你的CPU太热了;各种功能键和上面的小灯也是它的功劳 。 甚至关机后EC还在不知疲倦的工作 , 它的特色功能也是笔记本厂商要发力的重点 。
市面上有多种EC控制器 , 有ENE、ITE、Nuvoton和SMSC等玩家 。 它一般被焊接在笔记本主板上:
笔记本电脑中的隐形管家:EC
文章图片
笔记本电脑中的隐形管家:EC
文章图片
联想Y700EC的位置在左下角
它有自己的固件(firmware) , 但主板厂商一般叫这个固件ECBIOS , 有点让人困惑 。 于此对应 , 笔记本主板的原理图是中间一般至少有一到两页的EC篇章:
笔记本电脑中的隐形管家:EC
文章图片
一个简陋的例子
我在参考资料1放了ENE的一款EC控制器芯片手册 , 对细节感兴趣的同学可以参考阅读一下 。
EC的工作原理
EC和BIOS的合作十分紧密 。 EC通过BIOS的ACPI表将它所需要报告的信息和方法报告给操作系统 , 并与之交互 。
一个典型的信息交互通道是这样:
笔记本电脑中的隐形管家:EC
文章图片
它在ACPItable中的表现就是:
Device(EC0){Name(_HID,EISAID(“PNP0C09”))Method(_CRS){…}Name(_GPE,0)Method(_Q06){…}Method(_Q07){…}Method(_Q08){…}Method(_Q0A){…}//ECusesGPE0//Adapterevent//Thermalevent//Batteryevent//LIDevent
从这个例子中看到 , 电池报警、AC电源插入、温度传感器报告和LID(笔记本盖子)信息 , 先报告给EC不同的Q里 , EC再接入ACPI的GPE , GPE的触发会产生SCI , 这时候操作系统就知道了 。 一个Event产生 , 操作系统在收到SCI后 , 会检查GPE , 看是谁触发了事件;在发现是GP_STS0后 , 就知道是EC产生的时间 , 接着会去检查EC的Q0x , 看看具体是EC的哪个管脚引发的 , 按图索骥 , 最终发现Event的产生方 , 而对该消息作出相应处理 。
看起来似乎相当难懂!好吧 , 我们看个casestudy 。
笔记本盖子开启/合上casestudy
我们来简化一下上面那个图:
笔记本电脑中的隐形管家:EC
文章图片
笔记本合上 , EC触发GPE 。 OS收到GPE , 查看GP_STS , 发现是GPE0触发 , 知道是EC导致 。 访问EC得知是Q0A 。 通过_LID的关键字和PNP知道是盖子信息 , 知道是盖子合上了 。 笔记本电脑中的隐形管家:EC
文章图片
然后检查用户的电源管理策略作出相应处理:
笔记本电脑中的隐形管家:EC
文章图片
2.盖子开启 , GPEB会触发wakeup相关动作 。
结论
不但是LID , 各种温度传感器也是先过EC的:
笔记本电脑中的隐形管家:EC
文章图片
AC插上 , 开启切换电源策略也是EC触发 。 甚至有的笔记本 , AC插上旁边的小LED灯都是EC控制 。
EC在笔记本电脑中如此重要 , 厂商为了作出自己不同的产品策略 , 开发花哨的功能 , 在EC上频频发力 。 EC不愧是笔记本中的隐形管家!
【笔记本电脑中的隐形管家:EC】参考
ENEdatasheethttps://reservice.pro/upload/Datasheets/kb9012qf.pdf


    推荐阅读