日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 嵌入式 > 嵌入式教程
[導讀] 一種基于TI TMS320 DSP的軟件動態(tài)鏈接技術(shù)

摘要:介紹了軟件動態(tài)鏈接技術(shù)的概念和特點,提出了基于TI TMS320系列DSP的軟件動態(tài)鏈接技術(shù)。該技術(shù)解決了可重配置的DSP系統(tǒng)中關(guān)于軟件二進制目標代碼的動態(tài)加載和卸載的問題。采用該技術(shù)的軟件重配置方案已成功運用于某多功能通信系統(tǒng),為基于其他系列DSP的可重構(gòu)數(shù)字處理系統(tǒng)提供了一定的參考,在無人值守設(shè)備、多功能信號處理設(shè)備方面具有一定的應用價值。
關(guān)鍵詞:動態(tài)鏈接;TI TMS320 DSP;COFF文件;重定位

    基于數(shù)字信號處理器(DSP)的多功能自適應通信系統(tǒng)在軟件無線電領(lǐng)域正變得日益普遍,如何使DSP系統(tǒng)在運行期間自適應的改變通信協(xié)議是實現(xiàn)這種系統(tǒng)的關(guān)鍵。當前,DSP開發(fā)人員采用了重配置、層疊(overlay)等技術(shù)來實現(xiàn)通信協(xié)議自適應功能,但作為運行時改變或擴展功能的最有效方式,基于DSP的動態(tài)鏈接技術(shù)尚未有文獻提及。
    動態(tài)鏈接技術(shù)是相對于靜態(tài)鏈接而言,它是指編譯器在編譯程序時并不將程序所需的庫文件代碼復制到程序的可執(zhí)行文件,而只是在程序中保留庫文件的調(diào)用標記。在程序運行時,由鏈接器將庫文件代碼加載到系統(tǒng)內(nèi)存,并與程序鏈接為一個整體。在大多數(shù)DSP系統(tǒng)中,采用動態(tài)鏈接技術(shù)可以節(jié)省系統(tǒng)對片上存儲器大小的要求,此外,由于動態(tài)鏈接庫函數(shù)對外提供的是函數(shù)的接口,而不是函數(shù)的入口地址,因此動態(tài)鏈接函數(shù)可同時提供多個版本,使系統(tǒng)的升級變得更為方便。
    通過研究和分析TI DSP目標代碼的生成過程和目標代碼的結(jié)構(gòu),提出了針對該系列DSP代碼動態(tài)鏈接的方法。將本文提出的方法應用到某通信系統(tǒng)中表明,該方法具有占用片上內(nèi)存小、系統(tǒng)配置時間短、系統(tǒng)有較強的可擴展性等優(yōu)點,在此后的DSP開發(fā)過程中會得到廣泛的應用。

1 DSP目標代碼生成流程
   TI DSP系列開發(fā)工具包為開發(fā)人員提供了一套完整的軟件開發(fā)工具鏈,包括C/C++編譯器,匯編器,鏈接器等。利用這套開發(fā)工具包,DSP開發(fā)人員可以完成程序的編寫、編譯、鏈接,直到目標代碼的生成。其中,C/C++編譯器將C語言轉(zhuǎn)換為匯編語言,匯編器匯編語言翻譯為機器語言,以COFF目標文件的形式輸出給鏈接器。鏈接器將匯編器生成的COFF文件與庫文件鏈接成一個完整的程序,以可執(zhí)行的COFF文件輸出到磁盤,生成DSP可執(zhí)行程序。

2 DSP動態(tài)鏈接器的設(shè)計
    文中設(shè)計的DSP系統(tǒng)軟件架構(gòu)如圖1所示。DSP應用程序被劃分為一個或多個可加載模塊,動態(tài)鏈接器作為DSP軟件系統(tǒng)架構(gòu)中的一個重要的軟件模塊,其作用主要是在DSP系統(tǒng)改變功能時,按需將匯編器生成的目標文件按需加載到系統(tǒng)中,與系統(tǒng)已有程序結(jié)合成為一個整體,并將卸載系統(tǒng)中不需要的模塊。


2.1 模塊的定義
    圖1中所示的可加載模塊文件主要包括DSP應用程序的機器代碼,此外包括模塊的名稱、大小、版本,模塊所包含的函數(shù)聲明,模塊所依賴的函數(shù)接口,模塊的入口函數(shù)信息,模塊被引用信息等。這些信息是在匯編器生成DSP應用程序的機器代碼后,由模塊生成程序?qū)⒏郊拥男畔⑻砑拥紺OFF文件中,生成最終的可加載模塊文件。本文設(shè)計的可加載模塊的文件格式如圖2所示。


