實(shí)驗(yàn)四 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告課件_第1頁
實(shí)驗(yàn)四 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告課件_第2頁
實(shí)驗(yàn)四 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告課件_第3頁
實(shí)驗(yàn)四 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告課件_第4頁
實(shí)驗(yàn)四 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告課件_第5頁
已閱讀5頁,還剩12頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、 混合編程實(shí)驗(yàn)實(shí)驗(yàn)報告 姓名: 趙廣元 學(xué)號: 1428403058 學(xué)院: 電子信息學(xué)院 班級: 電子信息工程混合編程實(shí)驗(yàn)一 實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)使用實(shí)時運(yùn)行庫2. 熟悉用C和匯編混合編程的方法3. 掌握混合編程的調(diào)試方法二 實(shí)驗(yàn)環(huán)境1. TMS320VC5416DSK實(shí)驗(yàn)板2. Ccs軟件3. PC機(jī)三 實(shí)驗(yàn)原理1.混合編程基礎(chǔ):高級語言(例如C語言)編程靈活自由,可以提高編程效率匯編語言可以充分利用DSP的硬件結(jié)構(gòu),運(yùn)算性能優(yōu)于高級語言所以可以用高級語言來編寫主流程,匯編語言編寫數(shù)據(jù)量大的數(shù)據(jù)處理模塊這樣的優(yōu)點(diǎn)在于:既可以保證程序良好的運(yùn)算能力,又可以給程序升級和維護(hù)帶來方便所以在實(shí)際編程

2、中,可以采用混合編程2.C語言調(diào)用匯編語言編寫的函數(shù)時的編程規(guī)范:(1)變量和函數(shù)的命名規(guī)則:在C語言和匯編語言中均需要聲明為全局變量對函數(shù)而言,還必須在C語言中給出準(zhǔn)確的函數(shù)原型說明匯編語言中該名字需要加一個下劃線作為前綴,但C語言中保持“自然”的命名(2)C語言調(diào)用匯編函數(shù)的函數(shù)調(diào)用規(guī)則C語言的程序主要是由編譯器完成資源的分配,對于編程人員可以看做是一個黑盒,不必追究其內(nèi)在細(xì)節(jié)匯編語言是由匯編人員手工安排資源,所以要特別注意其使用規(guī)則要與C語言保持一致(3)與C語言接口的匯編程序子函數(shù)而言,匯編語言中寄存器使用規(guī)則:在子程序中自由使用的有AR0,AR2-AR5,A,B,BRC,T等對于AR

3、1,AR6,AR7,ST0,ST1這些寄存器,子子程序中如果要改變他們,需要先將他們在堆棧中保護(hù)起來,在程序結(jié)束時再從堆棧中彈出他們,恢復(fù)調(diào)用前的數(shù)值在C語言中,狀態(tài)標(biāo)志有固定的缺省數(shù)值,可以通過查表獲得。建議不要使用缺省數(shù)值,在匯編程序中最好按照自己的要求顯示的設(shè)置狀態(tài)位(4)C語言調(diào)用匯編程序子函數(shù)時,分析參數(shù)傳遞的規(guī)則:C語言和匯編的相互調(diào)用主要通過累加器A和堆棧來傳遞參數(shù)(c-int00函數(shù)將CPL置一,利用SP進(jìn)行直接尋址)在沒有調(diào)用函數(shù)時,堆棧中先壓入第二個參數(shù)以后的其他參數(shù)(包括第二個參數(shù)),最后一個參數(shù)壓在堆棧的最下方,即按照逆序壓棧然后將第一個參數(shù)放在A中并調(diào)用函數(shù),這時程序

4、的返回地址將自動被壓入堆棧當(dāng)函數(shù)有返回值時,在返回前被放在A中在函數(shù)返回時,按照反方向依次調(diào)整堆棧指針 3.根據(jù)參數(shù)傳遞的規(guī)則,匯編函數(shù)設(shè)計(jì)方法:(1) 保護(hù)現(xiàn)場(如ST0,ST1)舉例:pshm ST1(2) 調(diào)整SP指針,為函數(shù)局部變量申請空間Frame #-8(3) 獲取調(diào)用函數(shù)的傳入函數(shù)第一個傳入?yún)?shù)從A累加器獲取MVDK *SP(8+1+1), AR3 ; 第二個參數(shù)MVDK *SP(8+1+2), AR3 ; 第三個參數(shù)(4) 編寫處理程序(5) 將返回值賦給A累加器(6) 恢復(fù)SP指針Frame #8(7) 恢復(fù)現(xiàn)場popm ST1(8) RET四 實(shí)驗(yàn)步驟1.用USB線連接PC

