持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第14天,点击查看活动详情
简介
在笔记本中的不同睡眠状态下,EC的上电时序也有着不同的区别,本文简单介绍一下不同的睡眠模式区别,以及关机开机状态切换的实现。
一、睡眠模式
S0即开机状态。
S1指的是CPU停止工作,其他的主要部件仍然正常工作。
S2指的是CPU关闭,总线时钟也被关闭,其他的部件仍然正常工作。
S3指的是我们常说的睡眠(Sleep) :除了内存外的部件都停止工作。这就是我们熟悉的STR(Suspend to RAM),即除了内存以外的大部分机器部件都进入断电状态。 这种休眠状态恢复速度特别快,但由于内存中的数据并没有被保存下来,因此这个状态的系统并没有进入真正意义上的休眠状态,仍在持续耗电。
S4指的是休眠(Hibernate) 内存信息写入硬盘,所有部件停止工作。这就是STD(Suspend to Disk),这时系统主电源关闭,硬盘存储S4前数据信息。
在我现在的接触中,S5指的是插着AC的关机状态,SX指的仅电池供电的关机状态。
S0->S5
S0->S5指的是从开机到关机(插着AC)状态。
//-----------------------------------------------------------------
// S0 to S5 sequnce
//-----------------------------------------------------------------
void Oem_S0S5Sequence(void)
{
if ( PowSeqDelay != 0x00 )
{
PowSeqDelay--; //1m Sec count base
if ( PowSeqDelay != 0x00 )
{
return;
}
}
while(PWSeqStep<(sizeof(asPowerSEQS0S5)/sizeof(sPowerSEQ)))
{
if(asPowerSEQS0S5[PWSeqStep].checkstatus==0x00) // Do function
{
(asPowerSEQS0S5[PWSeqStep].func)();
PowSeqDelay = asPowerSEQS0S5[PWSeqStep].delay;
PWSeqStep++;
if(PowSeqDelay!=0x00)
{
break;
}
}
else // Check input status pin
{
if((asPowerSEQS0S5[PWSeqStep].func)())
{
PowSeqDelay = asPowerSEQS0S5[PWSeqStep].delay;
PWSeqStep++;
}
break;
}
}
}
S5->S0
S5->S0指的是从关机(插着AC)到开机状态。
//----------------------------------------------------------------------------
// S5 to S0 sequnce
//----------------------------------------------------------------------------
void Oem_S5S0Sequence(void)
{
if ( PowSeqDelay != 0x00 )
{
PowSeqDelay--; //1m Sec count base
if ( PowSeqDelay != 0x00 )
{
return;
}
}
while(PWSeqStep<(sizeof(asPowerSEQS5S0)/sizeof(sPowerSEQ)))
{
if(asPowerSEQS5S0[PWSeqStep].checkstatus==0x00) // Do function
{
(asPowerSEQS5S0[PWSeqStep].func)();
PowSeqDelay = asPowerSEQS5S0[PWSeqStep].delay;
PWSeqStep++;
if(PowSeqDelay!=0x00)
{
break;
}
}
else // Check input status pin
{
if((asPowerSEQS5S0[PWSeqStep].func)())
{
PowSeqDelay = asPowerSEQS5S0[PWSeqStep].delay;
PWSeqStep++;
}
break;
}
}
}
二、完结
本文完结,撒花结束。