第十六篇 -- SuperIO學習


一、SuperIO

這次主要研究SuperIO讀取以及控制風扇轉速的問題。

參考文章:https://huchanghui123.github.io/Linux/Linux-Superio-CPU-FAN/

https://wenku.baidu.com/view/dae90497a26925c52dc5bf44.html

首先需要了解的一點是,CPU風扇屬於環境控制器(EC)

內置在IT8786E-I中,包括五個電壓輸入,三個溫度傳感器輸入,五個FAN轉速計輸入和五組先進的風扇控制器。 EC監控硬件環境,實現個人電腦的環境控制,我們需要找到IT8786E-I芯片的SPEC

流程如下:

  1. 可以在Spec里面搜PnP Mode找到基地址,Address Port一般是2E,Data Port 一般是2F,如果有RW工具的話,可以進入IO Space,輸入地址2E,然后在0x00位置依次輸入(87h, 01h, 55h, 55h),進入MB PnP 模式。可能你發現你每輸一個,它會自動變為0xff,不要以為沒生效,其實它已經進入PnP Mode了。比如你輸玩87h,確定后,馬上變回00,不要慌,繼續輸入01h確定。

 

  2. 使能 EC(LDN=04h, Index 30h=01)通過看SPEC,可以發現邏輯設備選擇寄存器是07h,它的邏輯設備號是04h,這時候,進入IO Space,輸入2E,在控制寄存器2E地址即0x00位置輸入07h,然后在數據寄存器2F地址即0x01位置輸入04h,在控制寄存器2E地址即0x00位置輸入30h,在數據寄存器2F地址即0x01位置輸入01h,使EC生效

 

另外,備注一下,IO Space這個里面是實際上操作的入口,里面可以設置,可以操作,不過會很快還原,所以只能在很短的時間內看到數據,那么就需要用到查看數據,RW還會有IO Index/Data,這個里面可以查看數據,比如你在Index Port輸入2E,Data Port會自動變為2F,點擊確定,可以查看里面的數據。而且可以進行操作,會比IO Space來得簡單。比如之前在IO Space的操作是先在控制寄存器2E位置輸入07h來選擇邏輯設備號,之后在2F位置輸入04h選擇邏輯設備號04h。那么,現在在IO Index/Data里面的操作就是直接找到07h的位置,在里面輸入04h就是了。至於怎么找位置,方法是:縱向是00h-F0h,橫向是00h-0fh,如果你想找07h的位置就是縱向為00h,橫向為07h,合起來就是07h。再舉一個例子,如果你要找18h的位置,那么縱向就是10h,橫向就是08h,合起來就是18h。還有一個更簡便的查看數據的方法,就是進入Super IO,里面的邏輯設備號也不需要向之前的在)7h位置輸入04h,可以直接選擇Logical Device 04會來得更加直接。

 

綜上所述,如果是為了寫程序,那么操作步驟要按照IO Space來一步一步嚴格操作2E,2F端口,如果是為了手動查看修改數據,那么就用Super IO會比較方便直觀一點。為了更易顯示,下面就是用的Super IO使用。

  3. 得到EC Base Address,可以從SPEC中看出,基地址是需要從60h,61h寄存器讀出來的,60h是高八位,61h是低八位,合起來就是基地址base。然后我們的EC控制器的地址端口地址就是base+05h,數據端口就是base+06h。

基地址由邏輯設備寄存器確定(index=60h, 61h)

地址端口(Base+05h);數據端口(Base+06h)

 

  4. 配置風扇轉速寄存器(index=0Ch,default=00h)我們找到Fan PWM Control Register,找到控制風扇的寄存器地址,選擇手動模式,即(Software Operation),然后根據SPEC,一般選擇模式的地址部分會有控制風扇轉速的地址說明,我們就可以設置00h-ffh控制風扇的轉速。注意一點的是,00h不代表風扇停止,因為風扇會有一個最低轉速,ffh是滿轉。

 

  5. 計算出風扇轉速(index=0Dh,18h)風扇轉速會有一個公式,可以在SPEC里面直接搜RPM找到類似

這種就是風扇轉速的計算公式,其中Count是你通過18h,0Dh讀取出來的值換算成十進制的值,比如說18h讀的是02h,0Dh讀的是90h,那么合起來就是0290h,十進制為656,帶入公式即可。

 

  6. 退出MB PnP 模式(index=02h,default=02h)這個也可以在SPEC里面看到,這個退出PnP Mode在2E/2F端口里面的02h部分設置為01h。

至此,風扇控制就完畢了。

  以前的機器大部分的流程就是這樣就可以完成了。但是新機器經過實驗控制不了,可能需要BIOS那邊提供相應的寄存器來修改值進入手動模式才可以。還有這種講的是ITE芯片的,如果不是用ITE芯片控制的話,流程可能就不是這樣的了。有的風扇控制是不需要進入PnP Mode 的,這次就是對於其中的一種進行學習。

 

CPU風扇調速原理

4pin風扇PWM

PWM如何控制三極管的通斷

三極管工作原理

 4pin風扇控速原理

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM