編寫hello【全國一等獎(jiǎng)】_第1頁
編寫hello【全國一等獎(jiǎng)】_第2頁
編寫hello【全國一等獎(jiǎng)】_第3頁
編寫hello【全國一等獎(jiǎng)】_第4頁
編寫hello【全國一等獎(jiǎng)】_第5頁
已閱讀5頁,還剩6頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

嵌入式技術(shù)應(yīng)用編寫hello_test測試程序模塊三:嵌入式網(wǎng)關(guān)之驅(qū)動程序編寫學(xué)習(xí)目標(biāo)一、測試程序hello_test的框架二、測試程序hello_test源碼分析

三、測試程序和驅(qū)動程序hello的Makefile

四、測試程序和驅(qū)動程序hello的使用當(dāng)一個(gè)驅(qū)動編寫和編譯完成之后,下一步就是測試該驅(qū)動。測試的方法很多,對于不需要訪問硬件的驅(qū)動可以直接在Linux中測試,對于需要訪問硬件的驅(qū)動就需要在相應(yīng)的硬件上測試。本次課所用的驅(qū)動程序?yàn)樯弦淮握n的hello_driver驅(qū)動程序。一、測試程序hello_test的框架●包括所需要的頭文件?!翊蜷_驅(qū)動程序所對應(yīng)的設(shè)備文件,如下所示。fd=open("/dev/hello_driver",O_RDWR);●調(diào)用驅(qū)動的ioctl()函數(shù),比如ioctl(fd,0,NULL)?!耜P(guān)閉打開的設(shè)備文件,比如close(fd)。二、測試程序hello_test源碼分析接下來需要編寫一個(gè)能使用驅(qū)動程序中ioctl()控制函數(shù)的測試程序。#include<stdio.h> //頭文件#include<stdlib.h>......intmain(){intfd;fd=open(“/dev/hello_driver”,O_RDWR);if(fd<0){printf("/dev/hello_driveropenfail!\n");

return-1;//打開失敗,返回-1}

ioctl(fd,0,NULL);//調(diào)用驅(qū)動里的ioctl()函數(shù)sleep(1);ioctl(fd,1,NULL);sleep(1);//延時(shí)1S

close(fd);//關(guān)閉打開的設(shè)備文件return0;}上述ioctl(fd,0,NULL)中cmd參數(shù)為0,執(zhí)行驅(qū)動中ioctl()函數(shù)對應(yīng)cmd為0的語句;而ioctl(fd,1,NULL)中cmd參數(shù)為1,就執(zhí)行驅(qū)動中ioctl()函數(shù)對應(yīng)cmd為1的語句。三、測試程序和驅(qū)動程序hello的MakefileTARGET=hello_testCC=arm-linux-gccKERNELDIR?=/opt/EmbedSky/linux-/PWD:=$(shellpwd)all:$(TARGET)modules$(TARGET): $(CC)-o$(TARGET)$(TARGET).c

KERNELDIR、PWD、obj-m這些在前面已經(jīng)介紹過了,下面來看看Makefile中與測試程序的編譯有關(guān)的語句。對這條語句中的變量TARGET做相應(yīng)的替換可得到如下語句。modules: $(MAKE)-C$(KERNELDIR)M=$(PWD)modulesclean: rm-rf*.o*~core.depend.*.cmd*.ko*.order*.mod.c*.symvers.tmp_versions$(TARGET)obj-m:=hello_driver.o$(CC)-o$(TARGET)$(TARGET).carm-linux-gcc-ohello_test

hello_test.c這條語句表示使用arm-linux-gcc交叉編譯器將hello_test.c編譯成可在開發(fā)板上運(yùn)行的程序hello_test。四、測試程序和驅(qū)動程序hello的使用4.1編譯驅(qū)動程序和測試程序4.2下載驅(qū)動程序和測試程序使用SecureCRT或Minicom下載,詳見前面下載驅(qū)動的內(nèi)容。#make4.3加載驅(qū)動程序和添加設(shè)備節(jié)點(diǎn)用insmod命令加載驅(qū)動時(shí)顯示:其中252是系統(tǒng)為hello_driver驅(qū)動分配的主設(shè)備號。再使用mknod命令為hello_driver驅(qū)動添加設(shè)備節(jié)點(diǎn),其中252和0分別為hello_driver設(shè)備節(jié)點(diǎn)的主設(shè)備號和次設(shè)備號。Hello!/dev/hello_driver252#mknod/dev/hello_driverc2520這時(shí)輸入ls/dev命令便可看到hello_driver設(shè)備節(jié)點(diǎn)。

溫馨提示

  • 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)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論