Andriod深度探索—HAL與驅動開發 第八 章 讀書筆記and一點心得

Linux驅動的代碼重用併發

     Linux 驅動的代碼重用有不少種方法。能夠採用標準C 程序的方式。將要重用的代碼放在其餘的文件(在頭文件中聲明〉中。若是要使用某些功能, include 相應的頭文件便可(這種方式稱爲靜態重用)。也可使用另一種動態重用的方式,也就是一個Linux 驅動可使用另外←個Linux驅動中的資源(函數、變量、宏等〉。函數

強行卸載Linux驅動spa

     若是編寫的Ljnux 驅動程序在邏輯上是正確的,那麼能夠正常裝載和卸載,但在某些狀況下,可能某些程序會出現異常狀況。這時Linux 驅動可能會沒法正常卸載。指針

狀況一:初始化函數崩潰blog

     因爲Linux 驅動模塊的初始化函數(經過module_init 宏指定的函數〉進行了某些操做而崩潰,從而致使初始化函數沒法正常返田二這種狀況的表現是當前Linux 驅動模塊沒用被任何其餘的Linux 驅動模塊使用,但卻顯示已經被引用了一次。資源

狀況二:卸載函數被阻塞  博客

   在使用rmmod 命令卸載Linux 驅動時,系統會調用卸載函數(跑過module_exit 宏指定的函數),只有卸載函數成功返回肘, Linux 驅動纔會被翻載。若是卸載函數被阻塞(多是死循環、併發等狀況引發的阻塞), rmmod 命令也會被阻塞. 也就是說永遠不會執行到卸載Linux 驅動模塊的代碼。這種狀況的表現是一執行rmmod 命令就會停在那不動了,永遠也不會返回到系統的操做提示符。it

     無論是哪一種狀況,都須要解決一個不可迴避的問題,就是要獲取表示要卸載的Linux 驅動模塊的module 結構體指針。由於struct module 表示了Linux 驅動的相關信息.  變量

蜂鳴器(PWM)驅動module

蜂鳴器也稱PWM,基本原理是經過脈衝來控制蜂鳴器的打開和中止。本節經過I/O命令來打開和中止PWM的。

心得:PWM驅動與LED驅動的實現流程相似,可能還要簡單一些。本章演示瞭如何將一個Linux驅動分紅多個實現文件,使用了比較簡單的PWM驅動。這章主要講解了Linux驅動經常使用的代碼重用方式。此外還介紹了一種強行卸載Linux驅動的方法。經過這種方法,就能夠免去不斷重啓機器的痛苦了。

本人博客地址:http://home.cnblogs.com/u/jie617530/

相關文章
相關標籤/搜索