國嵌攻略 139 輸入子系統原理分析

2022-07-20 23:39:19 字數 685 閱讀 5466

輸入子系統核心架構

1.裝置驅動層

2.核心層

3.事件層

4.使用者空間

輸入裝置註冊

1.拿裝置id去匹配handler的id,找到對應的handler(事件處理者)

最常用的handler是evdev_handler,相應的匹配表在evdev_ids中。如果裝置的id在事件驅動的id表中,那麼兩者就匹配起來了。按鍵驅動在註冊的時候,沒有設定id,所以是乙個隨機值。在evdev_ids匹配表中能匹配所有的id,所以按鍵驅動就和evdev_handler建立起了聯絡。

2.呼叫handler的connect函式建立連線,建立裝置檔案。但是註冊字元裝置是在核心子系統初始化的時候,並且只建立了乙個字元裝置。以後建立的多個裝置檔案都與這乙個字元裝置連線起來。

事件上報

1.當事件出現時,會找到handler中的event函式來處理

2.event函式主要做的事是打包input_event結構,儲存到buffer

3.當使用者程式從裝置檔案中進行系統呼叫時,首先開啟的是輸入子系統初始化時實現的file_operations,但是這個這個操作集裡面只有open呼叫。在該呼叫中,原有的file_operations會被handler中的file_operations替換,這樣呼叫的就是匹配的handler的操作集合。然後把儲存在buffer中的input_evnet結構交給使用者空間。

國嵌攻略 111 硬體訪問技術

硬體訪問實質 驅動程式控制裝置,主要是通過訪問裝置內的暫存器來達到控制目的的,因此我們討論如何訪問硬體,就成了如何訪問這些暫存器。訪問流程 1.位址對映 在linux系統中,無論是核心程式還是應用程式,都只能使用虛擬位址,而晶元手冊中給出的硬體暫存器位址或ram位址都是實體地址,無法直接使用。因此我...

國嵌攻略 161 USB匯流排介紹

usb發展史 usb universal serial bus 通用序列匯流排,是一種外部匯流排標準。用於規範電腦與外部裝置的連線和通訊。usb是在1994年底由英特爾 康柏 ibm microsoft等多家公司聯合提出的。自1996年堆出後,已經成功替代了串列埠和並口。成為當今個人電腦和大量智慧型...

國嵌攻略 159 SPI子系統

spi 子系統架構 1.spi core核心 用於連線spi客戶驅動和spi主控制器驅動,並且提供了對應的註冊和登出的介面。2.spi controller driver主控制器驅動 用來驅動spi控制器。3.spi protocol drvier客戶驅動 用來驅動spi裝置 spi控制器驅動分析 ...