ITE Super IO入门篇
接觸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做下實驗。
SIO中的邏輯設備
本文及以后的文章將會以IT8625這款型號進行講解,其它型號也是大同小異的。
IT8625這款Super IO 共有8個邏輯設備可用,分別如下:
每個邏輯設備都有對應的256個寄存器可配置,值得注意的是,256個寄存器中,有部分屬于通用的全局寄存器,即每個邏輯設備這部分的寄存器都是共享的,如下表。
如0x20,0x21這兩個寄存器,你在LDN1讀出來的跟LDN2或LDN3等任何邏輯設備中讀出來的都是一樣的值,它都是屬于Chip ID,此類寄存器稱為Global Configuration Register。
每個邏輯設備中的寄存器除了全局部分,也有部分是有相同含義的,如0x30這個位置,大多數屬于Activate功能,用來設置該設備是否啟用,其它的具體可參照SPEC 8.2章節。
SIO中的IO Space
邏輯設備中的256個byte寄存器對于配置一些比較復雜的功能(如Smart Fan)遠遠是不夠的,所以SIO還給我們提供了額外的寄存器去實現更加復雜的功能,那便是IO Space。要訪問這個Space,就得知道它的Base Address,那在哪里呢?
IO Base Address一般是每個邏輯設備0x60,0x61,0x62,0x63這幾個位置的值,當然,這段空間首先得經過南橋decode才可以,decode的這個問題我們暫且忽略。為了方便理解,我們舉個例子。
就拿LDN 4 EC這個設備來說,我們要訪問他的IO Space,首先得知道它的地址是多少,從IT8625的SPEC可以知道,地址就是0x60,0x61中的值。
這里的兩個值是不能直接用的,按照說明,需要分別給他們加上05h和06h,再用index/data的IO方式訪問就可以了。假如0x60的值是02h,0x61的值是90h(這兩個值可以用RW看到),則:
- index port address = 290h + 05h = 295h
- data port address = 290h + 06h = 296h
用RW訪問這個IO地址便可以看到結果了。
入門篇到這里就結束了,總體認識了一下SIO,后面的文章將逐一講解每個邏輯設備的使用。
總結
以上是生活随笔為你收集整理的ITE Super IO入门篇的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 古风排版(C语言实现)
- 下一篇: 2008服务器远程桌面连接设置密码,Wi