Android深度探索(卷1)HAL與驅動開發第八章讀書筆記

來源:互聯網
上載者:User

標籤:

通過蜂鳴器的實現原理,實現一個完整的蜂嗚器驅動,可以開啟和關閉蜂鳴器. PWM驅動的實現方式不同於LED驅動, PWM 驅動將由多個檔案組成。這也是大多數 Linux 驅動的標準實現方式.

剛開始是LED驅動的代碼重用,Linux 驅動的代碼重用有很多種方法。可以採用標準 C程式的方式。將要重用的代碼放在其他 的檔案 (在標頭檔中聲明〉中。 如果要使用某些功能, include 相應的標頭檔即可〈這種方式稱為 靜態重用〉。也可以使用另外一種動態重用的方式,也就是一個 Linux 驅動可以使用另外←個 Linux 驅動中的資源(函數、變數、宏等)。接下來講強行卸載Linux驅動的內容,本節的方法只能卸載自於異常情況而導致的 Linux 驅動模組無法卸載 的情況。

情況 1:白 初始化函數崩潰

情況 2: 卸載函數被阻塞

蜂鳴器驅動蜂鳴器驅動的原理蜂鳴器也稱為 PWM (脈衝寬度調製〉,基本原理是通過脈衝來控制蜂鳴器的開啟和停止。實現蜂鳴器驅動測試蜂鳴器驅動

PWM 驅動與LED驅動的原理相似,只要會了一種實驗,另一種也會明白。但是其中的代碼需要認真編寫,理解啟動並執行相關步驟

通過有I/O命令可以開啟和停止PWM,PWM 驅動由3 個檔案組成: pwm.c, pwm_fun.h 、pwm_fun.c。

pwm.c 是驅動主程式。

pwm_fun.h 引用了相應的標頭檔,以及定義了一些宏。

pwm_fun.c 檔案則包含了開啟和停止PWM的兩個函數( pwm_start 和pwm_stop )。

運行之後從Makefile 檔案的內容可以看出,

1,首先將pwm.c 和pwm_fun.c 檔案編譯成pwm.o和pwm_fun.o,

2,然後再將這兩個*.o檔案連結成pwm_driver.o,

3,最後產生pwm_driver.ko 。

接下來測試蜂鳴器驅動,首先進入/root/drivers/ioctl 目錄, 執行build礎指令檔編譯和上傳ioctl 檔案〈如果啟動多個Android 裝置,要選擇上傳到S3C6410 開發板。在測試PWM 驅動之前,先要按照上一節的方法編譯和安裝PWM 驅動,然後進入開發板終端的Idata/local 目錄, 輸入開啟和關閉PWM的明令 。由於ioctl 命令必須要求輸入I/O命令的參數,但PWM 驅動未使用I/O 命令參數。所以ioctl 最後一個命令列參數可以任意輸入。執行上面的命令後,如果輸出(# . / ioctl /dev/pwm_dev 1 0)的資訊,並且PWM. 可以正常發出尖叫聲,說明PWM 驅動測試成功。

 

PWM

Linux代碼的重用:

在標頭檔中載入即可使用到原來所有的功能,還有動態方式就是一個驅動使用另一個驅動的資源。

對於像蜂鳴器這樣的實驗,它的內部檔案有很多,所有要有很多的原始碼以用於妥善管理。

有多個檔案的話,module-y指定所有的檔案,然後將會產生一個build.sh指令碼,使用sh執行,使用dmesg查看日誌資訊。

代碼重用分為靜態和動態。靜態重用是產生.ko核心,動態重用是模組依賴,一個驅動使用另一個驅動模組裡匯出的符號。

重啟開發板或者模擬器.ko檔案就會自動消失。使用異常情況卸載:1.初始化函數卸載。2.卸載函數被阻塞

卸載一個驅動,需要輸入一堆命令查詢module結構體的首地址,安裝和下載force_kill_driver驅動。

蜂鳴器的驅動實現原理與LED基本相同,但是實現方式不同,因為PWM是由多個檔案組成的。

PWM基本原理是通過脈衝來控制蜂鳴器的開啟和停止。GPFCON只用了最高的兩位來控制PWM。

靜態函數結構體,PWM裝置檔案open函數,使用訊號量控制在同一時刻 只能開啟PWM裝置檔案,然後close函數釋放訊號量,ioctl()函數處理I/O命令,設定檔案裝置file_operation裝置,最後在最開 始初始化訊號量,移除訊號量。在pwm.h檔案PWM_IOTCL_START開啟,PWM_IOTCL_STOP停止,這裡在Linux底層驅動中有詳 解,產生.ko檔案,編譯成功。

測試蜂鳴器一般使用I/O命令的參數,可以正常發聲。

Android深度探索(卷1)HAL與驅動開發第八章讀書筆記

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.