




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
研究生專業(yè)實驗教學(xué)實驗報告書實驗課程名稱:嵌入式系統(tǒng)專業(yè)實驗實驗指導(dǎo)教師:學(xué)院:專業(yè)及類別:學(xué)號:姓名:實驗日期:成績:重慶大學(xué)研究生院制實驗名稱:fpgasopc實驗實驗時間:2016.5.52016.5.12一、實驗?zāi)康?、學(xué)習(xí)QuartusII、SOPCBuilder、NiosIIIDE的基本操作;2、初步了解SOPC的開發(fā)流程,基本掌握NiosII軟核的定制流程;3、掌握NiosII軟件的開發(fā)流程;掌握軟件的基本調(diào)試方法。二、實驗儀器設(shè)備硬件:PC機(jī),F(xiàn)PGA實驗開發(fā)平臺;軟件:QuartusII9.1,SOPCBuilder9.1,NiosIIIDE9.1。三、實驗原理實驗利用Quartus軟件內(nèi)嵌的SOPCBuilder工具來構(gòu)造實驗硬件,在NiosII軟件編譯工具中開發(fā)程序來控制實驗箱中的LED燈實現(xiàn)閃爍的效果。1、驗證實驗:建立可用于控制LED閃爍的簡單NiosII處理器系統(tǒng),具體包括:(1)在QuartusII中建立一個工程;(2)使用SOPCBuilder建立并生成一個簡單的基于NiosII的硬件系統(tǒng);(3)在QuartusII工程中編譯基于NiosII的硬件系統(tǒng)并生成配置文件.sof;(4)在NiosIIIDE中建立對應(yīng)硬件系統(tǒng)的用戶C/C++工程,編寫一簡單用戶程序,在NiosIIIDE中編譯程序生成可執(zhí)行文件.elf;(5)將配置文件.sof和可執(zhí)行文件.elf都下載到FPGA進(jìn)行調(diào)試運行。2、設(shè)計實驗:用按鍵控制8個LED燈的閃爍狀態(tài),燈的狀態(tài)如下:燈分為左右兩部分交替閃爍。燈分為奇數(shù)號和偶數(shù)號燈兩部分交替閃爍。循環(huán)從左至右間隔(兩盞燈一組)跑動顯示;從中間開始向兩側(cè)依次點亮,從兩側(cè)向中間依次點亮。四、實驗內(nèi)容.文件夾的建立在計算機(jī)上創(chuàng)建文件夾,要求用英文或數(shù)字命名,不能用中文命名。.文本文件的建立1)單擊“開始”一“程序”一Altera-QuartusII9.1SP2。2)點擊菜單欄File-NewProjectWizard,彈出對話框式。點擊Next>按鈕繼續(xù),修改,而后點擊Next>繼續(xù),出現(xiàn)提示D盤nios2目錄下面沒有l(wèi)ed這個目錄,詢問是否要創(chuàng)建它,選擇是(y),讓QuartusII創(chuàng)建這個目錄。點擊"Next”。3)向?qū)ч_始詢問是否有現(xiàn)成的文件需要加到當(dāng)前新建的工程中點擊Next>繼續(xù),在圖(6)中選擇試驗箱的芯片CycloneWE系列的EP4CE40F23I7,點擊Next>,最后點擊Finish完成新建項目(注:在項目文件中找到led.qsf文件修改器件的電壓值為1.2V).NIOSII軟核建立1)在Quartus下,向工程中添加文件,先建立一個BlockDiagram/SchematicFile,點擊菜單欄中的File->New,打開新建文件對話框,我們選中BlockDiagram/SchematicFile,然后點擊OK按鈕。2)接下來我們該啟動SOPCBuider來創(chuàng)建NIOSII軟核了,點擊Tools->SOPCBuilder會出現(xiàn)對話框在在最上層的CreateNewSystem對話框中的SystemName:中輸入軟核的名字,在本示例中,輸入helloled做為軟件核的名字,點擊OK按鈕確認(rèn)。3)窗口左上角的ClockSettings顯示clk_0為外部時鐘,頻率為50Mhz,這是我們當(dāng)前所用到的軟核時鐘。(注:外部時鐘頻率可以修改,此實驗最好按板上晶振改為25Mhz)4)接下來要建立CPU,用鼠標(biāo)雙擊窗口左側(cè)框中的Processors->NIOSIIProcessor彈出如窗口,先選擇軟核的類型,Quartus一共提供了三種類型可供選擇,NiosII/e占用資源最少600-800LEs,功能也最簡單,速度最慢°NiosII/s占資源比前者多一些,功能也多了,速度也快一些,NiosII/f占資源最多,功能也最多,速度就快。選擇的時候要根據(jù)你的需求和你的芯片資源來決定,在本實驗中,我們選擇NiosII/s,能夠滿足需要。在窗口下半部分的這些選項可以先不用管ResetVector是復(fù)位后啟動時的Memory類型和偏移量ExceptionVector是異常情況時的Memory類型和偏移量?,F(xiàn)在還不能配置,需要RAM設(shè)置好以后才能修改這里,點擊Next,需要設(shè)置JTAGDebugModule,即JTAG調(diào)試時所要用到的功能模塊,我們選擇Level1,只使用最簡單的功能。點擊Next>繼續(xù),最后點擊Finish完成,出現(xiàn)cpu_0,就是剛才創(chuàng)建的cpu。5)接下面我們要添加片內(nèi)RAM選擇左邊目錄樹下的MemoriesandMemoryControllers->On-Chip->On-ChipMemory(RAMorROM)雙擊On-ChipMemory(RAMorROM),我們將RAM的大小改為20K,其他不做修改,然后直接點擊Finish完成,回到SOPCBuilder主窗口。主窗口上又加了一個Onchip_memory2_0的Module。6)接下來建立一個SystemID(這個版本中不是必需的),SystemID就是一種標(biāo)示符,類似校驗和的這么個東西,在你下載程序之前或者重啟之后,都會對它進(jìn)行檢驗,以防止錯誤發(fā)生。在左邊窗口的Peripherals->Debugandperformance->SystemIDPeripheral,雙擊SystemIDPeripheral會彈出對話框此窗口警告:SystemID組件的名字必需為sysid才能使用,點擊Finish完成添加,在SPOCbuilder主窗口中選中SystemID組件,然后擊點鼠標(biāo)右鍵,彈下一個菜單,選擇Rename,對sysid_0組件進(jìn)行重命名,將此文本框中的sysid_0改為sysid。照此方法,我們把所有組件后面的_0全部去掉。7)接下來創(chuàng)建JTAGUART(調(diào)試時需要打字符串用才需要,如果單純控制LED可以不要),首先JTAGUART是實現(xiàn)PC和NiosII系統(tǒng)間的串行通信接口,它用于字符的輸入輸出,在NiosII的開發(fā)調(diào)試過程中扮演了重要的角色,接下來我們開始建立它的模塊。選擇sopcbuilder主窗口左邊InterfaceProtocols->Serial->JTAGUART雙擊JTAGUART,不做修改,點擊Next>,下一步點擊finish完成?;氐絊OPCBuilder主窗口,更改組件名jtag_uart_0為jtag_uart。8)接下來回去對CPU進(jìn)行設(shè)定,在主窗口中雙擊CPU組件進(jìn)入CPU設(shè)定對話框,如下把ResetVector右邊的Memory:改為onchip_memory2,offset會設(shè)為0x0把ExceptionVector右邊的Memory改為onchip_memory2,offset會設(shè)為0x20,點擊窗口右下角的finish完成。9)接下來要添加一個PIO模塊(ParallelI/O),點擊窗口左側(cè)的Peripherals->MicrocontrollerPeripherals->PIO(ParallelI/O),其中Width表示要建立的PIO寬度是多少,我們的板上有8個LED,選擇寬度為8,Direction復(fù)選框中表示要建立的PIO的方向,分別表示Bidirectional(tristate)ports(雙向三態(tài)口),Inputportsonly(僅僅作為輸入口),Bothinputandoutputports(作為輸入和輸出口),Outputportsonly(僅僅作為輸出口),在本實驗中將要實現(xiàn)的是點亮LED,所以這個新建的PIO采用Outputportsonly(僅輸出口)方式,點擊Next繼續(xù),不需要選擇,點Next繼續(xù),直接點擊Finish,完成PIO模塊的創(chuàng)建回到主窗口中我們?yōu)榱朔奖阕R另U,將pio_0改名為pio_led。10)執(zhí)行System菜單上的Auto-AssignBaseAddresses自動分配一下地址。最后就能進(jìn)行編譯了,點擊SOPCBuilder主窗口左上角的SystemGeneration選項卡.我們點擊最下面的Generate按鍵,彈出對話框會提示你是否保存改變,點Save,保存一下。開始編譯,程序編好了,查看下最后的輸出,最后一行顯示Info:Systemgenerationwassuccessful,產(chǎn)生成功點擊Exit退出,會回到QuartusII主界面。11)在這一步中需要分配管腳,回到Quartus界面以后,在Blockl.bdf界面里在空白處雙擊左鍵,會出現(xiàn)對話框(注意上圖的紅框內(nèi))展開左邊的Project,下面有個helloled,這個helloled,就是剛才建立的NIOSII軟核,quartusii中把它用了一個方塊symbol來表示,點擊左下角的0K按鈕在Block1.bdf界面中,有個小方框陰影跟隨著鼠標(biāo)移動,鼠標(biāo)點擊,把它放在Block1.bdf界面中放好,在NIOS軟核helloled上點擊右鍵后點擊GeneratePinsforsymbolports,這一步作用就是生成管腳,通過命名以后給信號分配真正的fpgaio口引腳。然后雙擊out_port_from_the_pio_led[7..0]端口符號,彈出窗口中修改引腳名,改為led[7..0],所示確認(rèn)后,點擊按鈕編譯工程,在彈出窗口中保存bdf文件為led。編譯完成后,如果提示所示錯誤,則需要修改工程文件夾下led.qsf文件中“set_global_assignment-nameNOMINAL_CORE_SUPPLY_VOLTAGE1.0V”1.0V修改為1.2V,再次進(jìn)行編譯。編譯成功后點擊Assignments->Pins綁定引腳。12)接下來要對工程進(jìn)行配置在quartus9.1sp2主窗口中,鼠標(biāo)右鍵點擊led,選擇settingo進(jìn)入Setting后,點擊Device下面的DeviceandpinOption,出現(xiàn)DeviceandPinOptions對話框,選擇Configuration選項卡在Configurationdevice下面的Useconfigurationdevice中選擇EPCS4改好后,點擊確認(rèn),再點擊0K按鈕返回quartus9.1sp2主界面Saveall按鈕,保存下所有的改動。執(zhí)行菜單Processing->StartCompilation,開始進(jìn)行編譯,最后Quartus顯示一共用掉了5%的邏輯單元,用掉了18%的片上內(nèi)存,接下來要將生成好的*.sof或*.pof下載到FPGA中,至此,NIOS的硬件邏輯部分已經(jīng)編譯完成并下載了,接下來要進(jìn)行nios的軟件部分了。4.NIOSII軟件LED跑馬燈編寫1)打開NiosII軟件,開始一>程序一>Altera—>NiosIIEDS9.1—>NiosII9.1SoftwareBuildToolsforEclipse。2)新建NiosIIApplication,New—>NiosIIApplicationandBSPfromTemplate.選擇先前生成的SOPC文件,并輸入工程名,選擇工程模板HelloWorldSmall。然后點擊“Finish”。左側(cè)窗口中點擊“hello_world_small.c”,可以看到程序。4)雙擊led8.c,寫入程序,并保存。然后編譯工程,在窗口的右下角可以看到編譯進(jìn)程。如果編譯無錯,則進(jìn)行下載。5)下載運行。首先在實驗箱上把之前綁定的FPGA引腳連接到LED對應(yīng)的引腳,仿真器通過排線連接到實驗箱上“JTAG”處,另一接口通過USB線連接到電腦。在Quartus軟件中下載先前生成的目標(biāo)文件,Tools->Programmer。在彈出窗口中點擊“確定”。若窗口出現(xiàn)“NoHardware",則需設(shè)置下載方式。若有硬件連接,則不需要再設(shè)置。點擊“Start”下載,彈出窗口,注意請勿點擊“Cancel”。6)運行Nios應(yīng)用程序。首先點擊工程“l(fā)ed8”,點擊右鍵,選擇RunAs->NiosIIHardware若出現(xiàn)無目標(biāo)連接,則需要刷新目標(biāo)連接。點擊“TargetConnection”,在窗口中點擊“RefreshConnection",然后點擊“Run”運行程序。若不出現(xiàn)無目標(biāo)連接,則會自動運行程序。設(shè)計性實驗步驟一致。五、實驗數(shù)據(jù)/*"SmallHelloWorld"example.*Thisexampleprints'HellofromNiosII'totheSTDOUTstream.ItrunsontheNiosII'standard','full_featured','fast',and'low_cost'exampledesigns.ItrequiresaSTDOUTdeviceinyoursystem'shardware.*ThepurposeofthisexampleistodemonstratethesmallestpossibleHelloWorldapplication,usingtheNiosIIHALlibrary.Thememoryfootprintofthishostedapplicationis~332bytesbydefaultusingthestandardreferencedesign.ForamorefullyfeaturedHelloWorldapplicationexample,seetheexampletitled"HelloWorld".*Thememoryfootprintofthisexamplehasbeenreducedbymakingthefollowingchangestothenormal"HelloWorld"example.CheckintheNiosIISoftwareDevelopersManualforamorecomplete*description.IntheSWApplicationproject(small_hello_world):*-IntheC/C++Buildpage*-SettheOptimizationLevelto-Os*InSystemLibraryproject(small_hello_world_syslib):-IntheC/C++Buildpage*-SettheOptimizationLevelto-Os*-DefinethepreprocessoroptionALT_NO_INSTRUCTION_EMULATIONThisremovessoftwareexceptionhandling,whichmeansthatyoucannotruncodecompiledforNiosIIcpuwithahardwaremultiplieronacorewithoutathemultiplyunit.ChecktheNiosIISoftwareDevelopersManualformoredetails.*-IntheSystemLibrarypage:-SetPeriodicsystemtimerandTimestamptimertononeThispreventstheautomaticinclusionofthetimerdriver.-SetMaxfiledescriptorsto4Thisreducesthesizeofthefilehandlepool.*-CheckMainfunctiondoesnotexit-UncheckCleanexit(flushbuffers)Thisremovestheunneededcalltoexitwhenmainreturns,sinceitwon't.*-CheckDon'tuseC++ThisbuildswithouttheC++supportcode.*-CheckSmallClibraryThisusesareducedfunctionalityClibrary,whichlackssupportforbuffering,fileIO,floatingpointandgetch(),etc.ChecktheNiosIISoftwareDevelopersManualforacompletelist.*-CheckReduceddevicedriversThisusesreducedfunctionalitydriversifthey'reavailable.ForthestandarddesignthismeansyougetpolledUARTandJTAGUARTdrivers,nosupportfortheLCDdriverandyoulosetheabilitytoprogramCFIcompliantflashdevices.-CheckAccessdevicedriversdirectlyThisbypassesthedevicefilesystemtoaccessdevicedriversdirectly.Thiseliminatesthespacerequiredforthedevicefilesystemservices.ItalsoprovidesaHALversionoflibcservicesthataccessthedriversdirectly,furtherreducingspace.Onlyalimitednumberoflibcfunctionsareavailableinthisconfiguration.-UseALTversionsofstdioroutines:FunctionDescriptionalt_printfOnlysupports%s,%x,and%c(<1Kbyte)alt_putstrSmalleroverheadthanputswithdirectdriversNotethisfunctiondoesn'taddanewline.alt_putcharSmalleroverheadthanputcharwithdirectdriversalt_getcharSmalleroverheadthangetcharwithdirectdrivers*/#include"system.h”#include〃altera_avalon_pio_regs.h〃#include〃alt_types.h〃//intmain(void)__attribute__((weak,alias("alt_main")));intalt_main(void)//如果編譯不過,把此處改為intmain(void)試試{alt_u8led=0x00;alt_u8led1=0x10;alt_u8led2=0x08;alt_u8keyvalue=0;volatileinti,k=0,j=0;while(1){keyvalue=IORD_ALTERA_AVALON_PIO_DATA(PIO_INPUTS_BASE);switch(keyvalue&0x07){intj;case0x0:led=0x0f;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0xf0;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;break;case0x1:led=0x55;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=~0x55;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;break;case0x2:led=0x03;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;for(k=0;k<3;k++)led=led<<2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;}break;case0x3:led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1<<1;led2=led2>>1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1<<1;led2=led2>>1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1<<1;led2=led2>>1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;if(led==0x81){Ied1=led1>>1;led2=led2<<1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1>>1;led2=led2<<1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1>>1;led2=led2<<1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led1=led1>>1;led2=led2<<1;led=led1|led2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;}led1=0x10;led2=0x08;break;case0x4:j=0;while(j<5){led=0x18;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x24;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x42;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x81;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x42;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x24;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0x18;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;j++;}j=0;while(j<5){led=0x03;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;for(k=0;k<3;k++){led=led<<2;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;}j++;}j=0;while(j<5){led=0x0f;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=0xf0;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;j++;}j=0;while(j<5){led=0x0f;led=0x55;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;led=~0x55;IOWR_ALTERA_AVALON_PIO_DATA(PIO_LED_BASE,led);i=0;while(i<2000000)i++;j++;}break;}}return0;六、數(shù)據(jù)處理及結(jié)果分析驗證性實驗實驗了跑馬燈的功能。設(shè)計性實驗實現(xiàn)了用按鍵控制8個LED燈的閃爍狀態(tài),燈的狀態(tài)如下:燈分為左右兩部分交替閃爍。燈分為奇數(shù)號和偶數(shù)號燈兩部分交替閃爍。循環(huán)從左至右間隔(兩盞燈一組)跑動顯示;從中間開始向兩側(cè)依次點亮,從兩側(cè)向中間依次點亮。當(dāng)判斷開關(guān)狀態(tài)為00時,LED為左右兩部分交替閃爍。當(dāng)判斷開關(guān)狀態(tài)為01時,LED為奇數(shù)號和偶數(shù)號兩部分交替閃爍。當(dāng)判斷開關(guān)狀態(tài)為10時,LED為循環(huán)從左至右間隔(兩盞燈一組)跑動顯示(程序段led=led*2為LED亮燈右移)。當(dāng)判斷開關(guān)狀態(tài)為11時,LED為從中間開始向兩側(cè)依次點亮,從兩側(cè)向中間依次點亮。七、實驗小結(jié)1、熟悉了QuartusII、SOPCBuilder、NiosIIIDE的基本操作;2、了解了SOPC的開發(fā)流程,基本掌握NiosII軟核的定制流程;3、掌握了NiosII軟件的開發(fā)流程和軟件的基本調(diào)試方法。實驗名稱:Linux操作系統(tǒng)實驗實驗時間:2016.5.19一、實驗?zāi)康氖煜inux開發(fā)環(huán)境,學(xué)會基于S3C2410的Linux開發(fā)環(huán)境的配置和使用。使用Linux的arm-linux-gcc編譯,使用基于NFS方式的下載調(diào)試,了解嵌入式開發(fā)的基本過程。二、實驗儀器設(shè)備硬件:ARM9嵌入式實驗平臺、PC機(jī)。軟件:PC機(jī)操作系統(tǒng)UbuntuLINUX9.0+MINICOM+ARM-LINUX開發(fā)環(huán)境。三、實驗原理實驗利用Linux操作系統(tǒng),做字符顯示。四、實驗內(nèi)容1、驗證實驗硬件連接確保ARM9實驗系統(tǒng)電源未開啟下,用鑷子輕輕地將撥碼開關(guān)S100的第二個撥到ON(朝上)。在CON400處插入SMC卡(金屬面朝下)。實驗系統(tǒng)CON500處插入網(wǎng)線,網(wǎng)線另一端連接到電腦。232串口線連接到UART0處,另一端連接到電腦。連接電源。電源適配器插頭連接到220V,另一端連接到實驗箱上CON800處。實驗箱上電源開關(guān)S800撥到“1”。電腦開機(jī),選擇“Ubuntu”,啟動到Linux操作系統(tǒng)下。點擊桌面上方的places->HomeFolder,進(jìn)入cxsys目錄,雙擊workdir,在該目錄下新建“myhello.c文件”,創(chuàng)建方法:在該窗口空白處點擊鼠標(biāo)右鍵,選擇“Create->Document->EmptyFile”,然后命名該文件“myhello.c”,如下圖所示。雙擊打開該文件,用C語言編輯,實現(xiàn)打印輸出“Hello,自己的學(xué)號名字”。(4)打開終端,在桌面左上角點擊Application->Accessories->Terminal。輸入minicom命令,然后回車,運行。(5)在實驗平臺dev/shm目錄下創(chuàng)建nfs目錄。按“Ctrl+c”,然后回車。輸入cddev/shm,進(jìn)入shm目錄下。在該目錄下創(chuàng)建nfs目錄,輸入mkdirnfs。輸入ls目錄查看命令,可以看到上一步驟創(chuàng)建的nfs目錄。(6)輸入掛接(mount)命令:mount-tnfs-onolock:/home/cxsys/NFS_SHARE/dev/shm/nfs,把nfs目錄掛接到PC機(jī)上home/administrator/NFS_SHARE目錄。(7)查看掛接是否成功??梢韵瓤截愖约翰襟E(3)新建的myhello.c文件到PC機(jī)上home/cxsys/NFS_SHARE目錄下,輸入:cdnfs進(jìn)入nfs目錄,然后回車,再輸入ls命令,如果看到所列文件和PC機(jī)上home/cxsys/NFS_SHARE目錄下的myhello.c文件,說明掛起成功。顯示nfs目錄下的文件,可以看到。(8)另外再打開終端窗口,輸入cdworkdir/,進(jìn)入workdir目錄。(9)設(shè)置交叉編譯的環(huán)境變量,指定編譯工具的路徑exportPATH=/home/cxsys/YF2410/2.95.3/bin:$PATH。(10)輸入arm-linux-gcc-omyhellomyhello.c,編譯myhello.c的文件,生成可執(zhí)行文件。(11)在cxsys/workdir目錄下把生成的可執(zhí)行文件hello復(fù)制到cxsys/NFS_SHARE下。(12)查看可執(zhí)行文件hello在實驗平臺上的運行結(jié)果,切換到最開始打開的終端窗口,輸入./hello。2、設(shè)計性實驗(1)輸入ls/dev/test/命令,查看設(shè)備驅(qū)動??梢钥吹阶址O(shè)備驅(qū)動名稱為0raw,該驅(qū)動在初始化時存入10個數(shù)據(jù),供應(yīng)用程序使用。(2)輸入~$gedit~/workdir/Char_dev.c,查看并閱讀底層驅(qū)動程序Char_dev.c,~為/home/administrator/。(3)編輯應(yīng)用程序yourtest.c,輸入設(shè)計的代碼。(4)交叉編譯應(yīng)用程序.(5)把編譯生成的目標(biāo)文件拷貝到nfs_share里。(6)運行程序,輸出數(shù)據(jù)。五、實驗數(shù)據(jù)#include<stdio.h>intmain(intargc,char**argv){printf("hello!\n");}六、數(shù)據(jù)處理及結(jié)果分析驗證性實驗中,輸出“hello”七、實驗小結(jié)熟悉了Linux開發(fā)環(huán)境,學(xué)會了基于S3C2410的Linux開發(fā)環(huán)境的配置和使用。并使用Linux的arm-linux-gcc編譯,使用基于NFS方式的下載調(diào)試,掌握了嵌入式開發(fā)的基本過程。實驗名稱:DSP實驗名稱:DSP控制步進(jìn)電機(jī)實驗實驗時間:2016.5.26一、實驗小結(jié)1、學(xué)習(xí)DSP外部中斷的使用;掌握DSP中斷向量表的劃分。2、了解匯編和C混合編程以及IO空間操作等基本DSP編程技巧。二、實驗儀器設(shè)備PC機(jī)一臺,SZDSPF型開發(fā)實驗平臺一套三、實驗原理1、中斷向量表實驗使用的DSP為TMS320VC5416,DSP的中斷向量表如表3.1所示。
表31DSP中斷向量表NAMETRAP/1NTRNUMBER間locationDECIMALHEXPHIOWTYFUNCTIOW晦SINTH0001RcmIJimUwruntfwftwiXT-NMi,5r4T16D42Nmn姑新1相仍t&m中1S?T172g做rri^fTupll#17SIMTia3120CSolhmfftsmjptm's*<ri94ie10SoftwnntHTupE#1ESIHT3}52014SoMararrtBmjptfZCB3418SaftwnrrtmupCfQ1l3WT2272B1CSofhwisrrtBmjptffZZSMT23B323d女IbwHrvlfmjpl<23SWT2H924ScrfrwrtSIWT25ID4D2311ScIbwHrrtamjpt11442CSIMT27124B30Salt*由hmenuptJ271352&jfr*nrtntcn^pt心SIHT29w5633ntBmjptf?9153CSofhwE5IWTT]16g■UJ3E>1emalit9efintem4>tK:1FTTSinn17踣444EiIbtuMuhtiHbEmj||)i*14T215INT21372曲SEMwralitMfintenMtV?TINTSIST319784CTimerinterruptRINTO,SINT4nBO1McflSP5HCPPWnmfTbpI:sWTO.3H752184gMtflSPtotanwiimeffupi(derauin)RIMT^.SIMTl?22網(wǎng)sMtfiSP#2rrtprvpl^mJt;MHTZStn?23925CwMcflSP£2IrarrmHimemjpt(der^jHi檢引皿24常411r、1prnluwirtcfin#峙HiNTSiNrre251D06412HPImerrup、1按鍵與顯示B104681SMpSSP朝recsvrftIett中MHT1,5lNTnZ71D36C14McBSP?1trar^ihnerrumrdsrajh)〒實驗采用CPLD(EPM7128).?給DSP擴(kuò)展了一個"I/O口(:地址為C00I)h),來初完成bDSP:對I/OI—IDMAC5.SIHT132311616□Fi4Acriarnei5區(qū)電瑚科剩忒對數(shù)碼管的操作,DSP通過IO方式對數(shù)碼管送:攵據(jù),一高8位D8?D15數(shù)據(jù)為數(shù)碼管的位碼,低8位D7?D0數(shù)據(jù)為數(shù)碼管的段碼。同時,CPLD(EPM7128)給DSP擴(kuò)展了一個I/O口(地址為C001h),來完成DSP對讀所按鍵鍵值。實驗采用鍵盤中斷,當(dāng)有鍵(任意一個鍵)按下時,給DSP一個中斷信號(INT2),DSP通過I/O端口(地址為C001h)讀鍵值,讀取鍵值后由數(shù)碼管顯示出來。其中“鍵1”對應(yīng)數(shù)據(jù)D8位,“鍵2”對應(yīng)數(shù)據(jù)D9位……“鍵8”對應(yīng)數(shù)據(jù)D15位。數(shù)碼管模塊原理圖如下:SM1和SM2為兩個四位一體的8段共陰數(shù)碼管,右邊為位碼的第一位。
LED圖2.Z3數(shù)碼官模塊原理國暗箱用羊Vj-Ud—匹14-3JI2,13.13、步進(jìn)電機(jī)工作原理LED圖2.Z3數(shù)碼官模塊原理國暗箱用羊Vj-Ud—匹14-3JI2,13.1電機(jī)驅(qū)動方式可以米用雙四拍(AB—BC—CD—DA—AB)方式,也可以米用單四拍(A—B—C—D—A)方式,或單、雙八拍(A—AB—B—BC—C—CD—D—DA—A)方式。各種工作方式的時序圖如下:(高電平有效)雙四拍方式DAABBCCDDA實驗可通過DSP的I/O方式來控制電機(jī)的運轉(zhuǎn),CPLD(EPM7128)給DSP擴(kuò)展了一個I/O口。在來完成對步進(jìn)電機(jī)的控制。DSP的I/O方式下,將DSP的經(jīng)過電平轉(zhuǎn)換的四位數(shù)據(jù)線D5?D2送往步進(jìn)電機(jī)模塊的鎖存器,信號再經(jīng)過隔離和驅(qū)動后對四相(A、B、C、D)步進(jìn)電機(jī)控制。DSP對步進(jìn)電機(jī)控制的I/O訪問地址為C004h。四、實驗內(nèi)容1、驗證性實驗(1)硬件連接:“設(shè)置模塊”SW1中“A”和“C”將設(shè)置為“1”;DSP仿真器的USB接口連接USB線到PC機(jī),JTAG接口連接到實驗箱SZ-5416模塊上SZ-JTAG接口。將實驗箱上的電源模塊開關(guān)“MS2”、“MS4”按下,打開機(jī)箱電源(在機(jī)箱右側(cè)船型開關(guān))(2)(注意:必須先做步驟(1))參考附錄2"CCS的使用參考步驟”,在CCS下,建立工程文件,把驗證性實驗的所有源程序(cmd文件與c程序文件)加載到該工程中,編譯、鏈接,鏈接后生成OUT文件,把該目標(biāo)文件通過JTAG下載到實驗箱中,全速運行程序,依次按鍵1—8,觀察數(shù)碼管的顯示。2、設(shè)計性實驗在CCS下建立一工程文件調(diào)試自己編寫程序(或者直接修改驗證實驗C程序)并運行、下載目標(biāo)文件到實驗箱中,驗證設(shè)計程序。附錄2:一、建立工程新建一個工程,Project->New。在所示窗口中點擊Location,選擇建立工程的存放文件夾,在Project中輸入工程名。新建文件File->New->SourceFile。保存文件File->Save,若是C程序,文件以.c保存,若是匯編程序文件以.asm保存。添加文件到工程(如下圖所示),單擊工程,點擊鼠標(biāo)右鍵,選擇Addfiles……。(cmd文件通過同樣的方式添加)。在彈出的窗口中,選擇所要添加文件的類型(若是cmd文件,“文件類型”選擇“l(fā)inkerCommandFile(*.cmd)”)。編譯/執(zhí)行程序(1)選擇Project->RebuidAll或工具欄的相應(yīng)按鈕。(2)編譯成功后,選擇File->LoadProgram,選擇編譯生成的可執(zhí)行程序*.out。(3)選擇Debug->Run或工具欄中的相應(yīng)圖標(biāo)。五、實驗數(shù)據(jù)#pragmaCODE_SECTION(vect,"vect")unsignedint*pmem=0;#defineIMR*(pmem+0x0000)#defineIFR*(pmem+0x0001)#definePMST*(pmem+0x001d)#defineSWCR*(pmem+0x002b)#defineSWWSR*(pmem+0x0028)#defineCLKMD*(pmem+0x0058)ioportunsignedportc001;//鍵盤地址ioportunsignedportc000;//數(shù)碼顯示地址ioportunsignedportc004;intkey=1,n=0;〃數(shù)據(jù)線的高8位是位碼,低8位是段碼voidcpu_init()/*初始化DSP*/{asm("ssbxintm");asm("ssbxxf");//總清零PMST=0xe8;SWWSR=0x7fff;SWCR=0x0001;IMR=0x010c;IFR=0xffff;CLKMD=0x1000;asm("rsbxxf");//打開數(shù)據(jù)口asm("rsbxintm");}voiddelay10ms(){inti,j,k;for(i=0;i<50;i++)for(j=0;j<20;j++)for(k=0;k<20;k++);}voidmain(){cpu_init();while(1){if(key==1){portc004=0x30;delay10ms();portc004=0x18;delay10ms();portc004=0x0c;delay10ms();portc004=0x06;delay10ms();portc004=0x03;delay10ms();}if(key==2){portc004=0x30;delay10ms();portc004=0x03;delay10ms();portc004=0x06;delay10ms();portc004=0x0c;delay10ms();portc004=0x18;delay10ms();}if(key==3){while(n<5){delay10ms();n++;}}}}interruptvoidkeyint0()//鍵盤測試{inta;a=portc001;a=a&0xff00;if(a!=0xff00){delay10ms();a=portc001;a=a&0xff00;switch(a){case0xfe00:portc000=0x013f;key=1;asm("nop");break;case0xfd00:portc000=0x0206;key=2;asm("nop");break;case0xfb00:portc000=0x045b;key=3;asm("nop");break;}}}voidvect(){asm(".ref_c_int00”);asm(".ref_keyint0");asm("b_c_int00");/*reset*/asm("nop");asm("nop");asm("rete");/*nmi*/asm("nop");asm("nop");asm("nop");asm("r
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 行政管理專業(yè)知識擴(kuò)展試題及答案
- 拓寬執(zhí)業(yè)藥師考試知識面的重要性與試題答案
- 安全三級教育培訓(xùn)課件
- 教學(xué)課件:直流-交流變換器原理與應(yīng)用
- 碧波蕩漾人家情課件
- 行政管理??普Z文考點分析試題及答案
- 臨床病例分析2025年試題及答案
- 海的呼喚 - 課件設(shè)計
- 行政法學(xué)的評估標(biāo)準(zhǔn)及試題及答案
- 主管護(hù)師常識考察試題及答案解析
- 上海2025年上海交通大學(xué)醫(yī)學(xué)院招聘72人筆試歷年參考題庫附帶答案詳解
- GB/T 45135-2024鈦合金板材超塑成形和擴(kuò)散連接件通用技術(shù)規(guī)范
- 臨床內(nèi)鏡下粘膜剝離術(shù)(ESD)護(hù)理要點及健康教育
- 【含聽力9英一?!亢戏适惺裆絽^(qū)2024年中考一模英語
- 人有遠(yuǎn)近情有親疏-《差序格局》說課稿 2024-2025學(xué)年統(tǒng)編版高中語文必修上冊
- 保利拍賣行合同模板
- 小學(xué)一年級數(shù)學(xué)計算題共10087題
- 開發(fā)綠色建筑材料的研究與應(yīng)用
- DB22T 2004-2014 空氣甲醛現(xiàn)場檢測儀
- 國家建設(shè)部110號文件《住宅室內(nèi)裝飾裝修管理辦法》
- 第五課+弘揚勞動精神、勞模精神、工匠精神【中職專用】中職思想政治《職業(yè)道德與法治》高效課堂(高教版2023·基礎(chǔ)模塊)
評論
0/150
提交評論