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