摘 要:該數(shù)據(jù)處理機系統(tǒng)底板總線采用CPCI總線,并通過PCI-to-PCI橋進行總線擴展,為了解決PCI透明橋和非透明橋在該系統(tǒng)使用中存在的配置、通信及切換問題,本文從軟件方面論述了透明橋和非透明橋機制,CPCI總線主控設備透明橋的配置過程,CPCI總線從設備非透明橋的配置過程,設備間基于CPCI總線的通信方法,互為備份設備間的故障監(jiān)控,CPCI總線主控設備的故障切換方法以及CPCI總線從設備的故障切換方法。該方案簡單易行,已在該數(shù)據(jù)處理機中實施,對以后的其他系統(tǒng)設計具有一定的參考價值。
關(guān)鍵詞:PCI總線;CPCI總線;PCI-to-PCI透明橋;PCI-to-PCI非透明橋
中圖分類號:TP334.7
CPCI的全程稱為CompactPCI,中文又稱緊湊型PCI,是國際PICMG協(xié)會于1994年提出來的一種總線接口標準。它是以PCI電器規(guī)范為標準的高性能工業(yè)用總線。
為了解決PCI總線在總線負載能力方面的先天不足,PCISIG(PCI Special Interest Group)發(fā)布了PCI-to-PCI橋規(guī)范,將PCI總線以層次化的系統(tǒng)結(jié)構(gòu)進行擴展,從而使PCI總線系統(tǒng)擴展為具有多條PCI總線、可連接更多PCI設備的系統(tǒng)。根據(jù)從PCI接口和主PCI接口之間的設備是否可見,可以將PCI-to-PCI橋分為透明橋(Transparent bridge)和(Non-transparent bridge)。
透明橋(Transparent):如圖1所示。透明橋通常用于擴展總線,從PCI總線上的所有設備對主PCI總線一側(cè)的處理器都是透明的,從PCI總線上的所有設備只能由主PCI總線一側(cè)的處理器對其進行配置和控制。主PCI總線和從PCI總線的地址空間完全透明,主PCI總線和從PCI總線之間的地址傳遞是直接傳輸,不用進行地址轉(zhuǎn)換。通過PCI透明橋隔離PCI總線,能夠擴展PCI總線負載數(shù)量,匹配不同的工作頻率、總線寬度和電壓;
圖1 PCI-PCI透明橋
非透明橋(Non-transparent):如圖2所示。通常用于嵌入式智能子系統(tǒng)。它連接兩個獨立的處理器,從PCI總線一側(cè)的資源和地址對主PCI總線一側(cè)的處理器是不可見的,允許從PCI總線一側(cè)的處理器獨立地配置和控制其子系統(tǒng),主PCI總線和從PCI總線的地址完全獨立,時鐘也相互隔離,主PCI總線和從PCI總線的地址由非透明橋來進行轉(zhuǎn)換。
圖2 PCI-PCI非透明橋
該數(shù)據(jù)處理機通過專門設計的CPCI機箱底板使其中搭載的通用處理模塊具有主從自適應能力,該設計在具有多個CPCI外設的嵌入式平臺中具有很大的優(yōu)越性。針對這種硬件設計,專門設計了具有主從自動切換的驅(qū)動軟件。
1 系統(tǒng)結(jié)構(gòu)
該數(shù)據(jù)處理機的組成情況如下:
(1)兩個中央處理模塊(CPM1、CPM2);
(2)兩個實時控制模塊(RCM1、RCM2)。
這些模塊通過CPCI底板總線連接數(shù)據(jù)處理機。每種類型的兩個模塊互為熱備份,兩個中央處理模塊中有一個為CPCI總線的主控模塊,并且可以互相切換。系統(tǒng)中各模塊在CPCI總線上的連接圖如圖3所示。
圖3 數(shù)據(jù)處理機系統(tǒng)結(jié)構(gòu)
缺省狀態(tài)下,CPM2、RCM2、GPM2作為備份模塊工作,CPM1是CPCI總線的主控模塊;當CPM1發(fā)生故障后,由軟件將CPM1從CPCI總線隔離,并將CPM2設置為CPCI總線的主控模塊,由CPM2接替CPM1繼續(xù)工作。
數(shù)據(jù)處理機各模塊之間通過CPCI總線進行通信。模塊間的通信通過PCI6466非透明橋的共享內(nèi)存方式實現(xiàn),通過配置PCI6466非透明橋,映射CPCI總線主控模塊的某一段內(nèi)存空間到其他的所有從模塊的PCI空間上,使所有的模塊都可以通過該內(nèi)存空間來交換數(shù)據(jù)。
2 管理軟件的設計
該數(shù)據(jù)處理機的管理軟件主要完成CPCI總線的初始化、各模塊數(shù)據(jù)通信、故障監(jiān)控及主控模塊。
2.1 CPCI總線初始化
CPCI總線的初始化包括PCI6466透明橋及非透明橋的枚舉及其總線配置。
2.1.1 透明橋及非透明橋的枚舉
數(shù)據(jù)處理機加電后,由各通用處理模塊進行PCI6466透明橋及非透明橋的枚舉,各通用處理模塊應通過枚舉可識別到的PCI6466橋如表1所示:
表1 數(shù)據(jù)處理機PCI6466橋列表
通用處理模塊PCI6466橋
CPM1第一PCI總線上的PCI6466透明橋(1個),第二PCI總線上的PCI6466非透明橋(3個)。
CPM2PCI6466非透明橋(1個)。
RCM1PCI6466非透明橋(1個)。
RCM2PCI6466非透明橋(1個)。
PCI6466橋枚舉結(jié)束后,由各通用處理模塊對其總線進行配置。
2.1.2 透明橋的配置
每個PCI-PCI橋與兩條PCI局部總線連接,這兩個總線稱為它的第一總線和第二總線。
(1)向下:當一個請求被啟動,并通過一個或者多個PCI-PCI橋向從處理器方向傳送,就稱此請求為向下傳送;
(2)向上:當一個請求被啟動,并通過一個或者多個PCI-PCI橋向主處理器方向傳送,就稱此請求為向上傳送;
(3)第一總線:位于PCI-PCI橋上側(cè)的PCI局部總線;
(4)第二總線:位于PCI-PCI橋下側(cè)的PCI局部總線;
(5)下級總線:位于PCI-PCI橋的下側(cè),編號最高的PCI局部總線。
數(shù)據(jù)處理機主控模塊PCI-PCI橋的結(jié)構(gòu)如圖4所示。
圖4 主控模塊PCI-PCI橋的結(jié)構(gòu)
在數(shù)據(jù)處理機中,透明橋位于其主控模塊中。對于CPCI總線主控模塊來說,該系統(tǒng)中具有兩條PCI總線,總線0和總線1,總線0是直接駐留在主/PCI橋另一側(cè)的PCI局部總線,總線編號永遠為0,總線1是總線0的下級總線,位于PCI-PCI透明橋的下側(cè)。規(guī)范規(guī)定,每個PCI-PCI橋必須在其配置空間內(nèi)預定義的位置實現(xiàn)三個總線編號寄存器,這三個總線編號寄存器是:第一總線編號寄存器、第二總線編號寄存器和下級總線編號寄存器。
綜合數(shù)據(jù)處理機中CPCI總線主控模塊對PCI6466透明橋的配置過程如下:
(1)配置PCI6466透明橋的總線編號寄存器,分別配置該PCI-PCI透明橋的第一總線編號、第二總線編號和下級總線編號,以便在有PCI總線交易發(fā)生時PCI-PCI橋能夠確定是否將該交易傳送到下級總線;
(2)配置PCI6466透明橋的可預取存儲器范圍寄存器和基地址寄存器。這兩個寄存器定義了第二PCI總線上設備的哪些空間的存儲訪問請求被傳送到第一PCI總線上;
(3)配置PCI6466透明橋的命令寄存器,以便使能總線的存儲空間和總線主控功能。
配置完成后,就可以在CPCI主控模塊的主PCI橋一側(cè)的CPU發(fā)送1類配置命令來配置和控制PCI-PCI透明橋下面的設備,即第二總線上的設備,在數(shù)據(jù)處理機中,這些設備就是其他通用處理模塊中的非透明橋。
2.1.3 非透明橋的配置
在數(shù)據(jù)處理機中,配置非透明橋的目的是各通用處理模塊之間的數(shù)據(jù)共享。主控模塊通過PCI-PCI透明橋共享自己的一塊RAM空間,其他所有的通用處理模塊都映射自己的某一IO存儲空間到主控模塊的RAM空間,即可實現(xiàn)主控模塊和其他通用處理模塊彼此之間通過該RAM空間的數(shù)據(jù)共享。
PCI6466透明橋的在數(shù)據(jù)流的方向上分為上行和下行,即向上數(shù)據(jù)流和向下數(shù)據(jù)流。在該數(shù)據(jù)處理機中,從模塊需要通過PCI6466非透明橋訪問主控模塊為其共享的RAM空間,因此數(shù)據(jù)流為向下數(shù)據(jù)流,所以我們在配置PCI6466的寄存器時僅需配置下行相關(guān)寄存器即可。
非透明橋的配置需要橋兩側(cè)的處理器共同完成,即非透明橋的從端由主控模塊來完成配置,非透明橋的主端由其他通用處理模塊來完成配置。下面分別說明非透明橋的從端和主端的配置過程。
非透明橋從端配置:
由于PCI6466非透明橋在主控模塊的總線1上,因此主控模塊CPU要完成非透明橋從端的配置需要通過發(fā)送1類配置來實現(xiàn)。PCI規(guī)范中定義的1類配置訪問的配置地址的訪問格式如圖5所示。
圖5 PCI 1類配置訪問的格式
其中AD[1::0]=01表示該配置為1類配置,用于將一個配置請求傳遞到另一條PCI局部總線上,AD[23::16]表示這個1類配置訪問需要傳遞到哪條PCI總線上,對于CPCI主控模塊來說,第二總線的總線編號為1,因此在主控模塊CPU在配置每個從模塊的非透明橋時,發(fā)出的配置周期的配置地址中,AD[23::16]=00000001。
主控模塊配置PCI6466非透明橋時需要配置的寄存器有:下行數(shù)據(jù)映射后基址寄存器、下行數(shù)據(jù)映射窗口大小寄存器和命令寄存器。其中下行數(shù)據(jù)映射后基址寄存器和下行數(shù)據(jù)映射窗口大小寄存器共同定義了主控模塊給各個從模塊共享的RAM空間基址和大小。在本系統(tǒng)中定義主控模塊的從0xF000000地址開始的8Mbytes空間共享給從模塊訪問因此下行數(shù)據(jù)映射窗口基址寄存器配置為共享RAM區(qū)的起始地址0xF000000。
非透明橋主端配置:
對于CPCI總線的從模塊來說,PCI6466非透明橋位于其第一PCI總線上,因此可直接通過主PCI橋?qū)ζ溥M行配置。從模塊需要配置的寄存器有:下行數(shù)據(jù)訪問基址寄存器和命令寄存器,其中下行數(shù)據(jù)訪問基址寄存器配置了從模塊用于訪問主控模塊為其共享的RAM空間的IO地址空間。
至此,非透明橋已配置完成,非透明橋的主端和從端均可讀寫主端共享的RAM空間,以達到數(shù)據(jù)交換的目的。
2.2 模塊間通信
模塊間通信通過CPCI總線的共享存儲空間完成。系統(tǒng)管理軟件主要負責空間的配置、通信通道的配置、數(shù)據(jù)的讀寫控制及備份模塊的通信控制。
系統(tǒng)管理軟件根據(jù)用戶的通信通道配置在共享存儲空間中為每一個通用處理模塊分配通信通道所使用的共享存儲空間,保證各通信通道所占用的存儲空間互相隔離。
系統(tǒng)管理軟件設計了對共享存儲空間的互斥機制,保證通信的收發(fā)雙方對共享存儲空間讀寫操作的互斥性。
系統(tǒng)管理軟件還負責互為備份的兩個模塊的通信控制,為每個通用處理模塊設置工作狀態(tài)標志,處理故障或者備份狀態(tài)的通用處理模塊則不允許其進行通信操作。
2.3 故障監(jiān)控
在整個處理機運行過程中,系統(tǒng)管理軟件將實時監(jiān)控各通用處理模塊的運行狀態(tài),監(jiān)控手段包括周期自檢測結(jié)果、心跳消息等,并根據(jù)監(jiān)控結(jié)果對發(fā)生故障的模塊實時故障隔離,對備份模塊實施切換。
2.4 系統(tǒng)的備份切換
系統(tǒng)的備份切換是綜合數(shù)據(jù)處理機系統(tǒng)管理軟件的主要功能,能夠基于故障監(jiān)控結(jié)果及時發(fā)現(xiàn)發(fā)生故障的模塊并進行故障的隔離和系統(tǒng)切換,系統(tǒng)的備份切換按照切換方法的不同分為主控模塊的切換和非主控模塊的切換。
2.4.1 主控模塊的自動切換
主控模塊的自動切換包括故障模塊的總線隔離及備份模塊的總線初始化。
CPCI主控模塊發(fā)生故障時,需要進行兩個CPM模塊之間的切換,CPM1被從總線隔離,CPM2被設置為CPCI總線的主控模塊。
由于CPM2之前作為CPCI總線的從模塊運行,因此,在被設置為主控模塊后,CPM2需要通過一系列的切換操作以便恢復整個系統(tǒng)的運行,在主控模塊切換過程中,數(shù)據(jù)處理機各通用處理模塊的數(shù)據(jù)交換是禁止的。
新的主控模塊需要完成的切換操作包括:
(1)將本模塊的PCI6466設置為透明模式;
(2)對本模塊PCI6466透明橋進行配置;
(3)對其他CPCI從模塊的非透明橋進行配置。
主控模塊切換完成后,將以事件形式通知其他通用處理模塊。
2.4.2 非主控模塊的自動切換
非主控模塊的切換在非主控模塊發(fā)生故障時進行,此時,系統(tǒng)管理軟件根據(jù)故障監(jiān)控狀態(tài)將不允許發(fā)生故障的模塊輸出,并將輸出切換至備份模塊。
3 結(jié)束語
PCI-PCI橋是嵌入式系統(tǒng)中常用的一種總線擴展方法,PLX公司的PCI6466是一種可以工作在透明模式和非透明模式的PCI-PCI橋,本文主要論述了某綜合數(shù)據(jù)處理機中的PCI-PCI透明橋和非透明橋的配置和切換方法,并通過PCI-PCI橋?qū)崿F(xiàn)了系統(tǒng)各模塊間的通信以及熱備份,該方案簡單易行,對以后的系統(tǒng)設計具有一定的參考價值。
參考文獻:
[1]PCI Local Bus Specification 2.3[S].Portland.PCI Special Interest Group,2001.
[2]王樂,馬春江,馮曉東.PCI-to-PCI非透明橋的設計和應用[J].微電子學與計算機,2007(07):160-163.
[3]張玲,李鵬.一種具有主從自適應功能的CPCI通用處理模塊設計[J].現(xiàn)代電子技術(shù),2012(20):19-24.
[4]PLX Technology.Inc.PCI6466 Data Book[EB].PLX Technology.Inc,1999.http://www.plxtech.com.
[5]韓振國,梁小虎.基于CPCI總線的具有熱切換能力的數(shù)據(jù)處理模塊的設計與實現(xiàn)[J].航空計算技術(shù),2010(04):116-117.
[6]周先譜,童朝南.一種基于C-PCI總線的HMCS地址映射機制研究[J].計算機工程與應用,2008(10):71-74.
作者簡介:陳曉磊(1981-),男,陜西西安人,工程師,學士學位,主要研究方向:機載嵌入式操作系統(tǒng)。
作者單位:中國航空計算技術(shù)研究所,西安 710065