DSP系統的動(dòng)態(tài)加載技術(shù)研究
測試集實(shí)現線(xiàn)性復雜性而不是平方復雜性,其優(yōu)勢是巨大的。如產(chǎn)品帶有內置符號信息,則其可消除最后一項。降低配置復雜性是動(dòng)態(tài)加載在使用實(shí)際測試時(shí)的最大優(yōu)勢。
動(dòng)態(tài)加載器的功能與要求
動(dòng)態(tài)加載器是一個(gè)可配置的庫或 API,用戶(hù)可用 C 語(yǔ)言調用,實(shí)現方便的接口。除了將程序圖像寫(xiě)入 DSP 存儲器之外,動(dòng)態(tài)加載器還可以進(jìn)行必需的鏈接,使得模塊、主應用及其他加載的模塊可實(shí)現相操作。為了達到此目的,動(dòng)態(tài)加載器不但引用模塊外的符號,而且也可記錄模塊中的任何全局定義,便于外部使用。當加載器卸載模塊時(shí),動(dòng)態(tài)加載器進(jìn)行存儲器恢復,這樣系統就象從未有過(guò)動(dòng)態(tài)模塊一樣。
動(dòng)態(tài)加載器要求一組四個(gè)支持類(lèi)(Class)。應用傳輸實(shí)施上述類(lèi)并配置動(dòng)態(tài)加載器為加載請求中首先四個(gè)參數的對象。第一個(gè)類(lèi)為圖像源,允許系統集成器定義以流的形式接受輸入的機制。源可為外部存儲器、外部設備或外設,甚至也可是應用中的嵌入結構。第二個(gè)類(lèi)為符號處理程序,包括映射符號到地址、進(jìn)行存儲器管理以及有關(guān)符號的錯誤報告等功能。動(dòng)態(tài)加載器使用第三個(gè)類(lèi)(DSP 存儲器分配程序)來(lái)為動(dòng)態(tài)模塊請求存儲器。一旦動(dòng)態(tài)加載器確定了存儲器的內容,動(dòng)態(tài)存儲器就會(huì )使用第四個(gè)類(lèi)(DSP 存儲器初始化程序)來(lái)請求系統更新 DSP 存儲器分配器返回的存儲器地址。
由于動(dòng)態(tài)加載器鏈接至用戶(hù)的應用,因此實(shí)施它的代碼必須迅速、小巧并具備較強的健碩性。程序員以專(zhuān)為速度進(jìn)行過(guò)優(yōu)化的算法編寫(xiě) C 庫的代碼。主機圖像再格式化器是動(dòng)態(tài)重載的另一組件,它可進(jìn)行離線(xiàn)狀態(tài)下完成的任何計算。為了高效使用 DSP 的存儲器,動(dòng)態(tài)加載器需要最小的存儲空間。最后,銷(xiāo)售商對動(dòng)態(tài)加載器進(jìn)行了徹底的測試,因為該代碼在運行時(shí)出現錯誤是不可接受的。

圖3 動(dòng)態(tài)加載的應用開(kāi)發(fā)流程
開(kāi)發(fā)動(dòng)態(tài)模塊
動(dòng)態(tài)模塊的代碼開(kāi)發(fā)幾乎與標準開(kāi)發(fā)一樣。圖 3 顯示了創(chuàng )建動(dòng)態(tài)模塊并進(jìn)行故障調試的有代表性的開(kāi)發(fā)流程。三個(gè)動(dòng)態(tài)加載組件(動(dòng)態(tài)加載器、圖像再格式化器以及故障調試器插件)以陰影顯示。最初,主應用程序鏈接至動(dòng)態(tài)加載器庫并為動(dòng)態(tài)模塊分配存儲器。隨后,它以正常方式構建模塊的可執行程序,不過(guò)圖像尋址是可通過(guò)使用動(dòng)態(tài)加載器執行過(guò)程中管理的符號進(jìn)行再分配的,而不是靜態(tài)的。
系統將可再分配的圖像作為輸入提供給圖像再格式化器,圖像再格式化器對其進(jìn)行優(yōu)化,以備下載。再格式化器去除加載過(guò)程中非必需的對象代碼部分以減小圖像大小。此外,再格式化器針對 I/O 流式加載重新安排圖像順序,格式化圖像,使其包括在應用中,為確定輸入有效性添加校驗和,并為控制模塊導出的符號提供接口。
當系統需要模塊時(shí),系統將其流式提供給動(dòng)態(tài)加載器,動(dòng)態(tài)加載器則對其進(jìn)行處理,并將其寫(xiě)入保留的動(dòng)態(tài)模塊存儲器中。由于調試器也必須能夠鏈接至模塊,因此調試器插件會(huì )檢測動(dòng)態(tài)模塊是否存在,并確定對應于動(dòng)態(tài)模塊的原始對象文件的位置。插件隨后會(huì )用所有必需的信息更新開(kāi)發(fā)環(huán)境,從而啟動(dòng)全面故障調試。
限制符號導出的重要性
圖像再格式化工具為控制模塊導出的符號提供了一個(gè)接口。該特性為開(kāi)發(fā)人員隱藏某些符號而讓另一些符號可視以便于其他模塊引用提供了一種途徑。系統使用該功能來(lái)控制訪(fǎng)問(wèn),并使加載時(shí)間及存儲器面積達到最小。每個(gè)可視的符號都要求正在運行動(dòng)態(tài)加載器的處理器給出幾字節的存儲空間。如果所有鏈接時(shí)符號都可視,那么存儲器使用將成為小型嵌入式系統的一個(gè)問(wèn)題。如果再格式化器限制符號導出,那么符號存儲器使用通常就不構成問(wèn)題。
限制符號導出的另一好處就是實(shí)現更快的加載。根據 OMAP1610 平臺測試進(jìn)行的性能分析給出了以下加載時(shí)間的統計模型:4250+373×符號 +273×再定位 +6.5×圖像_字節。
上述分析顯示,模塊中導出符號的數量是開(kāi)發(fā)人員在改善下載速度時(shí)能夠控制的最主要因素。比較而言,總模塊大小的重要性則較小,減小符號數量所起的作用不到 2%。盡管根據 DSP 及系統配置的不同,上述因素與其他非開(kāi)發(fā)人員可控制因素的確切作用比重會(huì )有所差異,但最小化外部符號這條首要規則保持不變。
開(kāi)放的可能性
動(dòng)態(tài)加載能為 DSP 系統帶來(lái)新的應用功能——這正是即將到來(lái)的下一代無(wú)線(xiàn)技術(shù)所需要的發(fā)展趨勢。動(dòng)態(tài)加載作為 DSP 系統的無(wú)縫模塊再配置的一種技術(shù),其應用要比多靜態(tài)程序圖像或疊加更為靈活和高效。盡管動(dòng)態(tài)加載還是 DSP 領(lǐng)域中的新生兒,但其將很快成為驅動(dòng)多種新型多功能 DSP 應用發(fā)展的因素 。
評論