Linux下hexdump命令除錯event驅動

2021-09-30 20:27:13 字數 3521 閱讀 3169

hexdump: 檢視檔案的內容,比如二進位制檔案中包含的某些字串,通常用來除錯驅動用

描述:

我們以event1為例,當我們insmod掛載了鍵盤驅動後,出現乙個event1裝置,

此時沒有按鍵按下,所以event1裡面的資料是沒有的,那麼資料又是從來**來?

通過鍵盤驅動的read函式,若有按鍵按下,就會上傳按鍵資料給使用者層hexdump

因為鍵盤驅動的input_handler 是:evdev_handler

所以鍵盤驅動的read函式是:evdev_handler->evdev_fops->evdev_read

進入evdev_read()函式,如下圖所示:

evdev_event_to_user()這個函式從字面上來看,顯然就是用來上傳給使用者層的函式,其中buffer是函式引數,指向使用者層,

所以資料就是event.

我們來看看event的結構體:input_event

struct input_event ;
把 time裡的成員展開如下:

struct input_event ;
所以我們hexdump除錯任何輸入子系統event xx驅動時,有資訊就會列印上面資料

1.除錯鍵盤驅動

(鍵盤驅動**:

以按開發板的按鍵 key_l,為例(因為資料是從低到高列印的,所以資料是反的):

# hexdump /dev/event1     //按鍵鍵盤驅動

/*按下時:*/

//hexdump序列號 秒 微妙 鍵盤事件 code=key_l value=1(按下)

07c6 0000 faa2 000b 0001 0026 0001 0000

//hexdump序列號 秒 微妙 同步事件 code value=0

07c6 0000 faac 000b 0000 0000 0000 0000

/*鬆開時:*/

//hexdump序列號 秒 微妙 鍵盤事件 code=0x26 value=0(鬆開)

07c6 0000 cf67 000d 0001 0026 0000 0000

//hexdump序列號 秒 微妙 同步事件 code value=0

07c6 0000 cf70 000d 0000 0000 0000 0000

2.除錯觸控螢幕驅動
(觸控螢幕驅動**: )

/dev/event0            //觸控螢幕驅動

# hexdump /dev/event0

//hexdump序列號 秒 微妙 絕對座標事件 code=abs_x x座標值

0412 0000 6ef0 000c 0003 0000 0239 0000

//hexdump序列號 秒 微妙 絕對座標事件 code=abs_y y座標值

0412 0000 6f08 000c 0003 0001 01ae 0000

//hexdump序列號 秒 微妙 絕對座標事件 code=壓力 壓力值

0412 0000 6f0c 000c 0003 0018 0001 0000

//hexdump序列號 秒 微妙 鍵盤事件 code=觸控按鍵 value=1(按下)

0412 0000 6f10 000c 0001 014a 0001 0000

//hexdump序列號 秒 微妙 同步事件

0412 0000 6f13 000c 0000 0000 0000 0000

//hexdump序列號 秒 微妙 絕對座標事件 code=壓力 壓力值

00000b0 023b 0000 872d 000c 0003 0018 0000 0000

//hexdump序列號 秒 微妙 鍵盤事件 code=觸控按鍵 value=0(鬆開)

00000b0 0412 0000 1f5b 000d 0001 014a 0000 0000

//hexdump序列號 秒 微妙 同步事件

00000c0 0412 0000 1f70 000d 0000 0000 0000 0000

也可以使用getevent 命令,用於獲取 input 輸入事件,比如獲取按鍵上報資訊、獲取觸控螢幕上報資訊等。
示例:

格式輸出為event type、event code、event value

比如 ev_key 330  0    表示:   按鍵事件的btn_touch觸控按鍵(ox14a) 鬆開了(0)

ev_abs     1  72   表示:    絕對座標事件的abs_y(1)座標位於72

這些定義都在input.h裡,比如ev_abs的code有:

linux-hexdump命令除錯event驅動—詳解(13) - nqian -

Linux下的命令

管理員 普通使用者 pwd 顯示當前檔案全路徑 date 顯示系統當前日期和時間 who 顯示當前已登入的所有使用者名稱 cal 顯示日曆 uname r m,i,v 顯示當前系統作業系統資訊 wc l 行數,w字數,c位元組數 統計字數 clear 清屏 檔案操作touch 新建檔案mkdir 新...

Linux下解壓命令

tar 解包 tar xvf filename.tar 打包 tar cvf filename.tar dirname 注 tar是打包,不壓縮!gz解壓1 gunzip filename.gz 解壓2 gzip d filename.gz 壓縮 gzip filename tar.gz 和 tgz...

linux下基礎命令

cp複製命令 cp命令複製檔案從乙個位置到另一位置。如果目的地檔案存在,將覆複寫該檔案 如果目的地目錄存在,檔案將複製到該目錄下 目錄不會被複寫 語法 語法是 cp 命令開關 source dest cp options source directory cp options target dire...