文章目錄 1 編譯驅(qū)動(dòng)程序 2 編譯應(yīng)用測(cè)試程序 3 運(yùn)行測(cè)試 1 編譯驅(qū)動(dòng)程序 和前面章節(jié)中驅(qū)動(dòng)測(cè)試程序一樣需要一個(gè)Makefile文件,只是將obj-m的值改為key_irq.o,Makefile文件內(nèi)容如下:
首先我們?cè)诮K端輸入兩個(gè)命令(設(shè)置兩個(gè)環(huán)境變量):
然后執(zhí)行“make”命令編譯模塊,編譯完成生成key_irq.ko模塊文件。 2 編譯應(yīng)用測(cè)試程序 輸入如下命令編譯應(yīng)用測(cè)試程序: arm-linux-gnueabihf-gcc -o key_irq_test key_irq_test.c 編譯完成后,會(huì)生成key_irq_test可執(zhí)行文件。 3 運(yùn)行測(cè)試 啟動(dòng)開發(fā)板,將編譯好的key_irq.ko模塊文件和key_irq_test應(yīng)用測(cè)試程序拷貝到/lib/modules/4.1.15目錄下(檢查開發(fā)板根文件系統(tǒng)中有沒(méi)有“/lib/modules/4.1.15”這個(gè)目錄,如果沒(méi)有的話需要自行創(chuàng)建一下。開發(fā)板中使用的是光盤資料里面提供的busybox文件系統(tǒng),光盤資料的“i.MX6UL終結(jié)者光盤資料\08_開發(fā)板系統(tǒng)鏡像\03_文件系統(tǒng)鏡像\01_Busybox文件系統(tǒng)”目錄下)。輸入下面命令加載模塊:
驅(qū)動(dòng)加載成功以后可以通過(guò)查看/proc/interrupts 文件來(lái)檢查一下對(duì)應(yīng)的中斷有沒(méi)有被注冊(cè)上,輸入如下命令:
可以看到KEY0 中斷已經(jīng)存在了,觸發(fā)方式為跳邊沿(Edge),中斷號(hào)為 49。
按鍵值獲取成功,并且不會(huì)有按鍵抖動(dòng)導(dǎo)致的誤判發(fā)生,說(shuō)明按鍵消抖工作正常。 在卸載驅(qū)動(dòng)之前需要先關(guān)閉key_irq_test應(yīng)用程序,使用“ps”命令查看key_irq_test進(jìn)程的PID號(hào),然后使用“kill xxx”殺死key_irq_test進(jìn)程。 卸載驅(qū)動(dòng)模塊文件命令: rmmod key_irq |