2.2 模塊的加載和卸載
2.2.1 COFF文件格式
    DSP動態(tài)鏈接器設(shè)計的關(guān)鍵是解析匯編器生成的目標文件,將目標文件中包含的代碼根據(jù)模塊的加載地址進行重定位后,完成與系統(tǒng)已有程序的鏈接。匯編器生成的目標文件是以COFF文件格式保存在磁盤上,其通常包括代碼段、數(shù)據(jù)段、用戶自定義段、符號表和重定位信息等數(shù)據(jù),格式如圖3所示。


    如圖3所示,COFF文件主要包括一個文件頭部和多個段信息,以及段重定位信息和符號表等。COFF文件缺省的包含3個段:. text段、.data段和.bss段。匯編器將匯編程序的代碼部分放到.text段中,將全局變量放在.data或.bss段中,同時在符號表中寫入該文件包含的符號(函數(shù)或變量)名稱和對外引用的符號名稱等信息。此外,每段的重定位信息表中都包含重定位信息項,根據(jù)重定位信息項,可以確定可重定位指令在段中的偏移量,表1給出了重定位信息項的結(jié)構(gòu)。
    重定位信息項的0—3字節(jié)表示可重定位指令以0作為起始地址,在當前段中的偏移量。4—5字節(jié)是符號索引表,它代表了該重定位指令索引的符號在COFF文件中符號表中的索引號。8—9字節(jié)表示重定位類型,它指出了如何將定位后的地址信息添加到該可重定位指令上。表2是重定位信息項的一個例子,這里假設(shè)該重定位信息項屬于.text段。


    該重定位信息項說明在.text代碼段偏移20個字節(jié)處存在一條重定位語句,該語句所指向的符號在符號表中的位置是第20項(從0開始計),該語句的重定位類型是PC跳轉(zhuǎn)指令重定位。
2.2.2 DSP機器代碼的識別
    匯編器生成的是DSP機器代碼,因此動態(tài)鏈接器需要分析重定位指令格式,以便將指令引用地址添加到該指令中。根據(jù)TMS320 DSP指令手冊,TMS320 DSP指令格式包括如圖4所示。


    文中通過分析指令格式的低位比特位,可以判斷出指令屬于上述指令中的哪一類。以指令0x0200007E為例,將指令表示為二進制:(0000 0010 0000 0000 0000 0000 0111 1110)b,指令的2~3位為11,在圖4中查找2~3位為11的指令,可以發(fā)現(xiàn)該指令是一條STW存儲指令,指令的ucst15比特域表示了其需要重定位的地址。
2.2.3 模塊動態(tài)鏈接的實現(xiàn)
    動態(tài)鏈接器的功能主要包括模塊的動態(tài)鏈接和動態(tài)卸載,模塊動態(tài)鏈接的主要流程如圖5所示。動態(tài)鏈接器在收到加載模塊請求時,首先檢查模塊文件的完整性,并根據(jù)加載模塊的依賴信息在系統(tǒng)符號表中查找對應的函數(shù)和變量。當模塊通過完整性和依賴性檢查后,動態(tài)鏈接器首先根據(jù)模塊大小聲明,在系統(tǒng)的存儲空間中分配空間,將模塊文件加載到系統(tǒng)存儲空間。接著動態(tài)鏈接器根據(jù)COFF文件信息,搜索COFF文件代碼段中的重定位語句,并根據(jù)指令格式確定指令中地址域信息,最后將綜合模塊被加載的地址和指令索引的符號的地址,計算地址信息,并將此信息填入可重定位指令的地址域,完成指令的重定位。在代碼段重定位完成后,動態(tài)鏈接器將模塊名稱、模塊對外提供的函數(shù)名稱、模塊入口地址等信息注冊到系統(tǒng)符號表中,并調(diào)用模塊加載函數(shù),完成模塊對系統(tǒng)資源的申請。最后,如果該模塊所提供的函數(shù)或者變量替換了系統(tǒng)已有的函數(shù)或者變量,動態(tài)鏈接器還需要將所有引用該函數(shù)或變量的其他模塊進行重定位,以反映系統(tǒng)狀態(tài)的更新。


2.2.4 模塊動態(tài)卸載的實現(xiàn)
    模塊動態(tài)卸載是加載過程的逆過程,動態(tài)鏈接器在收到卸載模塊請求時,首先在系統(tǒng)中搜索是否有模塊引用了將要被卸載的模塊,若存在則警告用戶,并等待用戶確實是否強制卸載。若是,動態(tài)鏈接器將卸載模塊對外提供的函數(shù)和變量從系統(tǒng)符號表中刪除,并收回卸載模塊占用的系統(tǒng)空間。完整的模塊動態(tài)卸載流程如圖6所示。



