關鍵詞:CPCI 平臺;ARM;VxWorks ;熱插拔;工業(yè)控制
1 引言
嵌入式平臺一般以主板為基礎,根據(jù)應用擴展功能模塊。如果適配板用可編程邏輯器件實現(xiàn),主板通過它與功能模塊相連,那么主板可以適應功能模塊的變化。假如適配板為功能模塊預留一定數(shù)量的接口,那么平臺具有更大的擴展性。但由于適配板的接口是設計者自定義的,因而本質(zhì)上決定了基于適配板方法設計的嵌入式平臺不具有開放性。為了解決這個問題,主板與功能模塊必須基于某種標準總線進行設計。
CompactPCI( 下文簡稱CPCI)總線是基于PCI電氣規(guī)范開發(fā)的高性能工業(yè)總線,廣泛應用于工控、通訊等行業(yè)。簡單來說,CPCI總線是PCI 總線的電氣規(guī)范、標準的針孔連接器、歐洲卡規(guī)范三者的結晶。因此基于CPCI 總線設計的嵌入式平臺不僅具有PCI 總線的高性能、歐洲卡結構的高可靠性以及支持熱插拔功能,而且具有良好的開放性和擴展性,可以適應不斷變化的應用環(huán)境和需求[1]。針對本單位實際情況,本文提出構建基于ARM處理器與VxWorks操作系統(tǒng)的CPCI工控平臺,用它代替目前基于適配板方法設計的嵌入式平臺,并將它作為新項目的開發(fā)平臺。文章給出該平臺設計方案,并重點介紹該平臺硬件和軟件的設計。
2 平臺方案
CPCI平臺硬件一般由系統(tǒng)卡、外設卡、無源底板、電源模塊、機箱組成。
CPCI平臺可按基本熱插拔、全熱插拔、高可用性熱插拔三種層次實現(xiàn)。其中基本熱插拔需要用戶通過操作臺與操作系統(tǒng)交互來實現(xiàn)卡的熱插拔管理,不太適合嵌入式的應用;而全熱插拔則用卡推出/插入手柄與LED指示燈代替操作臺,大大簡化了用戶與操作系統(tǒng)的交互;而高可用性熱插拔在全熱插拔的基礎上,除了用軟件對硬件連接過程進行管理,并且在系統(tǒng)卡與每個外設卡槽之間實現(xiàn)點對點的復位和隔離信號,這樣操作系統(tǒng)可以自動隔離并替換壞卡。高可用性熱插拔的性能優(yōu)于全熱插拔,但其硬件和軟件的設計難度也增大。故本CPCI平臺將按全熱插拔方式實現(xiàn)。
3 平臺硬件設計
對于CPCI 機箱、底板、電源,可以根據(jù)應用選擇標準構件。在此只介紹系統(tǒng)卡與外設卡的硬件設計。
3.1 系統(tǒng)卡硬件設計
系統(tǒng)卡主要由CPU、CPCI主橋控制器、熱插拔控制電路、外圍電路組成。CPU是整個平臺的指揮官;CPCI主橋控制器為CPCI總線的擴展提供橋梁;熱插拔控制電路負責系統(tǒng)卡上電與斷電的控制;外圍電路針對應用而定。
CPCI主橋控制器的選型是系統(tǒng)卡設計的關鍵,如果CPU 內(nèi)置PCI 主橋控制器,則無需額外的CPCI主橋控制器,只需增加卡熱插拔檢測以及狀態(tài)指示控制電路,即可實現(xiàn)CPCI主橋控制器的功能。這樣不僅簡化設計,而且降低成本。如果CPU沒有內(nèi)置PCI主橋控制器,可以采取如下三種方法實現(xiàn)CPCI主橋控制器的功能。
(1)自己設計邏輯,然后定制ASIC芯片。
(2)自己設計或購買別人的接口邏輯,用大規(guī)模CPLD或FPGA來實現(xiàn)。
(3)選擇通用的CPCI主橋芯片。
第一種方法,只適用于用量比較大的情況,否則ASIC開發(fā)成本太高。第二和第三種方法,適用于小規(guī)模的情況。對于第二種方法,設計難度較大,并且開發(fā)出來的CPCI接口性能還要經(jīng)過嚴格的驗證才能使用,這無疑延長了產(chǎn)品的研發(fā)周期。由于我們使用的ARM9處理器沒有內(nèi)置PCI 主橋控制器,在此選用第三種方法。在眾多廠家生產(chǎn)的PCI芯片中,以美國PLX公司的PCI9056功能最完備,是作為CPCI主橋芯片的最佳選擇。PCI9056具有PCI R2.2規(guī)范兼容的32位,最高可達66MHZ的PCI總線,并且它滿足PICMG 2.0 R3.0 CPCI規(guī)范以及PICMG 2.1 R2.0 Hot Swap規(guī)范的要求。PCI9056的Local Bus可配置為三種模式,以滿足不同體系結構CPU的需要。針對ARM9處理器,我們把PCI9056的Local Bus配置為C模式,并且通過增加邏輯器件將ARM9 處理器的外部總線接口與PCI9056 的Local Bus進行連接,以實現(xiàn)時序協(xié)調(diào)和傳輸控制。PCI9056內(nèi)置PCI仲裁器,可以支持7個PCI設備的仲裁,這很適用于標準8槽底板的設計。
熱插拔控制電路設計的關鍵是熱插拔控制器的選型,而熱插拔控制器的供應商眾多,每個供應商針對不同應用提供不同型號的芯片。考慮到PCI9056主橋控制器集成了預充電路、Early Power電路,我們選擇Linear公司的LTC1643A芯片作為熱插拔控制器。它可以控制3.3V、5V、±12V電壓的供電,并且提供Fault、Power-Good狀態(tài)信息。系統(tǒng)卡電路的復位可以由Power-Good狀態(tài)來進行控制。
現(xiàn)在以PCI9056作為CPCI主橋控制器,以LTC1643A作為熱插拔控制器,簡單介紹系統(tǒng)卡插入底板的上電工作過程,而系統(tǒng)卡拔出底板的斷電工作過程與之相反。
(1)首先,系統(tǒng)卡的孔式插座與底板最長的電源、地信號針接觸,此時LTC1643A的ON#與PCI9056的BD_SEL#信號均被拉高,LTC1643A處于非工作狀態(tài),而PCI9056處于預充狀態(tài)。
(2)接著,系統(tǒng)卡的孔式插座與底板的中長信號針接觸,由于PCI9056處于預充狀態(tài),這樣系統(tǒng)卡與底板CPCI信號間的能源傳送減到最少。
(3)最后,系統(tǒng)卡的孔式插座與底板的最短信號針BD_SEL#接觸,由于底板BD_SEL#信號針接地,所以LTC1643A的ON#與PCI9056 的BD_SEL#信號均被拉低。此時,PCI9056脫離預充狀態(tài),LTC1643A開始工作。LTC1643A控制3.3V 、5V、±12V上電,當它檢測到3.3V、5V、±12V輸出均在誤差范圍內(nèi),它控制Power-Good#信號拉低,從而控制CPU的復位信號,讓CPU開始上電初始化過程。
(4)當CPU對PCI9056初始化時,它控制PCI9056進行復位,從而控制PCI_RST#信號復位,達到對底板上所有外設卡復位的目的。
3.2 外設卡硬件設計
外設卡主要由CPCI主/從設備接口芯片、EEPROM、熱插拔控制電路、應用電路組成。CPCI主/從設備接口芯片允許外設通過它掛接到CPCI總線上,CPCI主設備接口芯片既可作為CPCI總線上的master發(fā)起交易,又可作為CPCI總線上的slave響應交易;而CPCI從設備接口芯片只可作為CPCI總線上的slave響應交易;EEPROM用于存儲配置信息,當外設卡上電時,CPCI主/從設備接口芯片可以把EEPROM中的配置信息拷貝到它的配置首部寄存器空間;熱插拔控制電路主要負責外設卡上電與斷電的控制;應用電路按照應用需求設計。
外設卡設計的關鍵是CPCI主/從設備接口芯片的選型。在眾多廠家生產(chǎn)的PCI芯片中,以美國PLX公司的主/從設備接口芯片最為齊全。鑒于我們的應用是工業(yè)控制,考慮到性價比,PCI9030從設備接口芯片是不錯的選擇。
PCI9030芯片推薦使用支持序列讀功能的93 系列三線串口EEPROM,我們選用AT93C56A。EEPROM信息的更新除了使用專門的編程器外,還可以使用在線編程的方法實現(xiàn)。
現(xiàn)在以PCI9030作為CPCI設備接口芯片,以LTC1643A作為熱插拔控制器,簡單介紹外設卡插入底板的上電工作過程,而外設卡拔出底板的斷電工作過程與之相反。
(1)首先,外設卡的孔式插座與底板最長的電源、地信號針接觸,此時LTC1643A的ON#與PCI9030的BD_SEL#信號均被拉高,LTC1643A處于非工作狀態(tài),而PCI9030處于預充狀態(tài)。
(2)接著,外設卡的孔式插座與底板的中長信號針接觸,由于PCI9030處于預充狀態(tài),這樣外設卡與底板CPCI信號間的能源傳送減到最少。
(3)最后,外設卡的孔式插座與底板的最短信號針BD_SEL#接觸,由于底板BD_SEL#信號針接地,所以LTC1643A的ON#與PCI9030的BD_SEL#信號均被拉低。此時,PCI9030脫離預充狀態(tài),LTC1643A開始工作。LTC1643A控制3.3V 、5V、±12V上電,當它檢測到3.3V、5V、±12V輸出均在誤差范圍內(nèi),它控制Power-Good#信號拉低,只要此時來自系統(tǒng)卡的PCI_RST#復位信號無效,那么PCI9030進行復位。
(4)當PCI9030完成復位時,一方面,它產(chǎn)生Local_RST_Out#復位信號,從而控制應用電路進行復位;另一方面,如果它檢測到EEPROM存在,就把EEPROM中的配置信息拷貝到它的配置首部寄存器空間。當PCI9030完成初始化,即可響應來自系統(tǒng)卡的CPCI交易。
(5)當PCI9030檢測到卡已插入的狀態(tài),它通過ENUM#信號向系統(tǒng)卡產(chǎn)生中斷請求。系統(tǒng)卡確認產(chǎn)生該中斷信號的外設卡,并調(diào)用它的驅動安裝程序,達到對該外設卡所需內(nèi)存、I/O、中斷等資源的分配。最后,系統(tǒng)卡熄滅該外設卡的狀態(tài)指示燈,以表示它在線。
4 平臺軟件設計
由于該平臺是基于VxWorks操作系統(tǒng)設計的,總體的軟件框架如圖所示。
現(xiàn)說明各部分軟件的功能。
(1)BSP是介于平臺硬件與操作系統(tǒng)之間的板級支持包,使操作系統(tǒng)能夠獨立于平臺硬件。BSP的設計主要包括系統(tǒng)卡硬件的初始化,為操作系統(tǒng)提供中斷、時鐘服務,完成外設驅動程序的初始化。針對CPCI總線部分,在系統(tǒng)卡硬件初始化時包括對PCI9056主橋芯片進行配置。為了實現(xiàn)對CPCI總線上設備的掃描,以及對CPCI設備進行資源配置功能,必須要針對PCI9056主橋芯片編寫CPCI配置庫。
(2)外設卡驅動程序的設計主要針對外設卡實現(xiàn)的功能,按照CPCI設備驅動程序的編寫規(guī)范,提供給應用程序標準的接口函數(shù),從而實現(xiàn)對設備進行安裝、打開、讀寫、控制、關閉、卸載的管理。
(3)系統(tǒng)卡、外設卡中斷服務程序分別響應系統(tǒng)卡、所有外設卡的熱插拔事件,主要把熱插拔事件告訴熱插拔服務程序,讓它代為處理。系統(tǒng)卡中斷服務程序的優(yōu)先級比外設卡中斷服務程序的要高,因為系統(tǒng)卡熱插拔事件所產(chǎn)生的系統(tǒng)狀態(tài)直接決定外設卡可使用的系統(tǒng)資源狀況。
(4)熱插拔服務程序主要處理系統(tǒng)卡與外設卡中斷服務程序的請求,并優(yōu)先處理系統(tǒng)卡的請求?,F(xiàn)分別說明它如何處理來自系統(tǒng)卡、外設卡的熱插拔請求:
(a)系統(tǒng)卡中斷服務請求處理
當系統(tǒng)卡請求插入時,它只是熄滅系統(tǒng)卡的卡狀態(tài)指示燈,以提示用戶系統(tǒng)卡在線;當系統(tǒng)卡請求拔出時,它枚舉所有在線外設卡的卸載函數(shù),并使被卸載外設卡的卡狀態(tài)指示燈點亮,以提示用戶外設卡離線。
(b)外設卡中斷服務請求處理
當外設卡請求插入時,它枚舉所有請求插入的外設卡的安裝函數(shù),并使被安裝外設卡的卡狀態(tài)指示燈熄滅,以提示用戶該卡在線;當外設卡請求拔出時,它枚舉所有請求拔出的外設卡的卸載函數(shù),并使被卸載外設卡的卡狀態(tài)指示燈點亮,以提示用戶該卡離線。
(5)外設卡應用模塊是外設卡驅動程序的使用者,它通過外設卡驅動程序完成對外設卡中設備的讀寫、控制功能。
5 結束語
目前已將該CPCI平臺方案成功應用于片式電子元件高速編帶機項目,不僅大大降低該產(chǎn)品的使用、維護和升級改造的費用,還創(chuàng)造良好的經(jīng)濟效益。
|