版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、實(shí)驗(yàn)一 DSP 編程與Visual DSP+入門一 實(shí)驗(yàn)?zāi)康模菏煜isualDSP+集成開(kāi)發(fā)環(huán)境,掌握工程文件的創(chuàng)建、構(gòu)造和調(diào)試的方法和技巧。二 實(shí)驗(yàn)內(nèi)容:針對(duì)ADSP-21161 SHARC DSP,利用幾個(gè)用C、C+和匯編語(yǔ)言寫成的簡(jiǎn)單例子來(lái)描述VisualDSP+編程環(huán)境和調(diào)試器(debugger)的主要特征和功能。對(duì)于運(yùn)行在其它類型SHARC處理器的程序只需對(duì)其鏈接描述文件(.LDF)做一些修改,就可用于其它芯片或者ADSP-21161 的硬件仿真。在目錄21kldf 下有每種處理器類型的鏈接描述文件,可供參考。實(shí)驗(yàn)一包括四個(gè)基本練習(xí):練習(xí)一:?jiǎn)?dòng)VisualDSP+,建立一個(gè)用C源
2、代碼的工程(Project),同時(shí)用調(diào)試器來(lái)評(píng)估用C語(yǔ)言所編寫代碼的性能;練習(xí)二:創(chuàng)立一個(gè)新的工程,修改源碼來(lái)調(diào)用一個(gè)匯編(asm)程序,重新編譯工程,用調(diào)試器來(lái)評(píng)估用匯編語(yǔ)言所寫程序的性能;練習(xí)三:利用調(diào)試器的繪圖(plot)功能來(lái)圖形顯示一個(gè)卷積算法中的有關(guān)數(shù)據(jù)的波形;練習(xí)四:利用調(diào)試器的性能統(tǒng)計(jì)功能(Statistical profile 統(tǒng)計(jì)剖析)來(lái)檢查練習(xí)三中卷積算法的效率。利用所收集到的性能統(tǒng)計(jì)數(shù)據(jù)就能看出算法中最耗時(shí)的地方。三 實(shí)驗(yàn)步驟練習(xí)一:1) 進(jìn)入VisualDSP+集成開(kāi)發(fā)環(huán)境,并打開(kāi)一個(gè)工程(Project)進(jìn)入VisualDSP+ , 顯示VisualDSP+ 的集成
3、開(kāi)發(fā)和調(diào)試環(huán)境窗口( IntegratedDevelopment and Debugger Environment,簡(jiǎn)稱IDDE)。選擇菜單File 中Open 打開(kāi)文件DSP_expunit_1DotProductC DotProductC.dpj。VisualDSP+環(huán)境將裝載dotprodc工程,并列出相應(yīng)的源文件。在輸出窗口(Output Window)中顯示簡(jiǎn)要信息。Dotprodc 工程中有3 個(gè)文件, 定義數(shù)組和計(jì)算數(shù)組點(diǎn)積和的兩個(gè)C語(yǔ)言源文件dotprod_main.(主程序)、dotprod.c(子程序)以及一個(gè)描述程序和數(shù)據(jù)存儲(chǔ)位置的鏈接描述文件dotprodc.ldf。2
4、) 編譯 dotprodc工程在菜單 Project中選擇 Build Project來(lái)對(duì)工程進(jìn)行編譯。此時(shí),輸出窗口顯示程序編譯時(shí)的各種狀態(tài)信息(包括出錯(cuò)和編譯進(jìn)程信息)。當(dāng)編譯檢測(cè)到錯(cuò)誤時(shí),將在輸出窗口出現(xiàn)相應(yīng)的出錯(cuò)信息,用鼠標(biāo)雙擊它,編譯器將自行打開(kāi)源文件。這時(shí)可對(duì)源文件編輯、修改錯(cuò)誤,再次進(jìn)行編譯。當(dāng)編譯不再有錯(cuò)時(shí),輸出窗口將顯示“Build completed successfully”。在本例子中,編譯器會(huì)檢測(cè)到一個(gè)未定義的錯(cuò)誤,顯示為:“.dotprod_main.c”,line 115:error 20:identifier“itn”is undefined itn i;在輸出
5、窗口中對(duì)該行文字用鼠標(biāo)雙擊,環(huán)境會(huì)自動(dòng)打開(kāi) dotprod_main.c文件,并將光標(biāo)定位在出錯(cuò)行。你可以看見(jiàn)單詞“int”被錯(cuò)寫成“itn”。將該錯(cuò)誤改正后,保存并重新編譯。如果再?zèng)]有錯(cuò)誤出現(xiàn),這時(shí)工程已被成功編譯,就可以用VisualDSP+的debugger來(lái)調(diào)試程序。3) 運(yùn)行VsualDSP+調(diào)試器在編譯完成后,環(huán)境將自動(dòng)進(jìn)入調(diào)試狀態(tài),對(duì)于初次進(jìn)入debugger,將顯示對(duì)象選擇對(duì)話框,在其中指定對(duì)象和處理器信息。如下圖1所示:圖1 對(duì)象和處理器信息若在調(diào)試過(guò)程中需定義不同的對(duì)象和處理器類型,選取菜單Sessions中New Session項(xiàng)來(lái)重新定義。New Session對(duì)話框如
6、下圖2所示:圖2 New Session對(duì)話框用Visual DSP+調(diào)試時(shí),調(diào)試器會(huì)自動(dòng)調(diào)入工程的可執(zhí)行文件dotpordc.dxe。在默認(rèn)情況下,調(diào)試器會(huì)打開(kāi)三個(gè)窗口:輸出窗口(下)、反匯編窗口(右)、包括工程主文件dotprodc_main.c的源代碼窗口(左)。如圖3所示,左窗的每一條C語(yǔ)句都對(duì)應(yīng)右窗中的多條匯編指令:圖3 調(diào)試器的輸出窗口、反匯編窗口和源代碼窗口在圖3中,箭頭所指為當(dāng)前執(zhí)行指令,紅圓圈代表設(shè)定的斷點(diǎn)位置。當(dāng)調(diào)試器加載C程序時(shí),會(huì)自動(dòng)設(shè)置兩個(gè)斷點(diǎn),分別在代碼執(zhí)行的開(kāi)頭和結(jié)尾。瀏覽程序中的斷點(diǎn)可選擇Settings下的BreakPoints··
7、3;,可在此對(duì)話框中增加或刪除斷點(diǎn)。另外也可通過(guò)在每條代碼行的開(kāi)頭處雙擊鼠標(biāo)或快捷鍵來(lái)設(shè)置或取消斷點(diǎn)。4) 運(yùn)行dotprod.c從Debug菜單中選擇Run項(xiàng),程序?qū)⒈粓?zhí)行,其輸出結(jié)果在Output window中顯示。運(yùn)行程序得到的結(jié)果如下圖:圖4 dotprod.c程序輸出結(jié)果5) 評(píng)估函數(shù)a_doc_c的性能(profile)Visual DSP+的剖析工具用于分析程序的運(yùn)行時(shí)間特性,通過(guò)線性/統(tǒng)計(jì)剖析,可以分析出每段程序的耗時(shí)量和在整個(gè)程序中運(yùn)行所占的比例,為用戶分析程序的性能、優(yōu)化程序提供幫助。Visual DSP+的剖析工具有兩種:線性剖析(Linear Profiling)和統(tǒng)
8、計(jì)剖析(Statiscal Profiling)。線性剖析工具在Visual DSP+的模擬器環(huán)境下使用,每執(zhí)行一條指令,剖析工具記錄一次程序執(zhí)行的情況;而統(tǒng)計(jì)剖析工具則在Visual DSP+中通過(guò)JTAG與用戶的目標(biāo)系統(tǒng)連接的硬件環(huán)境中使用,指令運(yùn)行情況的統(tǒng)計(jì)可通過(guò)對(duì)程序計(jì)數(shù)器進(jìn)行取樣來(lái)獲得。通過(guò)下述步驟來(lái)設(shè)置Profile功能并顯示其結(jié)果:(1)打開(kāi)剖析窗口選ToolsLinear ProfileNew Profiling命令。剖析窗口中不會(huì)包含有任何數(shù)據(jù)和分析結(jié)構(gòu)。在新建剖析窗口中的空白處單擊鼠標(biāo)右鍵,選擇【Properties···】項(xiàng),Visual D
9、SP+將彈出剖析分析窗口。在該窗口中,可以對(duì)全部程序進(jìn)行分析,也可以對(duì)部分C/C+子函數(shù)進(jìn)行分析,還可以指定程序地址段進(jìn)行分析。在剖析設(shè)置窗口中選擇“C/C+ Function”。單擊【Add】,將需要進(jìn)行分析的函數(shù)添加到分析窗口中,如圖5所示。(2)運(yùn)行程序,直至程序執(zhí)行完畢。在剖析窗口中將顯示出對(duì)函數(shù)剖析的結(jié)果。剖析結(jié)果窗口由兩部分構(gòu)成:左邊窗口為剖析的函數(shù),右邊窗口為具體指令耗時(shí)數(shù)或占剖析時(shí)間的百分比,如圖6所示。圖5 線性剖析參數(shù)設(shè)置頁(yè)面練習(xí)二:1) 創(chuàng)建一個(gè)新的工程從Project菜單中選取New項(xiàng),在彈出的工程保存對(duì)話框中,將工程名定義為DotProductASM.dpj,并保存。
10、接著在彈出的工程選項(xiàng)對(duì)話框中定義各項(xiàng)參數(shù)值,這些參數(shù)都是針對(duì)ADSP-21161處理器而設(shè)置的,Visual DSP+的Project選項(xiàng)卡如圖6所示:圖6 Visual DSP+的Project選項(xiàng)卡在對(duì)話框中打開(kāi)Compile選項(xiàng)卡,選中“Enable optimization”和“Generate debug information”兩項(xiàng),系統(tǒng)將自動(dòng)生成對(duì)ADSP-21161的優(yōu)化代碼,如圖7所示:2) 向DotProductASM工程中添加文件選取菜單ProjectAdd to Projectfile(s)···項(xiàng),按住Ctrl鍵來(lái)同時(shí)選中dotprod_
11、main.c,dotprod.c,dotprod_func.asm和dotprodasm.ldf,點(diǎn)擊“Add”將這幾個(gè)文件添加到工程中。圖7 Visual DSP+的Compile選項(xiàng)卡3) 修改工程源文件在此步驟中,我們將修改dotprod_main.c文件,讓其調(diào)用一個(gè)匯編子程序a_dot_c_asm來(lái)取代a_doc。打開(kāi)dotprod_main.c文件,在源代碼中找到下列響應(yīng)的四條語(yǔ)句:extern double a_dot_c( double pm *, double * );/*extern double a_dot_c_asm( double pm *, double * );
12、*/···result1 = a_dot_c( a, c ); /*result1 = a_dot_c_asm( a, c ); */將這四條語(yǔ)句修改為/*extern double a_dot_c( double pm *, double * );*/extern double a_dot_c_asm( double pm *, double * );···/*result1 = a_dot_c( a, c );*/ result1 = a_dot_c_asm( a, c );這樣主程序?qū)⒄{(diào)用a_dot_c_asm匯編程序來(lái)取代練習(xí)
13、一中的a_dot_c子程序。4) 編譯和運(yùn)行dot_product先選取菜單ProjectBuild Project項(xiàng)來(lái)編譯工程;再選取DebugRun項(xiàng)來(lái)運(yùn)行程序。在輸出窗口中就會(huì)得到運(yùn)行結(jié)果。如圖8所示:圖8 dot_productASM輸出結(jié)果5) 評(píng)估a_dot_c_asm的效率如圖練習(xí)一那樣設(shè)置Profile參數(shù)并顯示其結(jié)果:(1)選ToolsLinear ProfileNew Profiling命令;(2)在新建窗口中的空白處單擊鼠標(biāo)右鍵,選擇Properties···項(xiàng),Visual DSP+將彈出剖析分析窗口。在剖析窗設(shè)置窗口中選擇“C/C+ Fu
14、nction”。單擊Add按鈕,將需要進(jìn)行分析的函數(shù)添加到分析窗口中。運(yùn)行dot_product程序,顯示Profile結(jié)果窗口如圖9所示:圖9 a_dot_c_asm Profile結(jié)果窗口練習(xí)三:1) 將算法程序調(diào)入Debugger環(huán)境關(guān)閉所有已經(jīng)打開(kāi)的工程和文件,選擇菜單FileLoad Program···項(xiàng)或點(diǎn)擊圖標(biāo)。在出現(xiàn)的對(duì)話框中選擇文件DSP_expnint_1convolutiondebug convolution.dxe。并在隨后的源文件對(duì)話框中選擇文件DSP_expnint_1 convolutionconvolutio.cpp??梢栽贑代碼
15、源文件中看到四個(gè)全局?jǐn)?shù)組:Table、Input、Output和Impulse。以及四個(gè)調(diào)用數(shù)組的函數(shù):InitializeSineTable(),GenerateInputPulse(),GenerateImpulseCoeffS()和CaculateOutputPulse()。2) 打開(kāi)繪圖窗口并設(shè)定參數(shù)選擇菜單ViewDebug WindowsPlotNew···項(xiàng),將出現(xiàn)Plot參數(shù)設(shè)置窗口。在Plot Type項(xiàng)中選擇Line Plot,在Plot Title中輸入Convolution。Plot設(shè)置對(duì)話框如圖10所示:圖10 Plot設(shè)置對(duì)話框各行參數(shù)
16、在設(shè)置完后,點(diǎn)擊“Add”加入,最后點(diǎn)擊“OK”。此時(shí)屏幕將出現(xiàn)Plot設(shè)置對(duì)話框如圖11所示的繪圖窗口:圖11 程序運(yùn)行之前的Plot窗口3) 運(yùn)行Convolution程序并在圖形窗口中觀察數(shù)據(jù)按F5運(yùn)行程序,當(dāng)程序Halt(SHIFT-F5)后,Plot窗口中將出現(xiàn)數(shù)據(jù)曲線。圖中的三條曲線分別代表Table、Input和Output三個(gè)數(shù)組的值,程序運(yùn)行后的Plot窗口如圖12所示:圖12 程序運(yùn)行后的Plot窗口在Plot窗口中可用鼠標(biāo)左鍵選取圖形的一部分,圖形會(huì)自動(dòng)對(duì)所選區(qū)域放大,便于數(shù)據(jù)的觀察。若要精確地知道某個(gè)數(shù)據(jù)在某點(diǎn)的值,可點(diǎn)擊鼠標(biāo)的右鍵,在彈出的菜單中選取“Date Cur
17、se”項(xiàng),圖形上將出現(xiàn)“十”字大光標(biāo),可點(diǎn)擊曲線上的任一點(diǎn),在窗口左下角會(huì)出現(xiàn)該點(diǎn)的數(shù)值和曲線名。練習(xí)四:打開(kāi)練習(xí)三的程序并進(jìn)行代碼分析;四 實(shí)驗(yàn)結(jié)果及數(shù)據(jù)分析練習(xí)一:運(yùn)行程序得到的結(jié)果如下圖13:圖13 dotprod.c程序輸出結(jié)果未進(jìn)行優(yōu)化前的代碼性能分析結(jié)果如下圖14:圖14 未執(zhí)行優(yōu)化前的代碼效率分析使用程序優(yōu)化器之后的代碼性能分析結(jié)果如下圖15:圖15 優(yōu)化后的代碼執(zhí)行效率分析從上圖可以看出,優(yōu)化使子函數(shù)的運(yùn)行時(shí)間減少,提高了執(zhí)行效率。練習(xí)二:運(yùn)行結(jié)果如下圖16:圖16 采用混合編碼后的代碼執(zhí)行效率分析從上面的代碼效率分析圖中可以看出,main函數(shù)運(yùn)行時(shí)間占程序總運(yùn)行時(shí)間的13.0
18、8%;a_dot_b運(yùn)行時(shí)間占程序總運(yùn)行時(shí)間的49.38%;a_dot_d運(yùn)行時(shí)間占程序總運(yùn)行時(shí)間的32.81%;而a_dot_c_asm運(yùn)行時(shí)間只占程序總運(yùn)行時(shí)間的4.74%。和練習(xí)一相比,除a_dot_c_asm外,其余的三個(gè)函數(shù)是完全相同的,而a_dot_c_asm的運(yùn)行時(shí)間和a_dot_c相比,則有顯著的下降。說(shuō)明匯編程序和C程序相比有較高的執(zhí)行效率和較快的執(zhí)行時(shí)間。匯編代碼的執(zhí)行效率高于C代碼的執(zhí)行效率,而采用匯編語(yǔ)言的C語(yǔ)言的混合代碼的執(zhí)行效率是最高的。練習(xí)三:使用plot功能得到的繪圖結(jié)果入下圖17:圖17 繪圖結(jié)果(包含Table,Input,Output)練習(xí)四:由于使用的Session為仿真器,所以軟件中的Tools菜單的Statistical功能無(wú)法使用,所以只能通過(guò)li
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 展會(huì)宣傳推廣合同(2篇)
- 小賣鋪?zhàn)赓U合同(2篇)
- 2025年度建筑密封硅酮膠招標(biāo)采購(gòu)合同3篇
- 二零二五年度智慧城市物聯(lián)網(wǎng)設(shè)備采購(gòu)合同2篇
- 二零二五版果園果樹(shù)種植技術(shù)指導(dǎo)與承包合同3篇
- 2024版短期貸款合同范例3篇
- 二零二五年度消防工程監(jiān)理合同2篇
- 二零二五年度建筑工程項(xiàng)目招投標(biāo)與合同履約擔(dān)保服務(wù)合同3篇
- 二零二五版股權(quán)代持糾紛調(diào)解與風(fēng)險(xiǎn)防范合同5篇
- 二零二五年度不動(dòng)產(chǎn)權(quán)屬轉(zhuǎn)移擔(dān)保合同3篇
- 無(wú)人機(jī)航拍技術(shù)教案(完整版)
- 人教PEP版(2024)三年級(jí)上冊(cè)英語(yǔ)Unit 4《Plants around us》單元作業(yè)設(shè)計(jì)
- 《保密法》培訓(xùn)課件
- 醫(yī)院項(xiàng)目竣工驗(yàn)收和工程收尾階段的管理措施專項(xiàng)方案
- 2024年涉密人員考試試題庫(kù)保密基本知識(shí)試題附答案(考試直接用)
- 2024年桂林中考物理試卷
- DL∕T 5362-2018 水工瀝青混凝土試驗(yàn)規(guī)程
- (正式版)JC∕T 60023-2024 石膏條板應(yīng)用技術(shù)規(guī)程
- DL-T5054-2016火力發(fā)電廠汽水管道設(shè)計(jì)規(guī)范
- (權(quán)變)領(lǐng)導(dǎo)行為理論
- 家用電器可靠性與壽命預(yù)測(cè)研究
評(píng)論
0/150
提交評(píng)論