Linux下ColdFire片內(nèi)SRAM的應(yīng)用程序優(yōu)化設(shè)計(jì)_第1頁(yè)
免費(fèi)預(yù)覽已結(jié)束,剩余1頁(yè)可下載查看

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、linux下coldfire片內(nèi)sram的應(yīng)用程序優(yōu)化設(shè)計(jì)本文以mp3為例,介紹了一種在系統(tǒng)下配置用法處理器片內(nèi)sram的應(yīng)用計(jì)劃,有效提高了代碼的解碼效率,降低了執(zhí)行功耗。該計(jì)劃不論在性能還是成本上都得到了很大充實(shí)。1 硬件平臺(tái)和軟件架構(gòu)硬件平臺(tái)采納公司的mcf5329evb開發(fā)板。終端硬件包括coldfire5329處理器、32 kb的片內(nèi)sram、1 800×600矩陣顯示屏、9×3陣列矩陣鍵盤、i2s音頻解碼芯片、64 mb的sdram、10100m以太網(wǎng)接口,以及3個(gè)uart接口。軟件構(gòu)架1所示,主要包括mp3解碼器、音頻驅(qū)動(dòng)、鍵盤驅(qū)動(dòng)和用戶圖形界面(gui)等模

2、塊。采納clinux作為操作系統(tǒng)。clinux針對(duì)嵌入式應(yīng)用的特點(diǎn)作了較大的簡(jiǎn)化和修改,支持多種文件系統(tǒng)和多任務(wù)處理,而且具有相對(duì)完整的網(wǎng)絡(luò)體系協(xié)議,因而特殊適合嵌入式應(yīng)用。2 mp3解碼算法分析本文選用mp3解碼程序作為計(jì)劃驗(yàn)證代碼。mpeg-12 audio layer 3是特地針對(duì)音樂(lè)和語(yǔ)音數(shù)據(jù)設(shè)計(jì)的有損壓縮算法。該算法的解碼過(guò)程比較復(fù)雜,主要包括反向修正離散余弦變換(imdct)、逆量化、huffman解碼、子帶綜合等功能模塊。讀入一段mp3數(shù)據(jù)后,首先要檢測(cè)數(shù)據(jù)流中的同步字,以確定一幀數(shù)據(jù)的開頭;然后提取幀頭信息,特殊是解碼所需要的一些參數(shù),同時(shí)分別出幀邊信息和主數(shù)據(jù);之后對(duì)邊信息數(shù)

3、據(jù)解碼得到huffman解碼信息和逆量化信息,再經(jīng)過(guò)重新排序、立體聲處理、反混疊處理、imdct變換和子帶綜合組后,就可以得到pcm輸出。mp3解碼流程2所示。大致分為兩個(gè)階段,即數(shù)據(jù)流控制階段和數(shù)值計(jì)算階段。數(shù)據(jù)流控制階段包括幀同步、邊帶信息解碼和huffman解壓縮等過(guò)程。其中,huffman解壓縮是對(duì)編碼數(shù)據(jù)舉行操作,其他過(guò)程則是對(duì)幀控制部分舉行操作。3 基于片內(nèi)sram的優(yōu)化設(shè)計(jì)計(jì)劃31 計(jì)劃分析sram命令執(zhí)行速度要比dram快得多。cold-fire5329處理器內(nèi)部集成了32 kb的sram,本設(shè)計(jì)計(jì)劃將充分利用處理器片內(nèi)sram來(lái)對(duì)解碼程序舉行優(yōu)化。首先對(duì)源代碼中的主要解碼函數(shù)

