接触BIOS以来算起来已经有四年了,想着将自己所学的知识记录起来,这样也方便他人学习。这是我的第一篇博客,从SIO开始吧!
简介
SIO应用在台式机比较多,主要用来做电源管理,如上电时序控制;外围接口扩充,如串口、并口;还有温度、电压监控、智能风扇等。
SIO是一个半可定制化的芯片,怎么说是半可定制化呢?比如上电时序,这一部分就是固化好的,而可定制化部分则是逻辑设备(Logic Device)部分。接入电源后SIO便根据固化的程序开始运作,等待power button触发。按下power button后SIO开始跑上电时序,CPU Reset后BIOS才开始跑,此时BIOS给SIO配置的Logic Device也才生效。
访问SIO
可以通过 index/data 的IO的方式访问SIO,端口分别是0x2E/0x2F。访问前需要先进入PnP mode,之后便可以通过往0x07这里写入逻辑设备号切换到相应的逻辑设备。怎么进入PnP mode呢?SPEC上有说明。
即只需在0x2E/0x4E这个端口分别写入0x87,0x01,0x55,0x55 就可以了,进入PNP mode后我们便可以读出逻辑设备中的256个寄存器值,读完后需要退出PnP mode。我们可以在带SIO的机器上用RW做下实验。