关于linux驱动程序的学习
計算機總體的工作過程:
應用程序 -->調用系統API -->系統調用驅動程序中的方法 -->驅動程序驅動設備運行
如何理解調用系統API?
其實也就是讀寫文件,linux中所有東西都以文件的形式抽象化。文件我們可以分為兩種,普通文件和設備文件。
當你要打開普通文件時,你會調用系統的open()這個API,然后就可以對普通文件進行操作了。
當你要打開設備文件時,你也是得調用系統的open()這個API,但是操作系統識別到你要操作的是設備文件,于是該設備的驅動程序便會運行起來了!
所以以上可以簡化為:
應用程序 -->系統調用驅動程序中的方法 -->驅動程序驅動設備運行
所以當我們發明一個新硬件時,我們得寫出這個設備的驅動程序,然后再寫出這個設備的應用程序。
為什么平時我們生活中很少感受到這兩種東西呢?比如我們買的打印機、麥克風、監控設備。
那是因為這些東西系統都已經幫我們做好了,驅動裝好了,應用程序也有了,一般來說驅動更新的時候我們才會接觸到驅動。
如何寫驅動程序?
1.
驅動程序的目的在于向你的硬件設備發送該硬件設備支持的相關數據。
2.
驅動程序中的方法相當于一個接口,面向上層也就是應用程序的調用。一般來說函數名跟系統的API一樣,常見的功能函數有xxx_open()、xxx_wtire()
所以驅動程序主要就是一個程序,里邊包含一些相關功能的函數,等著被調用,感覺就是一個庫。
如何使用驅動程序?
你把驅動程序寫好了,先把它加載進你的計算機,也就是安裝一個模塊,然后就是向系統注冊了,注冊過程就是創建你這個驅動程序的結構體,包括包含的函數的指針,還有設備號列表。設備號列表就是說明你這個驅動程序支持哪些設備(每個設備都有設備號)。
注冊完成后你還得創建一個設備文件,設備文件就是設備的抽象化,把你對硬件設備的讀寫抽象成你對這個設備文件的讀寫。也就是說,設備文件創建好后,你可以通過這個設備文件對設備進行實際操作了。
設備文件如何跟設備還有驅動程序聯系起來呢?
指定設備號,創建一個設備文件時需要指定設備號。
當一個驅動程序出現在計算機時,就要向計算機匯報,然后進行注冊,當一個硬件設備出現在計算機中時,也要向計算機進行匯報,然后進行注冊。同時計算機會匹配驅動程序與硬件設備,匹配成功后,硬件設備就可以進行工作了,就可以等著應用程序進行調用了。
應用程序如何調用驅動程序?
應用程序不需要考慮調用驅動程序,驅動程序只是中間過程,應用程序只需要考慮調用設備,也就是讀寫設備文件就可以了!
剩下的就是操作硬件的代碼了,應該就是寄存器的操作了,以后有時間再看。
純屬本人理解:如有錯誤敬請指出!
參考:
在linux下寫一個簡單的驅動程序
驅動程序開發的步驟
總結
以上是生活随笔為你收集整理的关于linux驱动程序的学习的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 关于How to do/What to
- 下一篇: 在linux中进程表示的是,Linux进