4、舉行分析,如表1所列。可以看到驅(qū)動(dòng)寫函數(shù)(write)、子帶綜合(mpegsub_synthesis)、反向修正離散余弦變換(imdct_i)和迅速離散余弦變換(fast_dct)對(duì)處理器資源消耗較大,幾乎占用80的解碼時(shí)光。按照分析結(jié)果,分離把音頻驅(qū)動(dòng)程序和上述解碼函數(shù)放進(jìn)sram中執(zhí)行,以提高流媒體解碼器的執(zhí)行速度,降低其對(duì)處理器資源的消耗。32 配置音頻驅(qū)動(dòng)程序到片內(nèi)sram中執(zhí)行l(wèi)inux操作系統(tǒng)把內(nèi)核和運(yùn)行在其上的應(yīng)用程序分成兩個(gè)管理層次,也就是常說(shuō)的“內(nèi)核態(tài)”和“用戶態(tài)”。內(nèi)核態(tài)具有較高的應(yīng)用權(quán)限,可以控制處理器內(nèi)存的映射和分配方式。音頻驅(qū)動(dòng)程序是系統(tǒng)內(nèi)核的重要組成部分,工作在內(nèi)核

5、態(tài),實(shí)現(xiàn)不斷從用戶空間解碼文件中讀取音頻信息,以及驅(qū)動(dòng)音頻芯片播放聲音等相關(guān)功能。通過(guò)修改clinux-26內(nèi)核代碼,可以將音頻驅(qū)動(dòng)程序配置到片內(nèi)sram中執(zhí)行,主要通過(guò)修改系統(tǒng)鏈接文件來(lái)實(shí)現(xiàn)。系統(tǒng)鏈接文件用于將輸入文件按照一定的規(guī)章合并成一個(gè)輸出文件,并對(duì)符號(hào)與地址舉行綁定。為了在修改內(nèi)核代碼的同時(shí)不影響系統(tǒng)其他文件的正常運(yùn)行,要在內(nèi)核鏈接腳本中添加新的段區(qū)定義(sramcode),指定該段區(qū)鏈接加載地址為處理器片內(nèi)sram,并在sramcode段區(qū)內(nèi)定義代碼段(sramtext)和數(shù)據(jù)段(sramdata),分離用于存儲(chǔ)驅(qū)動(dòng)中的代碼和數(shù)據(jù)。對(duì)齊方式采納align(4),由于對(duì)32位微處理器

6、來(lái)說(shuō),該對(duì)齊方式將有效削減處理器執(zhí)行周期,提高執(zhí)行效率。然后,用法2個(gè)指針_lsramcode和_lsramcodeend分離指向,sramcode段區(qū)的段首和段尾,詳細(xì)實(shí)現(xiàn)如下:完成對(duì)操作系統(tǒng)鏈接文件的修改之后,用法宏定義在音頻驅(qū)動(dòng)程序中把相關(guān)函數(shù)和數(shù)據(jù)分離指定鏈接到,sramcode代碼段和數(shù)據(jù)段,并由copy函數(shù)把相關(guān)函數(shù)復(fù)制到sram中執(zhí)行。編譯、鏈接完成后,可以在系統(tǒng)內(nèi)核存儲(chǔ)映射文件sys-temmap中查看驅(qū)動(dòng)函數(shù)和數(shù)據(jù)在內(nèi)存中的地址。圖3顯示了音頻驅(qū)動(dòng)函數(shù)在處理器片內(nèi)sram中的映射地址。33 配置實(shí)時(shí)數(shù)據(jù)和函數(shù)到片內(nèi)sram中執(zhí)行把用戶空間的實(shí)時(shí)數(shù)據(jù)和函數(shù)放置到片內(nèi)sram中執(zhí)

