EC关机过程

558 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第29天,点击查看活动详情

简介

笔记本上的EC操控着电脑的开关机、休眠等等,其中关机有着不同的操作与意义,本文主要就是区分不同类型的关机操作流程。

一、关机的状态

首先我们先看下什么是关机,关机的状态主要有以下几种表现:

  • 也被称为S5软关闭状态,不运行用户模式或系统模式代码;
  • G2 - 不是一个睡眠状态;
  • 没有系统上下文(内存或I/O)被OSPM或硬件所保存 ;
  • 允许因按下电源按钮而过渡到SO状态 -- 耗电除了给设备(如电源按钮)提供涓流电流外,其他都是关闭的;
  • 要求有较大的延迟,以便返回工作状态 ;
  • 启动时,BIOS 执行正常的开机复位,加载引导扇区,并执行。

二、EC 关机流程

EC主动关机过程

graph TD
检测到需要EC做主动shutdown的触发条件 --> 拉Low_RSMRST信号 --> Reset_PCHFCH --> 并记录shutdown_ID --> EC按照EE要求的Sequence将所有S0和S3的Power关掉 --> ECFW按照项目实际要求决定要不要将S5的Power关掉

EC被动关机过程

graph TD
SLP_S5被拉Low --> EC按照EE要求的Sequence将所有S0和S3的Power关掉 --> ECFW按照项目实际要求决定要不要将S5的Power关掉

三、 不同关机方法

Power键 4s关机

此方法是按住电源键不动超过4秒(不超过8s)关机。这通常是一种强制关机操作。按一下电源键关机的操作需要OS配合,试想 在系统死机的情况下(蓝屏或者Hang发生),我们总不能拔电源插头或者抠出来电池吧,这是一种保险措施。这个操作叫做Power button override —— 在PWRBTN#上,硬件都有专有的Timer来计时,超过4秒还没有抬起,就触发了强 制关机,硬件会直接关闭CPU电源,进入G2/S5状态。

Power键 8s关机

此方法是按住电源键不动超过8秒关机。这通常也是一种强制关机操作,特别是在系统发生HW hang的时候需要这种操作,因 为此时CPU已经没有响应,这种操作是通过EC来完成的。

首先EC要enable 8S reset的watchdog,当按下PWRBTN#的时候,EC侦测到就开始计时,如果超过8S还未松开,EC就会触发自身的watchdog,然后使EC本身做复位动作,此时就会使整个系统都跟着断电关机,这个8S的时间也是可以通过EC来修改的,比如10S、12S等,当前我们的做法都是默认8S。

// This is for reset ec after press power btn
void EnableHW8sReset(void)
{
	XBYTE RSTStatus1;
	#define WDT2_8S_RST         0x01 [modify-20190107-ASLBZXQ0013]
	
 	GCR10 = WDT2_8S_RST; 		// Set reset counter
	SET_MASK(GCR8, BIT4); 		// Enable timeout reset EC reset
	
	RSTStatus1 = SPCTRL4;

	if(IS_MASK_SET(RSTStatus1, BIT1))
		SET_MASK(Oem_Globe_Flag1, _EC_8S_RST);
}

四、完结

本章结束,撒花。