采用可高效再配置DSP 系統(tǒng)的動態(tài)加載技術
基于 dsp(數(shù)字信號處理器)的多功能系統(tǒng)正變得日益普遍,特別在無線通信方面更是如此。新一代超高性能 dsp 使基站可以承載更多的語音、數(shù)據(jù)以及視頻信息通道,而高級低功耗 dsp 則為手持終端系統(tǒng)提供了 web 瀏覽及其他多媒體功能。與以往的任何 dsp 系統(tǒng)相比,上述系統(tǒng)都能夠?qū)崿F(xiàn)更強大的多功能軟件靈活性,這不僅是因為通信標準具有很高的多樣性,而且也由于目前無人知曉眾多新興應用中到底哪些會勝出。
新型移動通信市場較強的開放性提出了一系列新的 dsp 技術挑戰(zhàn),這不足為奇。其中最重要的是在于如何加載并配置資源密集型的多媒體應用,以及如何在目前正投入使用的各種新興系統(tǒng)上加載,并配置諸多不同的通信算法。由于我們常常要在系統(tǒng)運行時進行軟件再配置,這也使問題進一步復雜化。各種新式應用及運行這些應用的、基于dsp的系統(tǒng)成功與否,取決于是否能開發(fā)出成功應對上述挑戰(zhàn)的軟件配置技術。
目前,開發(fā)人員發(fā)現(xiàn)動態(tài)加載應用模塊是在運行期間再配置系統(tǒng)以改變或擴展其功能的最有效方式。開發(fā)人員不能在運行前靜態(tài)配置許多 dsp 系統(tǒng),其原因在于執(zhí)行操作的實時要求。但是,動態(tài)加載允許系統(tǒng)根據(jù)需要進行自身的再配置。舉例而言,支持多個調(diào)制解調(diào)器協(xié)議的基站系統(tǒng)可使用動態(tài)加載,從而為目前的服務請求進行適當?shù)淖陨碓倥渲?。我們不妨再舉另一個例子,即把基于web的內(nèi)容下載到無線手持終端中。我們不能鏈接一個靜態(tài)的程序圖像,讓它支持用戶可能選擇的所有潛在web瀏覽路徑。但是,我們可以通過動態(tài)加載在用戶需要時下載某功能所需的支持。這種運行時的靈活性使動態(tài)加載成為可再配置 dsp 系統(tǒng)的關鍵技術。
動態(tài)加載在臺式機領域很常見,用戶常用它從各自獨立的可升級模塊來進行應用匯編。但是,開發(fā)人員過去在dsp系統(tǒng)中不怎么使用動態(tài)加載技術,因為過去它們通常都是帶有實時確定要求的單一應用。
其他技術的沉沒 開發(fā)人員也已嘗試過采用靜態(tài)技術進行再配置,但上述技術與動態(tài)加載相比較少成功,其中之一就是構(gòu)建了多個程序圖像,每個圖像都帶有不同的算法集合。當開發(fā)人員在運行時可以確定實際的配置時,就可以下載適當?shù)膱D像。在帶寬有限的無線鏈接情況下,可能需要很長的時間才能下載完整的應用,而且如果開發(fā)人員必須通過重復下載完整的圖像才能在運行過程中對系統(tǒng)進行再配置的話,那么就會中斷系統(tǒng)的使用。對于開發(fā)人員來說,這種方法要求在構(gòu)建應用可能需要的所有圖像之前須提前進行全面了解。
在具有多種獨立功能差異的系統(tǒng)中,開發(fā)人員必須構(gòu)建的圖像數(shù)量也呈組合式增長。隨著系統(tǒng)和軟件應用變得越發(fā)復雜,最終也不可能預先確定所有潛在要求,因此這種方法也就不再可行了。
開發(fā)人員還推出了疊加技術,可部分地解決上述問題。根據(jù)這種方法,備用代碼或數(shù)據(jù)處于相同的存儲器空間中。當模塊在運行時被寫入該空間并疊加原先的模塊時,就會進行再配置。這種方法減少了加載時間,并且進行再配置也不必中斷應用。如果開發(fā)人員可限制系統(tǒng)僅從一個系列選擇中做出一種選擇,那么系統(tǒng)就可相當有效地采用疊加的方法了。但如果系統(tǒng)要求多種選擇,那么為每個疊加都預先確定存儲器分配就不大可能現(xiàn)實了。這種情況可能會要求構(gòu)建多個疊加圖像,每個圖像針對一個可能的存儲器進行綁定。這種方法也再次帶來了圖像數(shù)量組合增長的問題。
動態(tài)加載的優(yōu)勢 動態(tài)加載將模塊與系統(tǒng)物理存儲器的綁定延遲到運行時再進行,這就避免了上述問題。因此,代碼可運行于不同的系統(tǒng)設置上,從而帶來了更高的靈活性與可重復使用性。在大多數(shù)嵌入式系統(tǒng)中,片上存儲器非常珍貴,系統(tǒng)必須對其進行高效利用,但確定系統(tǒng)的哪部分應駐留于片上存儲器中可能在開發(fā)過程中具有很強的局限性。動態(tài)加載允許開發(fā)人員推遲到運行時再做出決定,這時他們可采用實時條件來確定在給定時間中哪種算法應駐留于存儲器。開發(fā)人員可根據(jù)需要重復地替代或交換算法,這對應用持續(xù)使用的影響也較小。在新型的無線系統(tǒng)中,多通道應用可根據(jù)需要交換編解碼器算法,而無線個人通信裝置可從遠程服務器下載 dsp 內(nèi)容。
動態(tài)加載也使系統(tǒng)的升級變得更為方便。升級時開發(fā)人員通常必須得寫整個系統(tǒng),其中包括寶貴的用戶與配置數(shù)據(jù)。但利用動態(tài)加載,他們可將升級限制在系統(tǒng)的一個或更多部分,如某種算法或某個數(shù)據(jù)表格。此外,動態(tài)模塊升級還僅取決于基礎系統(tǒng)提供的功能api(應用編程接口);而非取決于基礎系統(tǒng)的靜態(tài)地址。這意味著,一個動態(tài)模塊可支持多個產(chǎn)品版本,只要所有版本提供的api相同即可。