i.MX6ULL終結者Linux INPUT子系統實驗執行測試
1 編譯驅動程式
和前面章節中驅動測試程式一樣需要一個Makefile檔案,只是將obj-m的值改為key_input.o,Makefile檔案內容如下:
KERNELDIR := /home/topeet/kernel/linux-imx-rel_imx_4.1.15_2.1.0_ga
CURRENT_PATH := $(shell pwd)
obj-m := key_input.o
build: kernel_modules
kernel_modules:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) modules
clean:
$(MAKE) -C $(KERNELDIR) M=$(CURRENT_PATH) clean
首先我們在終端輸入兩個命令(設定兩個環境變數):
export ARCH=arm
export CROSS_COMPILE=arm-linux-gnueabihf-
然後執行“make”命令編譯模組,編譯完成生成key_input.ko模組檔案。
2 編譯應用測試程式
輸入如下命令編譯應用測試程式:
arm-linux-gnueabihf-gcc -o key_input_test key_input_test.c
編譯完成後,會生成key_input_test可執行檔案。
3 執行測試
啟動開發板,將編譯好的key_input.ko模組檔案和key_input_test應用程式拷貝到/lib/modules/4.1.15目錄下(檢查開發板根檔案系統中有沒有“/lib/modules/4.1.15”這個目錄,如果沒有的話需要自行建立一下。開發板中使用的是光碟資料裡面提供的busybox檔案系統,光碟資料的“i.MX6UL終結者光碟資料\08_開發板系統映象\03_檔案系統映象\01_Busybox檔案系統”目錄下)。在載入驅動模組檔案之前,先看一下在/dev/input 目錄下都有哪些檔案,結果如圖3.1所示:
在/dev/input目錄下已經存在了不少的event事件,然後輸入下面命令載入模組:
depmod
modprobe key_input
驅動載入成功後在來看一下在/dev/input 目錄下有哪些檔案,結果如圖 49.3.3.2所示:
可以看出,多了一個 event3 檔案,因此/dev/input/event3 就是我們註冊的驅動所對應的裝置檔案。然後key_input_test應用程式通過讀取/dev/input/event3裝置檔案來獲取輸入事件資訊,測試命令如下:
./key_input_test /dev/input/event3
按下開發板上的按鍵KEY0,有圖 3.3現象:
可以看出,當我們按下或者釋放開發板上的按鍵以後都會在終端上輸出相應的內容,提示我們哪個按鍵按下或釋放了,在 Linux 核心中 KEY_0 為 11。
另外,我們也可以不用 key_input_test應用程式來測試驅動,可以直接使用 hexdump 命令來檢視 /dev/input/event3 檔案內容,輸入如下命令:
hexdump /dev/input/event3
按下開發板上的按鍵KEY0,有如圖 3.4現象:
上圖就是 input_event 型別的原始事件資料值,採用十六進位制表示,這些原始資料的含義如下:
/*****************input_event 型別********************/
/* 編號 */ /* tv_sec */ /* tv_usec */ /* type */ /* code */ /* value */
0000000 1029 5d5e 2c16 0008 0001 000b 0001 0000
0000010 1029 5d5e 2c16 0008 0000 0000 0000 0000
0000020 1029 5d5e 761f 000a 0001 000b 0000 0000
0000030 1029 5d5e 761f 000a 0000 0000 0000 0000
type 為事件型別,EV_KEY 事件值為 1,EV_SYN 事件值為 0。因此第 1 行表示 EV_KEY 事件,第 2 行表示 EV_SYN 事件。code 為事件編碼,也就是按鍵號,KEY_0 這個按鍵編號為 11,對應的十六進位制為 0xb,因此第 1 行表示 KEY_0 這個按鍵事件,最後的 value 就是按鍵值,為 1 表示按下,為 0 的話表示鬆開。
綜上所述,上圖中的原始事件值含義如下:
第 1 行,按鍵(KEY_0)按下事件。
第 2 行,EV_SYN 同步事件,因為每次上報按鍵事件以後都要同步的上報一個 EV_SYN 事
件。
第 3 行,按鍵(KEY_0)鬆開事件。
第 4 行,EV_SYN 同步事件,和第 2 行一樣。
相關文章
- i.MX6ULL終結者Linux檔案系統的構建BusyBox構建根檔案系統Linux
- sqlprofile繫結執行計劃實驗測試SQL
- i.MX6ULL終結者Linux檔案系統的構建根檔案系統目錄介紹Linux
- i.MX6ULL終結者Linux併發與競爭原子操作Linux
- JVM 的執行子系統JVM
- Linux命令執行時間測試Linux
- 驅動Driver-input子系統
- Linux系統執行命令方法Linux
- 如何測試Linux命令執行時間?Linux
- 好奇: windows10+都可以執行多個linux子系統了,為什麼不支援執行多個windows子系統呢?WindowsLinux
- JVM學習(五) -執行子系統JVM
- 在Linux中,如何進行系統效能的峰值測試?Linux
- linux系統中怎麼中執行jar包?linux系統中執行jar包的方法LinuxJAR
- Android Input子系統-含例項原始碼Android原始碼
- 【北京迅為】i.MX6ULL終結者I2C操作原理分析
- i.MX6ULL終結者主頻和時鐘配置例程程式設計程式設計
- 軟體測試---單元、整合、系統、驗收測試
- dotnet 測試在 Linux 系統上的 Environment.GetFolderPath 行為Linux
- Python 執行 Linux 作業系統命令PythonLinux作業系統
- postman的批次執行:用於多條介面測試用例批次執行,輸出介面測試測試結果Postman
- 如何弄清 Linux 系統執行何種系統管理程式Linux
- Linux系統透過CrossOver執行windows系統exe程式LinuxROSWindows
- 測試平臺系列(74) 測試計劃定時執行初體驗
- JVM-虛擬機器執行子系統JVM虛擬機
- 實驗總結分析報告 ——從系統的角度分析影響程式執行效能的因素
- Linux系統的七個執行級別Linux
- 檢視正在執行的 Linux 系統版本Linux
- 軟體驗收測試和系統測試的區別點
- linux系統中 SElinux安全子系統Linux
- Linux中斷子系統Linux
- linux系統程式設計CP小測試Linux程式設計
- Linux驅動之GPIO子系統和pinctrl子系統Linux
- 實驗三--測試
- 內網系統自動化測試的,內網的機器執行的測試結果,可以通過什麼方式通知到測試人員內網
- httprunner(9)執行測試用例的方式總結HTTP
- Linux系統入門實操經驗分享Linux
- 汽車電子測試專案管理系統-TPA專案管理
- Linux作業系統執行級別介紹Linux作業系統