3 結(jié)論
    文中設(shè)計的DSP動態(tài)鏈接器為傳統(tǒng)的DSP系統(tǒng)帶來新的應用功能,已在某多功能通信系統(tǒng)中獲得了成功的應用。動態(tài)鏈接技術(shù)作為DSP系統(tǒng)的重配置技術(shù)之一,其應用要比傳統(tǒng)的DSP全系統(tǒng)重構(gòu)技術(shù)或疊加技術(shù)更為靈活和高效。同時,本文提出的動態(tài)鏈接技術(shù)相對于文獻,文獻提出的函數(shù)查找表的實現(xiàn)方式更加富有效率。盡管目前動態(tài)鏈接技術(shù)在DSP領(lǐng)域的應用很少,但隨著DSP應用向多功能發(fā)展,相信動態(tài)鏈接技術(shù)在DSP領(lǐng)域的應用會越來越廣泛。

本站聲明: 本文章由作者或相關(guān)機構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: 驅(qū)動電源

在工業(yè)自動化蓬勃發(fā)展的當下,工業(yè)電機作為核心動力設(shè)備,其驅(qū)動電源的性能直接關(guān)系到整個系統(tǒng)的穩(wěn)定性和可靠性。其中,反電動勢抑制與過流保護是驅(qū)動電源設(shè)計中至關(guān)重要的兩個環(huán)節(jié),集成化方案的設(shè)計成為提升電機驅(qū)動性能的關(guān)鍵。

關(guān)鍵字: 工業(yè)電機 驅(qū)動電源

LED 驅(qū)動電源作為 LED 照明系統(tǒng)的 “心臟”,其穩(wěn)定性直接決定了整個照明設(shè)備的使用壽命。然而,在實際應用中,LED 驅(qū)動電源易損壞的問題卻十分常見,不僅增加了維護成本,還影響了用戶體驗。要解決這一問題,需從設(shè)計、生...

關(guān)鍵字: 驅(qū)動電源 照明系統(tǒng) 散熱

根據(jù)LED驅(qū)動電源的公式,電感內(nèi)電流波動大小和電感值成反比,輸出紋波和輸出電容值成反比。所以加大電感值和輸出電容值可以減小紋波。

關(guān)鍵字: LED 設(shè)計 驅(qū)動電源

電動汽車(EV)作為新能源汽車的重要代表,正逐漸成為全球汽車產(chǎn)業(yè)的重要發(fā)展方向。電動汽車的核心技術(shù)之一是電機驅(qū)動控制系統(tǒng),而絕緣柵雙極型晶體管(IGBT)作為電機驅(qū)動系統(tǒng)中的關(guān)鍵元件,其性能直接影響到電動汽車的動力性能和...

關(guān)鍵字: 電動汽車 新能源 驅(qū)動電源

在現(xiàn)代城市建設(shè)中,街道及停車場照明作為基礎(chǔ)設(shè)施的重要組成部分,其質(zhì)量和效率直接關(guān)系到城市的公共安全、居民生活質(zhì)量和能源利用效率。隨著科技的進步,高亮度白光發(fā)光二極管(LED)因其獨特的優(yōu)勢逐漸取代傳統(tǒng)光源,成為大功率區(qū)域...

關(guān)鍵字: 發(fā)光二極管 驅(qū)動電源 LED

LED通用照明設(shè)計工程師會遇到許多挑戰(zhàn),如功率密度、功率因數(shù)校正(PFC)、空間受限和可靠性等。

關(guān)鍵字: LED 驅(qū)動電源 功率因數(shù)校正

在LED照明技術(shù)日益普及的今天,LED驅(qū)動電源的電磁干擾(EMI)問題成為了一個不可忽視的挑戰(zhàn)。電磁干擾不僅會影響LED燈具的正常工作,還可能對周圍電子設(shè)備造成不利影響,甚至引發(fā)系統(tǒng)故障。因此,采取有效的硬件措施來解決L...

關(guān)鍵字: LED照明技術(shù) 電磁干擾 驅(qū)動電源

開關(guān)電源具有效率高的特性,而且開關(guān)電源的變壓器體積比串聯(lián)穩(wěn)壓型電源的要小得多,電源電路比較整潔,整機重量也有所下降,所以,現(xiàn)在的LED驅(qū)動電源

關(guān)鍵字: LED 驅(qū)動電源 開關(guān)電源

LED驅(qū)動電源是把電源供應轉(zhuǎn)換為特定的電壓電流以驅(qū)動LED發(fā)光的電壓轉(zhuǎn)換器,通常情況下:LED驅(qū)動電源的輸入包括高壓工頻交流(即市電)、低壓直流、高壓直流、低壓高頻交流(如電子變壓器的輸出)等。

關(guān)鍵字: LED 隧道燈 驅(qū)動電源
關(guān)閉