本章主要講了蜂鳴器的實驗原理,通過完整的蜂鳴器驅動控制蜂鳴器的開啟與關閉。蜂鳴器是s3c410開發板上帶的乙個硬體裝置。可以通過向暫存器寫入特定的值來控制蜂鳴器發出尖叫聲。蜂鳴器也稱為pwm脈衝寬度調製,基本原理就是通過脈衝來控制蜂鳴器的開啟和停止。pwm驅動的實現方式不同於led驅動,pwm驅動由多個檔案組成,這也是大多數linux驅動的標準實現方式。
linux驅動的**重用分為靜態重用和動態重用,靜態重用是**級的重用,就是將需要重用的**和使用這些**的文件放在一起編譯,最終生成乙個可執行的檔案或程式庫(.ko和.so等)。**共享就是在乙個驅動模組裡使用另乙個驅動模組裡被匯出的符號(常量、變數、函式等)。
強行解除安裝linux驅動
情況1:初始化函式崩潰
由於linux驅動模組的初始化函式進行了某些操作而崩潰,從而導致初始化函式無法正常返回,這種情況變現是當前linux驅動模組沒用被任何其他的linux驅動模組使用,但卻顯示已經被應用了一次
這種情況關鍵是引用計數器的值和引用者不一致。只需要將當前的linux驅動模組的引用計數器清零即可,修改計數器可以使用下面兩個函式
情況2:解除安裝函式被阻塞
在使用rmmod命令解除安裝linux驅動時,系統會呼叫解除安裝函式,只有解除安裝函式成功返回時,linux驅動才會被解除安裝,如果解除安裝函式被阻塞,rmmod命令也會被阻塞,也就是說永遠不會執行到解除安裝linux驅動模組的**,這種情況的表現是一執行rmmod命令就會停在那不動了,永遠也不會返回到系統的操作提示符
這種情況的問題根源就是解除安裝函式,只要將原來的解除安裝函式替換成乙個空的解除安裝函式即可
總之,兩者情況都要解決乙個不可迴避的問題,就是要獲取表示要解除安裝的linux驅動模組的module結構體指標。
第八章 讀書筆記
第八章 讓開發板發出聲音 蜂鳴器驅動 一.linux驅動的 重用。linux驅動的 重用有很多種方法。可以採用標準的c程式的方式,將要重用的 放在其他的檔案中。也可以使用另外一種動態重用的方式,也就是喲個linux驅動可以使用另外乙個linux驅動中的資源。二.強行解除安裝linux驅動。如果編寫的...
第八章讀書筆記
第8 章 重用 1,靜態重用 將要重用的 放在其他的檔案中,如果要使用某些功能,include 相應的標頭檔案即可 2,動態重用 乙個 linux 驅動可以使用另外乙個 linux 驅動中的資源 解除安裝由於異常情況而導致的linux 驅動模組無法解除安裝的情況 1.初始化函式崩潰 將當前的linu...
accelerated c 讀書筆記 第八章
宣告 本讀書筆記僅表達對書的理解,如有任何錯誤歡迎指出 前言 文章的前幾章是介紹標準庫抽象的程式,從這章開始,作者開始介紹自己定義的抽象 說白了就是自己定義一些函式 資料型別等等 一 泛型函式 定義時不明確引數型別,使用時進行賦予,可以根據輸入變化 1 泛型函式是通過模版函式實現的 猜測 它定義了具...