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