版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
實(shí)驗(yàn)報(bào)告實(shí)驗(yàn)中心電子信息技術(shù)實(shí)驗(yàn)中心專業(yè)年級(jí)電子信息科學(xué)與技術(shù)2023級(jí)實(shí)驗(yàn)課程DSP原理及應(yīng)用實(shí)驗(yàn)姓名趙正軍實(shí)驗(yàn)名稱實(shí)驗(yàn)一、編寫一個(gè)以C語言為根底的DSP程序?qū)W號(hào)202307031113提交日期201成績一、實(shí)驗(yàn)?zāi)康?.學(xué)習(xí)用標(biāo)準(zhǔn)C語言編制程序;了解常用的C語言程序設(shè)計(jì)方法和組成局部。2.學(xué)習(xí)編制連接命令文件,并用來控制代碼的連接。3.學(xué)會(huì)建立和改變map文件,以及利用它觀察DSP內(nèi)存使用情況的方法。4.熟悉使用軟件仿真方式調(diào)試程序。二、實(shí)驗(yàn)設(shè)備PC兼容機(jī)一臺(tái),操作系統(tǒng)為WindowsXP,安CCS軟件。三、實(shí)驗(yàn)原理1.標(biāo)準(zhǔn)C語言程序CCS支持使用標(biāo)準(zhǔn)C語言開發(fā)DSP應(yīng)用程序。當(dāng)使用標(biāo)準(zhǔn)C語言編制的程序時(shí),其源程序文件名的后綴應(yīng)為.c(如:volume.c)。CCS在編譯標(biāo)準(zhǔn)C語言程序時(shí),首先將其編譯成相應(yīng)匯編語言程序,再進(jìn)一步編譯成目標(biāo)DSP的可執(zhí)行代碼。最后生成的是coff格式的可下載到DSP中運(yùn)行的文件,其文件名后綴為.out。由于使用C語言編制程序,其中調(diào)用的標(biāo)準(zhǔn)C的庫函數(shù)由專門的庫提供,在編譯連接時(shí)編譯系統(tǒng)還負(fù)責(zé)構(gòu)建C運(yùn)行環(huán)境。所以用戶工程中需要注明使用C的支持庫。2.命令文件的作用命令文件(文件名后綴為cmd)為鏈接程序提供程序和數(shù)據(jù)在具體DSP硬件中的位置分配信息。通過編制命令文件,我們可以將某些特定的數(shù)據(jù)或程序按照我們的意圖放置在DSP所管理的內(nèi)存中。命令文件也為鏈接程序提供了DSP外擴(kuò)存儲(chǔ)器的描述。在程序中使用CMD文件描述硬件存儲(chǔ)區(qū),可以只說明使用局部,但只要是說明的,必須和硬件匹配,也就是只要說明的存儲(chǔ)區(qū)必須是存在的和可用的。3.內(nèi)存映射(map)文件的作用一般地,我們?cè)O(shè)計(jì)、開發(fā)的DSP程序在調(diào)試好后,要固化到系統(tǒng)的ROM中。為了更精確地使用ROM空間,我們就需要知道程序的大小和位置,通過建立目標(biāo)程序的map文件可以了解DSP代碼確實(shí)切信息。當(dāng)需要更改程序和數(shù)據(jù)的大小和位置時(shí),就要適當(dāng)修改cmd文件和源程序,再重新生成map文件來觀察結(jié)果。另外,通過觀察map文件,可以掌握DSP存儲(chǔ)器的使用和利用情況,以便進(jìn)行存儲(chǔ)器方面的優(yōu)化工作。4.源程序分析四、實(shí)驗(yàn)內(nèi)容與步驟1.實(shí)驗(yàn)準(zhǔn)備建立PC機(jī)器與DSP儀器之間的來連接,設(shè)置軟件模式。2.建立新的工程文件(1)雙擊桌面上圖標(biāo),啟動(dòng)CodeComposerStudio2.21。(2)進(jìn)行以下設(shè)置(如圖2-2):3.編輯輸入源程序(1)C語言程序-先新建源程序窗口:-輸入源程序:intx,y,z;main(){x=1;y=2;while(1){z=x+y;}}圖2-3新建源文件-保存源程序?yàn)镃Program.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,在隨后翻開的對(duì)話框中選擇剛剛建立的C:\ICETEK-F2812-EDULab\Lab0102-CProgram\debug\CProgram.out文件。完成后,系統(tǒng)自動(dòng)翻開一個(gè)反匯編窗口“Disassembly〞,并在其中指示程序的入口地址為“_c_int00”5.翻開觀察窗口開啟CPU存放器觀察窗口:單擊菜單View->Registers->Core。6.觀察程序運(yùn)行結(jié)果這時(shí),在“Disassembly〞代表程序運(yùn)行位置的綠色箭頭指向程序的入口地址,程序?qū)拇碎_始執(zhí)行。(1)選擇菜單中Debug->GoMain,CCS自動(dòng)翻開CProgram.c,程序會(huì)停在用戶主程序入口main上,這從反匯編窗口和CProgram.c窗口中的指示箭頭位置可以看出。(2)在內(nèi)存觀察窗口中觀察變量的值:選擇“View〞菜單中“Memory…〞項(xiàng),在“MemroyWindowOptions〞窗口中的“Adress〞項(xiàng)中輸入&x,單擊“OK〞完成設(shè)置;“Memory〞窗口中x的當(dāng)前取值顯示在第1個(gè)地址的后。(3)將變量x、y、z分別參加觀察窗口:在源程序中雙擊變量名,再單擊鼠標(biāo)右鍵,選擇“AddtoWatchWindow〞。這時(shí),這3個(gè)變量還未作初始化。(4)單步運(yùn)行2次,在觀察窗中觀察到變量x、y被賦值。變化的值被顯示成紅色。同時(shí)在“Memory〞窗口中也能觀察到x和y值的改變。(5)再單步運(yùn)行,可觀察到z的值被計(jì)算出來。雙擊觀察窗口中變量x、y在“Value〞欄中的取值并修改成其他取值,單步運(yùn)行后觀察結(jié)果。(6)雙擊觀察窗口中變量x、y在“Value〞欄中的取值,并修改成0;選擇菜單Debug->Restart,返回程序起點(diǎn)。(7)重新單步運(yùn)行程序7.內(nèi)存映像文件(1)選擇菜單Project->BuildOptions…,啟動(dòng)“BuildOptions〞工程設(shè)置對(duì)話框。(2)單擊“Linker〞屬性頁,在“MapFilename〞項(xiàng)中觀察生成的map文件名和路徑。(3)單擊“取消〞退出。8.對(duì)照觀察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個(gè)存儲(chǔ)單元。-觀察map文件中的“SECTIONALLOCATIONMAP〞段,可以看出CProgram.obj的入口地址為0x3e801e,這也是main函數(shù)的入口地址。-用戶堆棧段從400H開始,程序運(yùn)行到main函數(shù)中后,變量x、y、z均開設(shè)在棧中。-還能看出程序運(yùn)行都需要調(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五、實(shí)驗(yàn)結(jié)果記錄1、建立PC機(jī)器與DSP儀器之間的來連接,設(shè)置軟件模式與翻開工程文件:把PC機(jī)上的USB線連接到DSP硬件上的相應(yīng)接口上,翻開電源。然后,啟動(dòng)CC驅(qū)動(dòng)設(shè)置窗口,安裝軟件仿真驅(qū)動(dòng)〔Simulator〕,單擊“F2812Simulator〞驅(qū)動(dòng)名,單擊“Import〞按鈕。完成設(shè)置:單擊“Close〞,菜單“File〞、“Exit〞,“是〞。然后重新啟動(dòng)CodeComposerStudio2.2,翻開工程文件UseCMD.pjt2、觀察c語言程序的特殊設(shè)置:“AutoinitModel〞項(xiàng)設(shè)置成“Run–time
Autoinitialization〞3、編譯源文件,下載可執(zhí)行程序:(1)單擊菜單“Project〞、“RebuildAll〞。執(zhí)行結(jié)果如右圖:(2)執(zhí)行File->LoadProgram,在隨后翻開的對(duì)話框中選擇剛剛建立的UseCMD.out文件。完成后,系統(tǒng)自動(dòng)翻開源程序文件UseCMD.c。4、翻開觀察窗口翻開view菜單下的watchwindows工具,在watch1中的name上分別輸入x,y,z三個(gè)變量,如圖:5、察程序運(yùn)行結(jié)果在“x=1;〞這一行上設(shè)置斷點(diǎn)。方法是先把光標(biāo)移動(dòng)到這一行上,右鍵選擇togglebreakpoint。(1)執(zhí)行程序〔按F5鍵〕1次,可觀察到watch窗口中x和y的值無變化。如圖:(2)單步運(yùn)行2次〔按F8鍵〕,在變量窗口中觀察到變量x、y被賦值。如圖(3)
再單步運(yùn)行1次〔按F8鍵〕,在變量窗口中觀察到變量z中保存的就是x加上y的值。如圖6、成內(nèi)存映像文件(1)單擊菜單“Project〞、“Options…〞,啟動(dòng)“BuildOptions〞工程設(shè)置對(duì)話框。(2)單擊“Linker〞屬性頁,在“MapFilename〞項(xiàng)中輸入需要生成的map文件名,比方可以輸入U(xiǎn)seCMD.map(3)單擊“確定〞,完成設(shè)置。(4)選擇菜單“Project〞、“RebuildAll〞,重新編譯工程,生成新設(shè)置的map文件。7、對(duì)照觀察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)號(hào)的地址為003f8002h,兩者相符。
如下列圖所示:(4)內(nèi)存的占用情況:通過觀察map文件中的“MEMORYCONFIGURATION〞段可以了解內(nèi)存的使用情況。可以看到text段放到程序區(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)號(hào)的地址修改為003f8502h,可以看到PPAMH0的首地址變?yōu)榱?x3f8002,長度也修改成了500.兩者還是相符的。8、題目:如果對(duì)第一個(gè)實(shí)驗(yàn)按上述方法對(duì)cmd文件進(jìn)行修改,重新觀察其map文件的變化。過程與結(jié)果如下:修改前查看map文件的描述:按上述方法修改cmd文件后,結(jié)果如下:可以看到修改后的“c_int00”標(biāo)號(hào)的地址由原來的3f8018h變?yōu)榱藶?f8518h,在MEMORY中指定PRAMH0,由原來的內(nèi)存地址3f8002h開始到修改后的3f85
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度核安全評(píng)價(jià)技術(shù)服務(wù)合同范本
- 2025年度洗衣店員工培訓(xùn)及服務(wù)質(zhì)量提升合同3篇
- 無人化農(nóng)場(chǎng)項(xiàng)目實(shí)施時(shí)間計(jì)劃
- 二零二五年度大型風(fēng)力發(fā)電機(jī)組運(yùn)輸合同2篇
- 二零二五年度農(nóng)產(chǎn)品批發(fā)市場(chǎng)建設(shè)與運(yùn)營承包合同3篇
- 2025年環(huán)保設(shè)備安裝與維護(hù)合同2篇
- 山區(qū)教育:學(xué)校與企業(yè)聯(lián)合發(fā)展模式
- 2025年湖南省建筑安全員C證(專職安全員)考試題庫
- 2024年高效養(yǎng)殖飼料供應(yīng)協(xié)議模板版
- 二零二五年度養(yǎng)殖場(chǎng)草坪施工及維護(hù)合同2篇
- 2025年國務(wù)院發(fā)展研究中心信息中心招聘應(yīng)屆畢業(yè)生1人高頻重點(diǎn)提升(共500題)附帶答案詳解
- 2024年公安機(jī)關(guān)理論考試題庫500道及參考答案
- 2024年全國《國防和兵役》理論知識(shí)競(jìng)賽試題庫與答案
- 特殊情況施工的技術(shù)措施
- 企業(yè)知識(shí)產(chǎn)權(quán)保護(hù)策略及實(shí)施方法研究報(bào)告
- 2024年07月11026經(jīng)濟(jì)學(xué)(本)期末試題答案
- 2024年中小企業(yè)股權(quán)融資合同3篇
- 2024年01月11289中國當(dāng)代文學(xué)專題期末試題答案
- 2024年秋季生物教研組工作計(jì)劃
- 2024年云南高中學(xué)業(yè)水平合格考?xì)v史試卷真題(含答案詳解)
- 大學(xué)物理(二)知到智慧樹章節(jié)測(cè)試課后答案2024年秋湖南大學(xué)
評(píng)論
0/150
提交評(píng)論