BIOS 重启的相关操作
- Bit1: 设置0 ---当RST_CPU 从0变为1,通过触发INIT#16个PCI clocks产生soft reset 设置1 ---当RST_CPU 从0变为1,通过触发PLTRST#和SUS_STAT#至少1毫秒产生hard reset
- Bit2: 见Bit1中描述。
- Bit3: Full Reset,重启时将此位置1,SLP_S3#,SLP_S4#和SLP_S5#就会被拉低3-5秒钟。会有下电再上电的过程。
- Soft Reset和Hard Reset的区别在于Hard Reset除了CPU复位外,还会复位PCI设备。
VOID
EFIAPI
ResetCold (
VOID
)
{
IoWrite8 (R_PCH_RST_CNT, V_PCH_RST_CNT_HARDSTARTSTATE);//0x02
IoWrite8 (R_PCH_RST_CNT, V_PCH_RST_CNT_HARDRESET);//0x0E
}
VOID
EFIAPI
ResetWarm (
VOID
)
{
IoWrite8 (R_PCH_RST_CNT, V_PCH_RST_CNT_SOFTSTARTSTATE);//0x00
IoWrite8 (R_PCH_RST_CNT, V_PCH_RST_CNT_SOFTRESET);//0x06
}
//Grangeville平台对Cold Reset和Warm Reset的定义
VOID
EFIAPI
ResetCold (
VOID
)
{
IoWrite8 (R_PCH_RST_CNT, 0x2);
IoWrite8 (R_PCH_RST_CNT, 0x6);
}
VOID
EFIAPI
ResetWarm (
VOID
)
{
IoWrite8 (R_PCH_RST_CNT, 0x0);
IoWrite8 (R_PCH_RST_CNT, 0x4);
}
//Barkerville平台对Cold Reset和Warm Reset的定义
- 按照寄存器中的说明,先写0再写4肯定是Soft Reset;先写2再写6肯定是hard reset。在Barkerville平台也是这样子操作。
- 而在Grangeville平台出现先写0再写6的,先将Bit2 清0定义为Soft state,然后Bit1和Bit2又写入1,这样究竟是Soft 还是Hard Reset ?效果和先0后4是否一样?还是和先2后6一样 ?先记录下,后面使用Debug mode跑着看看效果。
参考:
https://blog.csdn.net/zhao_longwei/article/details/51234832?spm=1001.2014.3001.5501
https://blog.csdn.net/robinsongsog/article/details/50993333?spm=1001.2014.3001.5502