7、行,因?yàn)樘幚砥骺梢酝χ睆钠瑑?nèi)sram中存取數(shù)據(jù)和命令,削減了處理器存取數(shù)據(jù)和命令的周期,提高了程序的執(zhí)行效率。首先,放置實(shí)時(shí)數(shù)據(jù)處處理器片內(nèi)sram中。通過(guò)s_malloc和s_free函數(shù)來(lái)實(shí)現(xiàn):s_malloc用來(lái)申請(qǐng)?zhí)幚砥鲀?nèi)存空間,s_free用來(lái)對(duì)這一申請(qǐng)的空間舉行釋放。為了靈便用法定義的s_malloc和s_free函數(shù),需要定義一個(gè)結(jié)構(gòu)體和地址指針:然后,通過(guò)動(dòng)態(tài)內(nèi)存分配方式可以把mp3解碼程序中的實(shí)時(shí)數(shù)據(jù)放入處理器內(nèi)存中執(zhí)行。加載函數(shù)到sram中與加載實(shí)時(shí)數(shù)據(jù)不同,需要通過(guò)指針和枚舉變量來(lái)實(shí)現(xiàn)。首先通過(guò)一個(gè)宏定義設(shè)置每個(gè)函數(shù)大小為4 kb,并用法枚舉變量為函數(shù)分配處理器片內(nèi)sra

8、m執(zhí)行的起始地址。sramfunc2=sram_big_func1+big_func_size,;在定義完函數(shù)運(yùn)行時(shí)加載的存儲(chǔ)地址之后,把mp3解碼程序中的mpegsub_synthesis和imdct_1等函數(shù)通過(guò)字符串拷貝的方式復(fù)制處處理器片內(nèi)sram中執(zhí)行,經(jīng)過(guò)編譯、鏈接這些函數(shù)在執(zhí)行時(shí)將會(huì)加載到相應(yīng)的sram單元塊中。這樣就削減了處理器執(zhí)行解碼函數(shù)所需的時(shí)光,提高了程序的執(zhí)行效率。4 性能測(cè)試與分析為了驗(yàn)證基于處理器片內(nèi)sram的優(yōu)化設(shè)計(jì)計(jì)劃,我們?cè)趍cf5329evb開發(fā)板上對(duì)經(jīng)該計(jì)劃優(yōu)化過(guò)的mp3解碼器舉行了驗(yàn)證和測(cè)試。首先,舉行功能測(cè)試,應(yīng)用mpeg組織推舉的測(cè)試碼流(128 k

9、bs,441 khz)。選用一段音頻testmp3,分離用標(biāo)準(zhǔn)浮點(diǎn)解碼器和本文設(shè)計(jì)的音頻解碼器舉行本地解碼測(cè)試,并對(duì)其解碼波形舉行比較分析。從圖4的波形比較可以看到,經(jīng)過(guò)本計(jì)劃優(yōu)化設(shè)計(jì)的解碼器解碼波形與標(biāo)準(zhǔn)浮點(diǎn)解碼器基本無(wú)差別。經(jīng)人耳測(cè)試,無(wú)法分辨出兩者解碼輸出的差別。所以,從功能上講本文設(shè)計(jì)的基于片內(nèi)sram的應(yīng)用程序優(yōu)化計(jì)劃是可行的。第二,舉行性能測(cè)試。在測(cè)試平臺(tái)上分離對(duì)優(yōu)化前后解碼器的消耗數(shù)和空間消耗量舉行比較分析,如表2所列。優(yōu)化前,解碼器mips消耗數(shù)為68 mips240mhz;優(yōu)化后,解碼器mips消耗數(shù)為392 mips240 mhz。在硬件條件允許的狀況下,消耗的內(nèi)存雖然有一定的增強(qiáng),但是經(jīng)過(guò)本文計(jì)劃優(yōu)化后,解碼效率得到了很大的提高。結(jié) 語(yǔ)本文提出了在嵌入式linux操作系統(tǒng)下基于處理器片內(nèi)sram的應(yīng)用程序優(yōu)化設(shè)計(jì)計(jì)劃。以mp3解碼器為例,通過(guò)從配置音頻驅(qū)動(dòng)程序、實(shí)時(shí)數(shù)據(jù)和函數(shù)處處理器片內(nèi)sram中執(zhí)行來(lái)對(duì)解碼器舉行優(yōu)化設(shè)計(jì),并在

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論