IPMB接口協議總結
IPMB接口協議總結
IPMB,智能平臺管理總線, 是ATCA(Advanced Telecom Computing Architecture)先進的電信計算平臺的各FRU背板通訊的兩組冗余I2C總線的總稱。 Intelligent Platform Management BUS 智能平臺管理總線, 是ATCA(Advanced Telecom Computing Architecture)先進的電信計算平臺的各FRU背板通訊的兩組冗余I2C總線的總稱。
智能平臺管理總線(IPMB)的設計是為了在mission-critical服務器平臺支持“Server Platform Management”(服務器平臺管理)的,該總線也可以用來支持外圍機架和非服務器系統的平臺管理。
IPMB協議要實現下列目標:
1、支持分布式管理機制。傳感器和控制器分布在各個管理模塊上,它們的信息通過IPMB傳輸。
2、支持異步事件通知機制和危機事件日誌機制。IPMB應用多主協議,這樣可以允許控制器搶占總線來發送事件消息到一個事件接收器(Event Receiver)節點。
3、 提供一個可擴展的平臺管理結構。新的管理信息資源可以很容易的加入到平臺管理總線上,而不會影響總線上的其他控制器。
4、 多主操作。IPMB應用多主操作來支持分布式管理機制、異步事件通知機制以及平臺擴展功能,這種機制支持任何兩個智能設備之間的通信。
5、 支持非智能I2C設備。
6、 支持“Out-of-Band”訪問。IPMB是獨立於系統處理器和內存總線的,這樣,即使是在系統失敗的情況下還可以訪問。
7、 降低系統管理布線的復雜程度以及成本。
8、 為機架外部管提供途徑。
l IPMB總線平臺管理網絡架構
我們用微控制器(也叫做管理控制器“management controllers”或者節點“nodes”),獨立於系統軟件收集系統狀態和事件信息,這些信息包括:單板電壓、溫度、風扇轉速、處理器或者總線失敗、FRU(現場可替換單元)信息等,來提高提高系統可靠性(RAS)。
IPMB協議所使用的物理層主要是I2C總線,下面是I2C 總線的一些特征:
1、I2C傳輸的起始和停止條件
在I2C總線中唯一出現的是被定義為起始S和停止P條件見圖5的情況。其中一種情況是在SCL線是高電平時,SDA線從高電平向低電平切換,這個情況表示起始條件,當SCL是高電平時SDA線由低電平向高電平切換表示停止條件。起始和停止條件一般由主機產生總線在起始條件後被認為處於忙的狀態,在停止條件的某段時間後總線被認為再次處於空閑狀態。
如果產生重復起始Sr條件而不產生停止條件,總線會一直處於忙的狀態。此時的起始條件S和重復起始Sr條件在功能上是一樣的。如果連接到總線的器件合並了必要的接口硬件。那麽用它們檢測起始和停止條件十分簡便,但是沒有這種接口的微控制器在每個時鐘周期至少要采樣SDA 線兩次來判別有沒有發生電平切換。
圖5 起始和停止條件
2、I2C傳輸數據
2.1 字節格式
發送到SDA線上的每個字節必須為8位,每次傳輸可以發送的字節數量不受限制。每個字節後必須跟一個響應位首先傳輸的是數據的最高位MSB。如果從機要完成一些其他功能後例如一個內部中斷服務程序才能接收或發送下一個完整的數據字節,可以使時鐘線SCL 保持低電平迫使主機進入等待狀態。當從機準備好接收下一個數據字節並釋放時鐘線SCL 後,數據傳輸繼續。在一些情況下可以用與I2C 總線格式不一樣的格式例如兼容CBUS 的器件,甚至在傳輸一個字節時用這樣的地址起始的報文可以通過產生停止條件來終止此時不會產生響應。
2.2 響應
數據傳輸必須帶響應,相關的響應時鐘脈沖由主機產生,在響應的時鐘脈沖期間發送器釋放SDA線高,在響應的時鐘脈沖期間接收器必須將SDA線拉低,使它在這個時鐘脈沖的高電平期間保持穩定的低電平,當然必須考慮建立和保持時間。通常被尋址的接收器在接收到的每個字節後除了用CBUS地址開頭的報文必須產生一個響應。
當從機不能響應從機地址時,例如它正在執行一些實時函數不能接收或發送從機必須使數據線保持高電平,主機然後產生一個停止條件終止傳輸或者產生重復起始條件開始新的傳輸,如果從機接收器響應了從機地址但是在傳輸了一段時間後不能接收更多數據字節,主機必須再一次終止傳輸,這個情況用從機在第一個字節後沒有產生響應來表示,從機使數據線保持高電平主機產生一個停止或重復起始條件。
如果傳輸中有主機接收器,它必須通過在從機不產生時鐘的最後一個字節不產生一個響應,向從機發送器通知數據結束,從機發送器必須釋放數據線允許主機產生一個停止或重復起始條件。
IPMB支持兩類I2C設備,非智能和智能的。典型的非智能設備如溫度傳感器,通過I2C總線可以讀到當前的溫度讀數。非智能設備只能作為一個從設備,缺少IPMB通信協議的應用。非智能從設備可以和運行IPMB協議的智能設備同時存在與同一個IPMB總線上,地址沖突避免在I2C總線級,只要分配一個獨一無二的從地址給總線上的所有設備即可。IPMB協議也可以支持SMBus從設備,不過要有一些限制。
下圖為IPMB總線的連接架構:
典型的智能設備如服務器底板上的管理控制器。在智能設備中裝有實現IPMB協議的固件和底板相關的其他功能固件,下面講的IPMB請求應答通信協議是指在智能設備間的通信。
l Request / Response Protocol (請求/應答協議)
IPMB使用“請求——應答”協議,發送一條請求消息給一個智能設備,該設備會返回一個獨立的應答消息。任何傳輸協議都是有限制的,IPMB總線直接支持有15個內部節點的系統,系統應用應該努力減輕總線的占用時間,例如,每秒鐘少於6條消息,這樣做,可以確保節點可以成功在要求的重試次數內搶占總線。
請求消息和應答消息都是通過I2C總線的“主寫”(Master Write)模式傳輸的,也就是說,一條請求消息是從一個作為I2C主端(Master)的節點發出,被一個作為I2C從端(slave)的節點接收;對應的應答消息是從一個作為I2C主端的應答設備( responding intelligent device)發出,被一個作為I2C從端的請求發起者接收。
請求消息的一個重要性質是要能夠指導應答消息能夠準確返回給請求者,請求者在請求消息裏提供它的Requester‘s Slave Address (rqSA)和Requester’s LUN (rqLUN)來引導應答返回請求者。
每個應答者的接口協議都定義了一些支持的命令字,應答者在這個特定的域位置必須提供至少一個命令字,任何其他和命令域相關的參數字節必須緊跟著第一個字節。應用程序向一個節點發送請求消息,必須能夠通過解析命令域來識別應答。
有效的請求是指使用節點支持的命令的cmd號、netFn號和LUN並且能夠通過數據完整性計算的請求消息,所有有效請求必須提供相應的應答。對這一要求的例外就是當節點接收到請求時正在處理一個命令,或者在等待另一個節點的應答。這時候節點可以選擇用NAK通知請求方,也可以封裝一個包含C0h完成碼的應答消息來告訴請求方節點忙。
IPMB不要求對消息進行列隊處理,也就是說接口是單線的,節點一旦接到某個節點的請求會清除所有等待發送到該節點的應答消息。但是橋節點除外。如果節點接收到請求包的數據checksum不對,將直接丟棄該數據包。
1、如何區分請求消息和應答消息:
請求消息和應答消息的網絡功能號(network functions)不同,請求消息使用的是偶數,應答消息用的是奇數的網絡功能號。由於有可能同時存在不止一條請求消息,那麽區分一個應答消息到底是對應那一個請求就非常重要了。這是通過下列機制來實現的:
1、應答消息中包含Responder‘s Slave Address (rsSA) 和 Responder’s LUN (rsLUN),這回告訴請求者(Requester)應答是從哪裏來的。
2、請求消息中的命令域(Command (cmd) field)也包含在應答消息裏面,這可以讓請求者核實應答是針對具體那一個請求的。
3、請求消息中的序列號(Seq)也會包含在應答消息中,這可以使請求者核實應答是針對那一次請求的。
IPMB接口協議總結