作者:Paul N. Leroux,QNX Software Systems公司技術分析師
paull@qnx.com (9/1/05)
QNX Neutrino RTOS提供了任務關鍵型SDR器件所需的動態(tài)升級能力、容錯和硬實時性能。
文章英文版PDF 350 KBXilinx® Virtex™-II Pro和Virtex-4 FX FPGA具有千兆位級收發(fā)器、用于并行信號處理的乘法器陣列、和可重配置邏輯,是構建靈活的、有成本效應的軟件定義無線電(SDR)的理想平臺。 例如,通過支持局部重配置(快速配置或重配置部分FPGA的能力),這些FPGA可以利用一組處理資源同時支持多種波形。 因此,系統(tǒng)設計者可以消除每個通道的冗余硬件,降低其SDR器件的功耗。
直到最近,大多數(shù)SDR設計中的CPU是作為分立元件而存在的,通過高速互連與FPGA架構通信。 Virtex-II Pro和Virtex-4 FX器件采用不同的方法,將高性能PowerPC™核直接植入FPGA。 這種方法不僅在CPU和FPGA架構之間提供了高速訪問端口,而且還減少了元件數(shù)目并釋放了板空間。
同等重要的是,嵌入式PowerPC核允許SDR設計者和軟件工程師利用一組基于標準的、現(xiàn)成的RTOS陣列和工具鏈,如QNX Neutrino RTOS和QNX Momentics開發(fā)套件。
起初,SDR中的術語“軟件”可能會引起誤解。 它表示一個器件,其中運行在CPU上的軟件處理信號發(fā)生和檢測、調(diào)制和解調(diào)、加密和解密、信號頻率選擇之類的功能。 實際上,大多數(shù)這種功能運行在FPGA架構內(nèi)的信號處理器上。
不過,SDR器件仍須依靠基于CPU的軟件來下載和管理信號處理器的新波形,處理語音捕捉和回放,管理信息的顯示并協(xié)調(diào)大量的其他命令和控制任務。 由于典型的SDR器件的復雜性和動態(tài)特性,該軟件必須提供可靠性、可升級性和實時性能的強大組合。 本文中,我們將探討QNX Neutrino微內(nèi)核RTOS是如何幫助系統(tǒng)設計者和軟件工程師實現(xiàn)上述要求,同時大大縮短開發(fā)時間和減少開發(fā)工作的。
進行升級
借助于Xilinx FGPA,您可以實現(xiàn)SDR的一個關鍵目標:可以動態(tài)應用到多種無線電環(huán)境中的單個、可重配置硬件平臺。 但是,如果運行在FGPA的PowerPC核上的系統(tǒng)軟件不提供相應的可升級性和可重配置性,這個目標就不能達到或受到很大影響。
不巧的是,此類動態(tài)要求向傳統(tǒng)的RTOS提出了嚴重挑戰(zhàn)。 問題來自于傳統(tǒng)的嵌入式設計,在產(chǎn)品的整個壽命周期內(nèi),其中的軟件一般保持穩(wěn)定,變化很小或不變。 大多數(shù)為此類產(chǎn)品設計的RTOS,仍反映過去的要求。 因此,除非移除服務,否則采用的系統(tǒng)的維護、升級或擴展將很難開展。
為解決這個問題,QNX Neutrino使用一個真正的微內(nèi)核架構(如
圖1所示)。 微內(nèi)核RTOS有兩種顯著特性,對于構建一個動態(tài)的、可靠的SDR器件來說都至關重要: OS內(nèi)核僅包含基本服務的小核,如定時器、信息和調(diào)度。 所有高級服務和程序(如驅(qū)動器、文件系統(tǒng)、協(xié)議堆棧、用戶應用),都在內(nèi)核外部作為獨立的、存儲器保護的元件而運行。 大多數(shù)軟件成分通過信息傳送進行通信,這是一種定義明確的通信機理,在保持程序相互安全隔離的同時,允許程序交換數(shù)據(jù)。
正確實現(xiàn)時,信息傳送也用作虛擬“軟件總線”,允許幾乎所有的軟件成分(不管是器件驅(qū)動器、協(xié)議堆棧或者應用)可以高速地移除、增加或升級。 因此,不需要系統(tǒng)復位或服務中斷,SDR器件就可以支持新功能。
網(wǎng)絡服務
借助于QNX Neutrino的虛擬軟件總線,SDR器件可以不間斷地工作,即使是在利用新波形、應用、驅(qū)動器或其他軟件成分進行升級時,也是如此。 不過,仍然存在一個問題:當服務器提供一個新波形或服務時,遠程的SDR器件實際上是如何發(fā)現(xiàn)它并了解如何使用它的?
為了發(fā)現(xiàn)并激活新波形和濾波器,SDR器件可以使用公共對象請求代理體系結構(CORBA)中間設備。 事實上,美國國防部(DoD)在其聯(lián)合戰(zhàn)術無線電系統(tǒng) (JTRS)計劃中,強制使用CORBA來實現(xiàn)該目的。 CORBA中間設備的實例是Objective Interface的ORBexpress,這是一個可以運行在QNX Neutrino上的高效的、實時實現(xiàn)程序。
設計時考慮到不同系統(tǒng)間的互用操作,CORBA可以在一個公司內(nèi)部、通過一個閉合的網(wǎng)絡提供分布式處理,非常適用于波形的提供。 不過,由于它不能穿過因特網(wǎng)防火墻,因此,不適合在廣域網(wǎng) (WAN) 上訪問高級服務,如DoD預見的全球信息網(wǎng)格 (GIG)。 以網(wǎng)絡為核心進行的戰(zhàn)爭 (NCOW)系統(tǒng)為例,多功能現(xiàn)場無線電必須通過GIG訪問新的戰(zhàn)略信息服務(在可以提供此類信息服務時)。 對于這樣的應用,QNX的網(wǎng)絡服務實現(xiàn)方法提供了理想的解決方案(如
圖2所示)。
網(wǎng)絡服務提供對網(wǎng)絡能力(如訪問遠程資源的通用資源識別符[URI])的全存取能力,與多種安全協(xié)議兼容,包括HTTP-S和強加密的IPSec。 網(wǎng)絡服務對防火墻也是友好的,通過與HTTP的定義明確的傳送約束,它們可以利用現(xiàn)有的因特網(wǎng)安全協(xié)議,并可以在因特網(wǎng)的任何地方被訪問。 由于網(wǎng)絡服務基于開放的標準(如XML、SOAP、WSDL、HTTP和UDDI),所以它們提供了一種供應商中立的、與語言無關的、不受平臺約束的訪問遠程服務和數(shù)據(jù)的方法。
簡而言之,網(wǎng)絡服務可以在一個WAN上跨越多個公司,并消除穿過防火墻的復雜性,允許JTRS無線電訪問GIG上具有高級VPN安全性的服務和路由。
為了幫您利用網(wǎng)絡服務,QNX已開發(fā)出一種網(wǎng)絡服務技術開發(fā)套件(TDK)。 使用該TDK,嵌入式開發(fā)者可以在原始C或C++中實現(xiàn)基于WSDL、SOAP、XML的網(wǎng)絡服務應用,而無需處理XML的復雜性和協(xié)議變換。 而且,TDK符合網(wǎng)絡服務互用性組織 (WSI) 基本規(guī)范1.0。因此,利用TDK開發(fā)的應用可以與其他基于標準的實現(xiàn)(如Microsoft .NET)互用。 同樣重要的是,QNX設計的TDK可以滿足SDR器件和其他嵌入式系統(tǒng)的嚴格資源約束。
使命:很關鍵
對于大多數(shù)SDR器件而言,必須保證可靠性。 軟件缺陷很可能影響器件的主要用途:發(fā)送信號。 如果由于某種原因,發(fā)生了軟件缺陷,器件應該可以從容地從中恢復,而無需系統(tǒng)復位。
該要求向傳統(tǒng)操作系統(tǒng)提出了挑戰(zhàn),傳統(tǒng)的操作系統(tǒng)將大多數(shù)系統(tǒng)服務(驅(qū)動器、文件系統(tǒng)、協(xié)議堆棧)綁定到操作系統(tǒng)內(nèi)核上。 利用這種方法,任何系統(tǒng)服務中的單個編碼錯誤都可能破壞其它服務或內(nèi)核自身使用的存儲器,引發(fā)系統(tǒng)大范圍故障。
相對而言,一個類似于QNX Neutrino的微內(nèi)核操作系統(tǒng)作為獨立的存儲器保護元件,在內(nèi)核外運行所有這些服務。 這種架構提供兩種關鍵的可靠性優(yōu)勢。 首先,在錯誤進入使用的系統(tǒng)之前,能比較容易地隔離和糾正編碼錯誤。 例如,如果正在開發(fā)的任何服務或應用試圖訪問其進程放置程序外部的存儲器,操作系統(tǒng)將識別起作用的進程,指明故障的位置,并創(chuàng)建一個可以利用源代碼級調(diào)試工具查看的進程轉(zhuǎn)儲文件。 該轉(zhuǎn)儲文件包括調(diào)試器需要的所有用來識別引發(fā)問題的源代碼行的信息和其它診斷信息。 將它與傳統(tǒng)操作系統(tǒng)相比,在傳統(tǒng)操作系統(tǒng)中,這類錯誤可以使整個系統(tǒng)崩潰,而對于導致這個后果的原因,卻不留下一絲痕跡。
其次,微內(nèi)核架構使平均修理時間(MTTR)大大縮短。 例如,考慮當使用的系統(tǒng)中出現(xiàn)驅(qū)動器故障時,會發(fā)生什么情況:操作系統(tǒng)會終止驅(qū)動器、收回驅(qū)動器使用的資源,然后重新啟動,這常常在幾毫秒內(nèi)完成。 從開始到結束,整個過程比需要重新啟動整個系統(tǒng)的傳統(tǒng)解決方案快幾個數(shù)量級。
通過使用QNX的關鍵處理監(jiān)視技術,在問題升級之前檢測問題,使您確定操作系統(tǒng)應該采取的正確恢復行動,這使這個過程更簡單(如
圖3所示)。
實時的優(yōu)勢所在
作為真正的RTOS,QNX Neutrino提供了協(xié)調(diào)多個并發(fā)SDR應用和服務所需的硬實時能力。 例如,它可以處理命令和控制程序、基于映射的戰(zhàn)略顯示(在JTRS無線電中)、多個調(diào)制和加密方案以及多個其它應用,同時確保時間關鍵任務(如主處理器和信號處理器之間的語音信息包的傳送)可以按及時、可預測的方式發(fā)生。
為了實現(xiàn)可預見的活動,QNX Neutrino提供了大量的特性,包括基于優(yōu)先權的可搶占式調(diào)度程序、可搶占式內(nèi)核、嵌套中斷、避免優(yōu)先權倒置的機制和調(diào)度算法的靈活選擇。 這些特性幫助您確保高優(yōu)先級的線程始終如一地滿足它們的最終期限,而不管有多少其它的線程在爭奪CPU時間。
允許單組資源支持多個波形,是Virtex-II Pro和Virtex-4 FX FPGA的主要優(yōu)勢。 同樣,一個成熟的RTOS(如QNX Neutrino)讓您可以最大限度地利用處理器資源,同時將總成本降至最低。 無需使用昂貴的高端CPU,避免了與之相伴的散熱問題,可以得到必需的處理能力。 而且,QNX Neutrino的實時能力提供了更大的設計靈活性:您可以選擇將應用從DSP移到主機CPU中,反之亦然。 利用通用操作系統(tǒng),任何具有實時約束的任務都必須委托DSP完成。
與生俱來
SDR是處理多個不斷發(fā)展的傳輸標準的關鍵。 但是,SDR自身一度需要通用標準,以確保不同的SDR平臺間的軟件的再用性和互用性。 為了解決這個問題,DoD的JTRS聯(lián)合計劃處(JPO)開發(fā)出了軟件通信架構(SCA),并規(guī)定所有的JTRS開發(fā)項目都使用它。 軟件定義無線電論壇從此采用SCA,對象管理集團(OMG)計劃將它作為一個商用標準進行推廣。
為確保波形與商用現(xiàn)成技術(COTS)的可移植性和兼容性,SCA根據(jù)兩個現(xiàn)有的行業(yè)標準規(guī)定了一個操作環(huán)境:CORBA中間設備和便攜式操作系統(tǒng)接口(POSIX)操作系統(tǒng)。
QNX Neutrino是SCA實現(xiàn)的理想操作系統(tǒng)。 首先,它滿足POSIX 1003.1-2001,具有廣泛的POSIX選項集,包括實時擴展和線程。 這不僅滿足了SCR的要求,而且可以很輕松地將基于Linux、Unix和其它POSIX的開放源程序轉(zhuǎn)到QNX Neutrino的高效實時架構中。 同樣重要的是,QNX Neutrino微內(nèi)核從設計伊始就支持POSIX,POSIX是“與生俱來的”。這樣的方法不需要其它操作系統(tǒng)使用的復雜POSIX適配層,實現(xiàn)了較高的性能和較低的存儲器要求。
另外,強有力的POSIX支持大大簡化了將任何實時CORBA實現(xiàn)(如ORBexpress)轉(zhuǎn)到QNX Neutrino的任務。 問題的關鍵是,實時CORBA提供了使與SCA兼容的器件動態(tài)地了解新波形的框架。
結論
QNX Software Systems公司與Xilinx密切合作,為Virtex-II Pro ML300評估平臺、ML310 Virtex-II Pro開發(fā)平臺和ML403 Virtex-4 FX評價平臺開發(fā)出了板支持包(BSP)。 這些BSP與QNX Neutrino RTOS的6.3版兼容,根除了軟件/硬件集成問題,使您可以立即開始應用開發(fā)。
了解BSP或者QNX Neutrino如何幫助您實現(xiàn)SDR項目方面的更多信息,請訪問www.qnx.com或撥打QNX電話:(800) 676-0566 (北美)或+1 (613) 591-0931。