驅動基本入門介紹

2021-06-16 21:57:33 字數 1799 閱讀 8093

基本外設驅動的開發其實都是很簡單的,只要抓住幾點,你就可以去自己除錯驅動了。(我現在說的都是入門級的,可能說的地方有不對的,如果有不對的,虛心接受)

1.大概了解一些外設的基本工作流程(而非工作原理)

2.了解一般驅動程式是怎麼進入核心的過程以及載入過程

3.了解驅動程式的基本架構

4.結合現實與核心基本知識去讓硬體動起來

5.最終是實現把從硬體獲得的資料上報的介面

只要大概了解這幾個,抓住了中心,一般外設驅動是沒有問題的。

觸控螢幕是在現在用到的最多的乙個人機互動的工具,是面向人的第乙個介面。

一般的觸控螢幕是電阻屏和電容屏的。電阻屏是靠壓力來確定座標的,壓力有大有小,輕了點不中,中了可能又會點飛了,互動性方面不好,所以現在一般都採用電容屏的,電容屏是靠人手上的帶電體來接觸電容屏產生電流,以感知座標的位置。驅動方面對於這個不太關心,我就是解釋一下,嘿嘿,囉嗦了。。。

驅動關心的有哪些呢?

1.大概了解一些外設的基本工作流程(而非工作原理)

點一下觸控螢幕的表面,這時候屏的ic就要把當前點的位置的座標傳輸出來 。座標是我們最終要得到的東西,現在作為開發人員,你要知道的是怎麼點一下,觸控ic就知道了呢,那就是ic上的「中斷」了,硬體工程師都知道在連線ic與cpu的時候,首先要接的就是中斷腳,vcc,gnd,這個中斷腳的作用就是這個作用,接下來就是把資料傳出來了,那靠什麼傳給cpu呢,這就是i2c了,這個不用我說,經典的兩根線--sda和scl,這樣大家就清楚了,touch是這樣的:點一下屏,觸發一下中斷,中斷腳會發訊息給cpu,cpu利用i2c匯流排把資料接過來並上傳上去,看吧,其實驅動就是這樣的東西。

2.了解一般驅動程式是怎麼進入核心的過程以及載入過程

例如現在驅動叫 touch.c,把它放在kernel/drivers/input/touchscreen/下,分別在kconfig和makefile裡加好,關於這個步驟我在關於編譯linux kernel裡已經說過 了。

3.了解驅動程式的基本架構

module_init(touch_init)-->touch_init-->regster_driver()--->touch_driver--->touch_probe---->

一般字元裝置的驅動程式的架構都是很簡單的,最下面是module_init和module_exit,module_init()裡放了乙個函式指標t——touch_init,這個指標指向乙個名一樣的函式,這個函式的功能就是用regster_driver把這個驅動註冊到核心裡,touch_driver裡又有一些touch_probe的探測函式來探測匯流排上的裝置資源的,這個暫時不介紹,只要知道,這個函式就是要與核心中已經分配給它的乙個資源對號起來,連線的暗號就是乙個名字就行了。這個probe函式就是做一些硬體初始化如把裝置位址與i2c匯流排上已村在對應上,申請中斷之類的。這時候硬體初始化已就好了,現在你一摸屏,中斷就會檢測到資訊了,說明有資料出來,然後再利用幾個函式把讀出來的資料上報就行了。

4.結合現實與核心基本知識去讓硬體動起來

這涉及到核心中的中斷知道,工作佇列,定時器,要結合 生活去理解,首先中斷肯定就是來乙個中斷上報乙個座標的資料,這個都能理解。工作佇列也要結合中斷來說,中斷的實現是與系統效率結合的,實時性是使用者最要求的,所以中斷分上半部和下半部,上半部就是接受中斷,下半部 就是處理中斷的結果,其實就是讀i2c中的資料,並上報給應用程式處理,定時器的作用就是防抖動,大家也都知道。這樣touch的驅動就整個與核心 一起動作起來了。

5.最終是實現把從硬體獲得的資料上報的介面

這一部分其實也簡單,驅動開發人員不需要關心,因為linux核心 已經為我們做好了介面了,我們只要套用就行了。

以上就是寫乙個簡單的touch驅動所要做的事了。

裝置驅動基本格式介紹

struct file operations struct module owner 模組所有者指標,一般初始化為this modules loff t llseek struct file loff t,int 用來修改檔案當前的讀寫位置,返回新的位置loff t 為乙個 長偏移 ssize t ...

jMeter的基本介紹和入門

1.介紹 jmeter是apache組織的開放源 專案,能做功能測試和效能測試。它能夠對http和ftp伺服器進行壓力和效能測試,也可以對任何資料庫進行同樣的測試 通過jdbc 還能以多種形式展現測試結果。我們初學者往往一看到很多的理論都很不耐煩,一般都喜歡通過舉例子才會激起興趣,有想往下學習的慾望...

Html快速入門之基本介紹

1.13 路徑 1.14 錨點定位 1.15 base標籤 1.16 預格式化文字標籤 1.17 特殊字元 1.18 html5發展之路 1.19 什麼是xhtml 1.20 html和xhtml區別 1.21 標籤 1.22 demo 瀏覽器核心 備註ie trident firefox geck...