5、和DSK5416,利用板上Emulator進(jìn)行調(diào)試2.啟動CCS,建立一個工程。3.建立混合匯編源程序文件。 mix.h ;匯編函數(shù)在C語言中函數(shù)原型聲明頭文件 Mix.c ;主程序文件,調(diào)用匯編函數(shù)mix_func函數(shù) Addfun.s54 ;匯編函數(shù)_mix_func定義的匯編文件 mix.cmd ;鏈接配置文件4.將mix.c、addfun.s54和cmd文件加入到工程。5.設(shè)置工程的Build option,在鏈接選項(xiàng)中Include libraries(-l)項(xiàng)輸入rts.lib,使用近調(diào)用方式調(diào)用函數(shù)。6.Buid all7.Load ProgramRun8.結(jié)果測試:利用View

6、-CPU Register和View-Memory注意參數(shù)傳遞和SP、PC指針的變化如果采用遠(yuǎn)調(diào)用,程序應(yīng)該做哪些修改?1.運(yùn)行時支持庫將rts.lib換為rts_ext.lib2.Build option的編譯選項(xiàng)選用-mf (遠(yuǎn)調(diào)用選項(xiàng))3.調(diào)用時返回地址占2個word,所以要訪問輸入?yún)?shù)(參數(shù)2、3)應(yīng)該與近調(diào)用時偏移量再加1第一個傳入?yún)?shù)從A累加器獲取MVDK *SP(8+2+1), AR3 ; 第二個參數(shù)MVDK *SP(8+2+2), AR3 ; 第三個參數(shù)4. RET要改為FRET5. 在函數(shù)調(diào)用匯編語句處加入斷點(diǎn),編譯下載后點(diǎn)擊運(yùn)行按鈕,之后使用step into單步執(zhí)行命令,

7、用register觀察指針變化如下圖所示:從函數(shù)處開始:(sp=sp+11):轉(zhuǎn)到調(diào)用的匯編語句處:順序向下執(zhí)行:過程中指針變化如圖: 循環(huán): 跳出循環(huán)繼續(xù)向下執(zhí)行,指針變化如下圖:跳出匯編調(diào)用,返回c程序:五 感悟與體會1. 遠(yuǎn)調(diào)用時要修改運(yùn)行時支持庫以及編譯選項(xiàng),在混合編程中根據(jù)參數(shù)傳遞的規(guī)則,要特別注意調(diào)整sp指針地址,并盡量使地址偶對齊。2. 在用register觀察指針變化時,由于系統(tǒng)支持流水線操作,所以在單步執(zhí)行之后,在下一步才能看見相應(yīng)的指針發(fā)生變化。3. 利用asm函數(shù)直接調(diào)用匯編語句,注意stm指令前的空格是必須要的,為什么?變量和函數(shù)的命名規(guī)則規(guī)定匯編語句中命名時需要在名字

8、前加入空格作為前綴,而在C語言中保持自然的命名。遠(yuǎn)調(diào)用參考匯編程序:Description:; TMS320C54x Program for Students Experiment; History:;DateAuthorsChanges;2014/7/12Hu JianlingRevised.;*.mmregs;-;int mix_func(int *wl, int *wr, int val);int i, val_min, tmp8;-var_tmp.set0;ST1off_m.set-9off_p.set9frame_size .set 11;return address arg_wr

9、.set frame_size+1arg_val .set frame_size+2.global _mix_func ;make the function label to be global.text_mix_func: pshm ST1 frame#off_m ssbxOVM ;-;for(i=0; i8; i+);tmpi = wli * wri;-stm#8-1, BRCmvdk*SP(arg_wr), AR3;AR3=wrmvmmSP, AR4;AR4=tmpstlmA, AR2;AR2=wlrptbtmp_loop-1mpy*AR2+, *AR3+, AstlA, *AR4+tmp_loop:;-;val_min = val;for(i=0; itmpi);va

溫馨提示

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

評論

0/150

提交評論