版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)
文檔簡介
實驗報告實驗中心電子信息技術(shù)實驗中心專業(yè)年級電子信息科學(xué)與技術(shù)2023級實驗課程DSP原理及應(yīng)用實驗姓名趙正軍實驗名稱實驗一、編寫一個以C語言為根底的DSP程序?qū)W號202307031113提交日期201成績一、實驗?zāi)康?.學(xué)習(xí)用標(biāo)準(zhǔn)C語言編制程序;了解常用的C語言程序設(shè)計方法和組成局部。2.學(xué)習(xí)編制連接命令文件,并用來控制代碼的連接。3.學(xué)會建立和改變map文件,以及利用它觀察DSP內(nèi)存使用情況的方法。4.熟悉使用軟件仿真方式調(diào)試程序。二、實驗設(shè)備PC兼容機一臺,操作系統(tǒng)為WindowsXP,安CCS軟件。三、實驗原理1.標(biāo)準(zhǔn)C語言程序CCS支持使用標(biāo)準(zhǔn)C語言開發(fā)DSP應(yīng)用程序。當(dāng)使用標(biāo)準(zhǔn)C語言編制的程序時,其源程序文件名的后綴應(yīng)為.c(如:volume.c)。CCS在編譯標(biāo)準(zhǔn)C語言程序時,首先將其編譯成相應(yīng)匯編語言程序,再進一步編譯成目標(biāo)DSP的可執(zhí)行代碼。最后生成的是coff格式的可下載到DSP中運行的文件,其文件名后綴為.out。由于使用C語言編制程序,其中調(diào)用的標(biāo)準(zhǔn)C的庫函數(shù)由專門的庫提供,在編譯連接時編譯系統(tǒng)還負(fù)責(zé)構(gòu)建C運行環(huán)境。所以用戶工程中需要注明使用C的支持庫。2.命令文件的作用命令文件(文件名后綴為cmd)為鏈接程序提供程序和數(shù)據(jù)在具體DSP硬件中的位置分配信息。通過編制命令文件,我們可以將某些特定的數(shù)據(jù)或程序按照我們的意圖放置在DSP所管理的內(nèi)存中。命令文件也為鏈接程序提供了DSP外擴存儲器的描述。在程序中使用CMD文件描述硬件存儲區(qū),可以只說明使用局部,但只要是說明的,必須和硬件匹配,也就是只要說明的存儲區(qū)必須是存在的和可用的。3.內(nèi)存映射(map)文件的作用一般地,我們設(shè)計、開發(fā)的DSP程序在調(diào)試好后,要固化到系統(tǒng)的ROM中。為了更精確地使用ROM空間,我們就需要知道程序的大小和位置,通過建立目標(biāo)程序的map文件可以了解DSP代碼確實切信息。當(dāng)需要更改程序和數(shù)據(jù)的大小和位置時,就要適當(dāng)修改cmd文件和源程序,再重新生成map文件來觀察結(jié)果。另外,通過觀察map文件,可以掌握DSP存儲器的使用和利用情況,以便進行存儲器方面的優(yōu)化工作。4.源程序分析四、實驗內(nèi)容與步驟1.實驗準(zhǔn)備建立PC機器與DSP儀器之間的來連接,設(shè)置軟件模式。2.建立新的工程文件(1)雙擊桌面上圖標(biāo),啟動CodeComposerStudio2.21。(2)進行以下設(shè)置(如圖2-2):3.編輯輸入源程序(1)C語言程序-先新建源程序窗口:-輸入源程序:intx,y,z;main(){x=1;y=2;while(1){z=x+y;}}圖2-3新建源文件-保存源程序為CProgram.c:(2)連接命令文件-如同第(1)步操作,建立空的源程序窗口。-輸入連接命令文件內(nèi)容:-lrts2800.lib-stack400h-heap100MEMORY{PAGE0:PROG(R):origin=0x3E8000,length=0x10000PAGE0:BOOT(R):origin=0x3FF000,length=0xFC0PAGE0:RESET(R):origin=0x3FFFC0,length=0x2PAGE0:VECTORS(R):origin=0x3FFFC2,length=0x3EPAGE1:M0RAM(RW):origin=0x000000,length=0x400PAGE1:M1RAM(RW):origin=0x000400,length=0x400PAGE1:L0L1RAM(RW):origin=0x008000,length=0x2000圖2-4保存為c文件PAGE1:H0RAM(RW):origin=0x3F8000,length=0x2000}SECTIONS{/*22-bitprogramsections*/.reset:>RESET,PAGE=0vectors:>VECTORS,PAGE=0.pinit:>PROG,PAGE=0.cinit:>PROG,PAGE=0.text:>PROG,PAGE=0/*16-Bitdatasections*/.const:>L0L1RAM,PAGE=1.bss:>L0L1RAM,PAGE=1.stack:>M1RAM,PAGE=1.sysmem:>M0RAM,PAGE=1/*32-bitdatasections*/.ebss:>H0RAM,PAGE=1.econst:>H0RAM,PAGE=1.esysmem:>H0RAM,PAGE=1}-lrts2800.lib-如同第(1)步操作,將文件存為:C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0102-CProgram\CProgramd(3)將上述編譯的源程序參加工程CProgram.pjt。4.編譯源文件、下載可執(zhí)行程序(1)單擊菜單“Project〞、“RebuildAll〞。(2)執(zhí)行FileàLoadProgram,在隨后翻開的對話框中選擇剛剛建立的C:\ICETEK-F2812-EDULab\Lab0102-CProgram\debug\CProgram.out文件。完成后,系統(tǒng)自動翻開一個反匯編窗口“Disassembly〞,并在其中指示程序的入口地址為“_c_int00”5.翻開觀察窗口開啟CPU存放器觀察窗口:單擊菜單View->Registers->Core。6.觀察程序運行結(jié)果這時,在“Disassembly〞代表程序運行位置的綠色箭頭指向程序的入口地址,程序?qū)拇碎_始執(zhí)行。(1)選擇菜單中Debug->GoMain,CCS自動翻開CProgram.c,程序會停在用戶主程序入口main上,這從反匯編窗口和CProgram.c窗口中的指示箭頭位置可以看出。(2)在內(nèi)存觀察窗口中觀察變量的值:選擇“View〞菜單中“Memory…〞項,在“MemroyWindowOptions〞窗口中的“Adress〞項中輸入&x,單擊“OK〞完成設(shè)置;“Memory〞窗口中x的當(dāng)前取值顯示在第1個地址的后。(3)將變量x、y、z分別參加觀察窗口:在源程序中雙擊變量名,再單擊鼠標(biāo)右鍵,選擇“AddtoWatchWindow〞。這時,這3個變量還未作初始化。(4)單步運行2次,在觀察窗中觀察到變量x、y被賦值。變化的值被顯示成紅色。同時在“Memory〞窗口中也能觀察到x和y值的改變。(5)再單步運行,可觀察到z的值被計算出來。雙擊觀察窗口中變量x、y在“Value〞欄中的取值并修改成其他取值,單步運行后觀察結(jié)果。(6)雙擊觀察窗口中變量x、y在“Value〞欄中的取值,并修改成0;選擇菜單Debug->Restart,返回程序起點。(7)重新單步運行程序7.內(nèi)存映像文件(1)選擇菜單Project->BuildOptions…,啟動“BuildOptions〞工程設(shè)置對話框。(2)單擊“Linker〞屬性頁,在“MapFilename〞項中觀察生成的map文件名和路徑。(3)單擊“取消〞退出。8.對照觀察map文件和cmd文件的內(nèi)容(1)選擇菜單File->Open…,將找到C:\ICETEK-F2812-A-EDUlab\DSP281x_examples\Lab0102-CProgram\Debug目錄,將文件類型改為“MemoryMapFiles〞,選擇CProgram.map文件、翻開。(2)翻開CProgramd文件。(3)程序的入口地址:map文件中“ENTRYPOINTSYMBOL〞中說明了程序入口地址(_c_int00)。(4)內(nèi)存使用情況:-map文件中“MEMORYCONFIGURATION〞標(biāo)明了程序占用RAM的使用情況,共占用aaH個存儲單元。-觀察map文件中的“SECTIONALLOCATIONMAP〞段,可以看出CProgram.obj的入口地址為0x3e801e,這也是main函數(shù)的入口地址。-用戶堆棧段從400H開始,程序運行到main函數(shù)中后,變量x、y、z均開設(shè)在棧中。-還能看出程序運行都需要調(diào)用rts2800.lib中的哪些模塊。9.改變內(nèi)存分配修改cmd文件中的PAGE0:PROG(R):origin=0x3E8000,length=0x10000改為PAGE0:PROG(R):origin=0x3E9000,length=0x10000重新編譯工程,觀察map文件中有何變化。10.退出CCS五、實驗結(jié)果記錄1、建立PC機器與DSP儀器之間的來連接,設(shè)置軟件模式與翻開工程文件:把PC機上的USB線連接到DSP硬件上的相應(yīng)接口上,翻開電源。然后,啟動CC驅(qū)動設(shè)置窗口,安裝軟件仿真驅(qū)動〔Simulator〕,單擊“F2812Simulator〞驅(qū)動名,單擊“Import〞按鈕。完成設(shè)置:單擊“Close〞,菜單“File〞、“Exit〞,“是〞。然后重新啟動CodeComposerStudio2.2,翻開工程文件UseCMD.pjt2、觀察c語言程序的特殊設(shè)置:“AutoinitModel〞項設(shè)置成“Run–time
Autoinitialization〞3、編譯源文件,下載可執(zhí)行程序:(1)單擊菜單“Project〞、“RebuildAll〞。執(zhí)行結(jié)果如右圖:(2)執(zhí)行File->LoadProgram,在隨后翻開的對話框中選擇剛剛建立的UseCMD.out文件。完成后,系統(tǒng)自動翻開源程序文件UseCMD.c。4、翻開觀察窗口翻開view菜單下的watchwindows工具,在watch1中的name上分別輸入x,y,z三個變量,如圖:5、察程序運行結(jié)果在“x=1;〞這一行上設(shè)置斷點。方法是先把光標(biāo)移動到這一行上,右鍵選擇togglebreakpoint。(1)執(zhí)行程序〔按F5鍵〕1次,可觀察到watch窗口中x和y的值無變化。如圖:(2)單步運行2次〔按F8鍵〕,在變量窗口中觀察到變量x、y被賦值。如圖(3)
再單步運行1次〔按F8鍵〕,在變量窗口中觀察到變量z中保存的就是x加上y的值。如圖6、成內(nèi)存映像文件(1)單擊菜單“Project〞、“Options…〞,啟動“BuildOptions〞工程設(shè)置對話框。(2)單擊“Linker〞屬性頁,在“MapFilename〞項中輸入需要生成的map文件名,比方可以輸入UseCMD.map(3)單擊“確定〞,完成設(shè)置。(4)選擇菜單“Project〞、“RebuildAll〞,重新編譯工程,生成新設(shè)置的map文件。7、對照觀察map文件和cmd文件的內(nèi)容(1)選擇菜單“File〞、“Open…〞,將找到C:\ICETEK-F2812-EDULab\
DSP281x_examples\Lab02-UseCMD目錄,將文件類型改為“MemoryMapFiles〞,選擇剛剛生成的UseCMD.map文件、翻開。(2)展開工程管理窗中的UseCMD.pjt,雙擊其中的UseCMDd文件。(3)程序的入口地址:cmd文件的SECTION中指定.text段放到程序區(qū)〔PAGE0〕的PRAMH0中,在MEMORY中指定PRAMH0,從內(nèi)存地址3f8002h開始,長度為1000h;再看map文件中“ENTRYPOINTSYMBOL〞中說明了“c_int00”標(biāo)號的地址為003f8002h,兩者相符。
如下列圖所示:(4)內(nèi)存的占用情況:通過觀察map文件中的“MEMORYCONFIGURATION〞段可以了解內(nèi)存的使用情況??梢钥吹絫ext段放到程序區(qū)〔PAGE0〕的PRAMH0中,并且從其首地址開始。.改變內(nèi)存分配修改cmd文件中的PRAMH0
:origin=0x3f8002,length=0x001000改為PRAMH0
:origin=0x3f8502,length=0x00500意思是把PRAMH0的首地址入口改為0x3f8002,所占的字節(jié)長度為500h。重新編譯工程,觀察map文件中有何變化。結(jié)果如下列圖所示:從map文件的描述結(jié)果可以看出,“c_int00”標(biāo)號的地址修改為003f8502h,可以看到PPAMH0的首地址變?yōu)榱?x3f8002,長度也修改成了500.兩者還是相符的。8、題目:如果對第一個實驗按上述方法對cmd文件進行修改,重新觀察其map文件的變化。過程與結(jié)果如下:修改前查看map文件的描述:按上述方法修改cmd文件后,結(jié)果如下:可以看到修改后的“c_int00”標(biāo)號的地址由原來的3f8018h變?yōu)榱藶?f8518h,在MEMORY中指定PRAMH0,由原來的內(nèi)存地址3f8002h開始到修改后的3f85
溫馨提示
- 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 合同法延期交貨賠償3篇
- 訂貨合同范例版
- 家具消費合同范例
- 觀光自行車承包合同范例
- 設(shè)計外包協(xié)議合同范例
- 贊助服裝合同范例
- 武漢輕工大學(xué)《非物質(zhì)文化遺產(chǎn)傳承教育:太陽花》2023-2024學(xué)年第一學(xué)期期末試卷
- 武漢民政職業(yè)學(xué)院《農(nóng)藥生物學(xué)》2023-2024學(xué)年第一學(xué)期期末試卷
- 追加 補充合同范例
- 收購期權(quán)合同范例
- 中職《數(shù)學(xué)》課程思政教學(xué)案例(一等獎)
- 醫(yī)院隔離技術(shù)操作規(guī)程
- 冰河木馬試驗
- 微生物試驗室SOP文件
- 2023年黑龍江省高職單招面試題庫及答案解析
- 小學(xué)數(shù)學(xué)試卷模板
- 全國運動員代表資格協(xié)議書
- 小學(xué)消防安全檢查記錄表【模板】
- 制氫操作規(guī)程6篇
- GB/T 4744-2013紡織品防水性能的檢測和評價靜水壓法
- 借調(diào)人員年終總結(jié)模板【5篇】
評論
0/150
提交評論