多處理器運(yùn)行的嵌入式系統(tǒng)
2004年9月A版
在早期開發(fā)微處理器的嵌入式軟件時(shí),條件比較簡單,只有一個(gè)CPU、數(shù)量有限的存儲(chǔ)器、若干I/O、還可能有簡單的網(wǎng)絡(luò)。
今天,情況已經(jīng)變化。嵌入式系統(tǒng)可能是多CPU,甚至是DSP和CPU的組合。存儲(chǔ)器和數(shù)據(jù)率都屬于海量,此外,開發(fā)隊(duì)伍遍布全球,而且客戶要求提供幾乎不可能達(dá)到的可靠性。
嵌入式軟件供應(yīng)商怎樣才能夠滿足開發(fā)商的需要,包括消息傳送、存儲(chǔ)器管理、CPU/DSP之間的通信、容錯(cuò)和系統(tǒng)級(jí)開發(fā)工具呢?
當(dāng)DSP越來越復(fù)雜和更加強(qiáng)大時(shí),開發(fā)商逐漸認(rèn)識(shí)到,必須在這些器件上運(yùn)行實(shí)時(shí)操作系統(tǒng)。當(dāng)執(zhí)行多任務(wù)時(shí),實(shí)時(shí)操作系統(tǒng)能夠有效地使用DSP的資源,并且對(duì)誤差處理和存儲(chǔ)器地址分配等作業(yè)有幫助。
對(duì)于TigerSHARC等DSP,實(shí)時(shí)操作系統(tǒng)通過“鏈接端口”處理通信,控制其它CPU和DSP,并且產(chǎn)生同步。為CPU和DSP同時(shí)提供通用的API(應(yīng)用程序接口)可改善開發(fā)時(shí)間、編寫文件和代碼維護(hù)。
實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)的一項(xiàng)重要進(jìn)步是內(nèi)部處理通信能力—嵌入式系統(tǒng)的作業(yè)如何與其它作業(yè)交換數(shù)據(jù)。傳統(tǒng)辦法是分享存儲(chǔ)器的“信箱”,采用信號(hào)量進(jìn)行存取和控制。
隨著嵌入式系統(tǒng)變得更為復(fù)雜。許多開發(fā)團(tuán)隊(duì)轉(zhuǎn)而使用異步的信息通行結(jié)構(gòu)(參閱圖1)。從程序員的觀點(diǎn)來看,例如在OSE實(shí)時(shí)操作系統(tǒng)中,作業(yè)只要簡單地發(fā)送消息和另一個(gè)作業(yè)接收消息。這樣做的優(yōu)點(diǎn)很多,由于實(shí)時(shí)操作系統(tǒng)處理了存儲(chǔ)器的地址分配,系統(tǒng)的調(diào)用數(shù)就減少。作業(yè)可在系統(tǒng)內(nèi)任何地方接收。甚至可通過背板接收到在另一塊電路板的作業(yè);不管作業(yè)在哪里,實(shí)時(shí)系統(tǒng)都可對(duì)它進(jìn)行處理,事實(shí)上,消息通行的異步方式是指一個(gè)作業(yè)不能鎖住另一個(gè)正在等候信號(hào)的作業(yè);有時(shí)候在復(fù)雜的分布系統(tǒng)中,這樣做是很重要的。
異步的消息通行結(jié)構(gòu)還有另外的優(yōu)點(diǎn),它可將項(xiàng)目劃分成幾部分,再分配到幾個(gè)小組作并行開發(fā)。
存儲(chǔ)器管理是另一個(gè)結(jié)構(gòu)問題。當(dāng)系統(tǒng)要得更加動(dòng)態(tài)和更加著重存儲(chǔ)器時(shí),嵌入式系統(tǒng)的存儲(chǔ)器管理就變得十分重要。在動(dòng)態(tài)系統(tǒng)中,一個(gè)不可避免的問題是數(shù)據(jù)分段。雖然無用信息收集法可作為一種解決方案,但是它的風(fēng)險(xiǎn)會(huì)影響到系統(tǒng)的實(shí)時(shí)性能。
OSE實(shí)時(shí)操作系統(tǒng)正用于全球的基站中,經(jīng)常放置在遠(yuǎn)端臺(tái)站。對(duì)網(wǎng)絡(luò)供應(yīng)商來說,損失客房的空中時(shí)間或票據(jù)信息都是不可取的。OSE用兩種地址分配方式來消除分段,“堆置(heap)”,根據(jù)黃金分割法的順序分配存儲(chǔ)器地址,從而限制分段;輪詢緩沖器(a pool of buffers),此時(shí)任務(wù)分配為輪詢存儲(chǔ)器,而且只分配到預(yù)定容量的緩沖器中。一旦某個(gè)緩沖器被使用,它就回到系統(tǒng)內(nèi)。結(jié)果是輪詢的全部存儲(chǔ)器隨時(shí)保持“可用”狀態(tài)。這種辦法還有一些重要特點(diǎn),如不會(huì)受到存儲(chǔ)器搜索延時(shí)的影響。
現(xiàn)代實(shí)時(shí)操作系統(tǒng)結(jié)構(gòu)的進(jìn)展是誤差處理(參閱圖2)。在傳統(tǒng)系統(tǒng)中,軟件開發(fā)者為了處理可能發(fā)生的任何錯(cuò)誤,在系統(tǒng)訪問后必須編寫“差錯(cuò)代碼”,例如,出現(xiàn)失效的存儲(chǔ)器地址分配錯(cuò)誤。不難想到,當(dāng)項(xiàng)目越大和開發(fā)隊(duì)伍擴(kuò)大時(shí),將有許多人寫出大量的差錯(cuò)碼。在OSE結(jié)構(gòu)中,錯(cuò)誤處理是內(nèi)建在系統(tǒng)訪問的運(yùn)作。
從程序員的觀點(diǎn)來看,應(yīng)用提出對(duì)系統(tǒng)訪問,而實(shí)時(shí)操作系統(tǒng)完成其它工作。如果系統(tǒng)訪問失敗,則內(nèi)核將調(diào)用中央錯(cuò)誤處理器去解決問題。
這樣做有很多好處。第一,應(yīng)用碼更加緊湊和可靠,而且開發(fā)和排錯(cuò)也更快。第二,更多錯(cuò)誤處理可在系統(tǒng)級(jí)進(jìn)行,構(gòu)成更牢靠的容錯(cuò)系統(tǒng)。
各種處理器之間的通信
嵌入式開發(fā)的最重要發(fā)展趨勢(shì)也許就是混合設(shè)計(jì)和多CPU/DSP設(shè)計(jì)了。這種設(shè)計(jì)有系統(tǒng)級(jí)、電路板級(jí)、甚至芯片級(jí),例如,集成器件諸如TI公司的OMAP,它的特點(diǎn)是ARM核和一個(gè)DSP結(jié)合。
實(shí)時(shí)操作系統(tǒng)開發(fā)商加緊CPU和DSP兩者的開發(fā),但是怎樣解決DSP與CPU的通信呢?Enea嵌入式科技公司構(gòu)建了一種鏈接處理器。它是實(shí)時(shí)操作系統(tǒng)的一部分,用來處理整個(gè)系統(tǒng)內(nèi)各任務(wù)的分散消息,不管消息來自鄰近的DSP或是在另一插卡上的CPU。它的工作能夠跨越大部分通信機(jī)制,包括以太網(wǎng)、串行口、CAN和Compact PCI等。這種鏈接處理器是智能的,能夠檢測(cè)出傳輸機(jī)制的故障和尋找出新的路由。它還能夠根據(jù)名稱來分配任務(wù),甚至發(fā)送不知道接收方的位置/路徑的任務(wù)。
構(gòu)建在鏈接處理器上,OSE的開發(fā)人員開發(fā)出兩種系統(tǒng)訪問方式,稱為“搜索”和“連接”?!八阉鳌痹L問讓某一任務(wù)決定需要與另一任務(wù)通信的路徑。一旦知道路徑后,該任務(wù)即可“連接”上接收的任務(wù)。同時(shí)表明,如果該任務(wù)遇到有任何事件發(fā)生,則內(nèi)核將會(huì)告知發(fā)送任務(wù)方。接收任務(wù)所駐留的電路板是否已移走或失效,都會(huì)告訴發(fā)送方。因而,該任務(wù)可將(失效)的復(fù)印件重新“搜索”一次,或者將一份新的接收方任務(wù)復(fù)印件送到(熱插拔)的替換電路板上。
縮短開發(fā)時(shí)間
面市時(shí)間是大事迫使軟件和工具供應(yīng)商提出解決方案。例如Ericsson等公司的許多前階段開發(fā),在實(shí)際硬件未完成前是在OSE的“軟內(nèi)核”上進(jìn)行的,軟內(nèi)核是一種已移植到Windows上的一種實(shí)時(shí)操作系統(tǒng),使工程師能夠在臺(tái)式PC上開發(fā)代碼。這種開發(fā)環(huán)境可支持多內(nèi)核,甚至支持鏈接處理器技術(shù)。
在查錯(cuò)階段,許多工作可使用“系統(tǒng)級(jí)”查錯(cuò)工具。工具對(duì)運(yùn)行在系統(tǒng)內(nèi)的任務(wù),狀態(tài)以及性能提供可見度,工具可動(dòng)態(tài)地分析存儲(chǔ)器的使用情況;用一個(gè)任務(wù)或一組任務(wù)分析對(duì)CPU的要求;對(duì)通過系統(tǒng)的消息進(jìn)行跟蹤;甚至可讓工程師在系統(tǒng)級(jí)上設(shè)置斷點(diǎn),以及對(duì)運(yùn)行中的系統(tǒng)注入測(cè)試和分析用的信號(hào)。因而,工程師即可在工作臺(tái)上而無需在現(xiàn)場(chǎng)快速查錯(cuò)。
評(píng)論