資源描述:
《實驗環(huán)境的搭建和GPIO實驗》由會員上傳分享,免費在線閱讀,更多相關(guān)內(nèi)容在教育資源-天天文庫。
1、實驗環(huán)境的搭建和GPIO實驗1.實驗?zāi)康?)熟悉Linux開發(fā)環(huán)境。2)掌握S5PV210內(nèi)部相關(guān)寄存器的操作方法,最終實現(xiàn)對外部設(shè)備的控制。3)熟悉在Linux裸機(jī)環(huán)境下的C語言編程。4)熟悉S5PV210的GPIO編程。2實驗內(nèi)容學(xué)習(xí)并編程實現(xiàn)ARM的GPIO程序,控制LED燈閃爍。3實驗設(shè)備1)硬件:S5PV210教學(xué)實驗箱、PC機(jī);2)軟件:PC機(jī)操作系統(tǒng)Windows98(2000、XP)+VMwareworkstation+Ubuntu12開發(fā)環(huán)境。使用arm‐linux‐gcc4.4.1編譯
2、代碼。4基礎(chǔ)知識4.1環(huán)境搭建1、虛擬機(jī)的安裝及Ubuntu的安裝與設(shè)置請按照光盤資料《OK210軟件手冊》說明操作。2、OK210開發(fā)板系統(tǒng)燒寫請按照光盤資料《OK210軟件手冊》說明操作。4.2循環(huán)點亮led燈的原理1、查看原理圖OK210開發(fā)板提供了4個LED,其原理圖S5PV210_B.pdf下:在s5pv210core_v1(20130422).pdf中對應(yīng)的ARM管腳由原理圖可知,LEDD1,D2,D3,D4使用的S5PV210端口為MP04_4,5,6,7。2、程序講解1>Init.s.gl
3、obal_start_start:blmain//halt:bhalt.global關(guān)鍵字用來讓一個符號對鏈接器可見,可以供其他鏈接對象模塊使用。.global_start讓_start符號成為可見的標(biāo)識符,這樣鏈接器就知道跳轉(zhuǎn)到程序中的什么地方并開始執(zhí)行。BL指令引起處理器轉(zhuǎn)移到"main.c"處開始執(zhí)行。2>MakefileCFLAGS:=-Wall-O2-fno-builtin-ffreestanding-nostdlibled_wtd.bin:init.omain.oarm-linux-ld-Tt
4、ext0x0-oled.elf$^arm-linux-objcopy-Obinaryled.elfled.binarm-linux-objdump-Dled.elf>led_elf.dis%.o:%.Sarm-linux-gcc$(CFLAGS)-o$@$<-c%.o:%.carm-linux-gcc$(CFLAGS)-o$@$<-cclean:rm*.o*.elf*.bin*.disforlinx–f1.執(zhí)行arm-linux-gcc$(CFLAGS)-o$@$<-c命令將當(dāng)前目錄下的init.s和ma
5、in.c文件編譯成.O文件2.執(zhí)行arm-linux-ld-Ttext0x0-oled.elf$^命令將.O文件鏈接稱elf文件。3.執(zhí)行arm-linux-objcopy-Obinaryled.elfled.bin命令將elf文件抽取為.bin文件。4.執(zhí)行arm-linux-objdump-Dled.elf>led_elf.dis命令,將elf文件反匯編后保存在dis文件中。3>main.c#defineMP0_4CON(*(volatileunsignedlong*)0xE0200340)#defi
6、neMP0_4DAT(*(volatileunsignedlong*)0xE0200344)#defineGPD0CON(*(volatileunsignedlong*)0xE02000A0)#defineMP0_4PUD(*(volatileunsignedlong*)0xE0200348)voidclock_init(void);voidputc(charc);voiduart_init(void);voidputout(char*c);intprint(constchar*fmt,...);stat
7、icvoidDelay(intcount){volatileinti,j=0;volatilestaticintloop=800000000/10000;for(;count>0;count‐‐)for(i=0;i8、0x11110000;//設(shè)置高4為管腳為輸出方式MP0_4PUD=(0x55<<16)&MP0_4PUD
9、;//設(shè)置為下拉方式clock_init();uart_init();for(i=4;i<8;i++)//關(guān)閉led{MP0_4DAT
10、=(1<