Intelligent Platform Management Interface (IPMI)相關知識學習


IPMI用於連接系統下的管理軟件,OS及管理軟件可以通過IPMI可以提供更多有關精密控制、錯誤處理及警告的功能。IPMI的核心是BMC。

IPMI同樣支持拓展的平台管理,該功能需要與系統連接額外的管理控制器IPMB。IPMB是基於I2C的串口線,它用於管理控制器之間的連接。

SEL,全稱System Event Log,SEL是由BMC提供的,用來記錄是系統進程停止的錯誤的信息。通過IPMI commands的設置可以讀取、添加或清空SEL的信息。

IPMI為描述平台管理能力的信息提供兩種機制:

(1)capabilities commands,IPMI command

(2)Sensor Data Records(SDR),command about sensor

IPMI定義了三種標准系統接口來向BMC傳送信息。

(1)       Keyboard Controller Style (KCS),

Intel 8742 Universal Peripheral Interface microcontroller

(2)       System Management Interface Chip(SMIC),

當BMC沒有建立KCS接口時,SMIC提供一個可選擇的選項。

(3)       Block Transfer(BT),

統提供的一個更高執行效率的接口,與前兩者不同,它以a per-block handshake來進行數據傳輸。

除了以上基本接口,還有我們常用的串口,LAN口。

串口支持3種connection modes

Basic Mode        PPP Mode       Terminal Mode:

SOL, Serial Over LAN ,

它被用於異步的serial-based OS and pre-OS communication同BMC。

 

BMC Transfer在我們的code中一般通過KCS接口實現。

了解實現過程之前首先要了解KCS Interface Registers

1,Status Register

系統中總會開始一些信息傳送,傳送之前需要判斷設備的狀態,對於KCS接口就通過他的Status Register來進行判斷。Status Register每一位代表的信息如圖所示:

Bit6,Bit7兩個狀態位總共表示接口會處於的4種狀態。

2,Command Register

當IBF被清除時,可以向其中寫進命令。

3,Data Registers

BMC用來傳輸數據。

 

CODE中如何實現通過KCS接口向BMC寫入數據:

(1)       讀取Status Register信息,獲得IBF的值,直至等到IBF值為0時,繼續執行。

(2)       清除   OBF

(3)       檢查KCS狀態

(4)       以byte為單位向BMC發送數據

(5)       再次檢查KCS狀態

從BMC讀取數據:

(1)       檢查KCS狀態,若為IDLE_STATE,則返回EFI_SUCCESS。

(2)       從DATA_OUT讀取數據。

(3)       將DATA_OUT讀出的數據寫入DATA_IN

 

注意到KCS在PEI與DXE兩個階段中的code並不一樣。

 在DXE階段memory已經初始化好了,所以KCS在DXE階段的使用需要判斷是否是SMM模式。

 


免責聲明!

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



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