Android系統移植與驅動開發——第七章——LED驅動,android驅動開發

來源:互聯網
上載者:User

Android系統移植與驅動開發——第七章——LED驅動,android驅動開發

LED驅動的實現原理

 

編寫LED驅動:

測試LED驅動之前需要用USB資料線串連開發板,然後開啟電源,成功啟動之後,執行build.sh指令檔編譯和安裝LED驅動,順利則會自動連接

如果有多個裝置檔案將會在後來使用,則要通過指標變數cdev.list.prev和cdev.list.next指標變數串連,從而形成雙向連結。

在建立裝置檔案時要注意:

Device_count表示建立裝置檔案的個數

Alloc_chrdv_region函數的第2個參數表示分配的起始裝置號。

卸載Linux驅動的裝置檔案,需要依次調用device_destory、class_destory和unregister_chrdev_region方法

ARM控制LED的有三個寄存器,三個寄存器在記憶體中都有虛擬位址,向這些地址寫入資料後,處理器會使用演算法將虛擬位址映射為物理地址,並根據物理地址將資料寫入相應的硬體連接埠。

驅動的裝置檔案。

控制LED有兩種方式:

通過字串控制LED—>file_operation.write

通過I/O命令控制LED—>file_operation.ioctl

LED驅動的模組參數

Moule_param_array(name,type,nump,perm)宏定義為LINUX驅動指定數組形式的模組參數。Name表示參數名,type表示數組元素的資料類型,nump表示儲存數組長度的變數的指標,perm表示參數檔案的存取權限。

 

編寫測試I/O控制命令的通用程式,與裝置檔案互動的方式:直接寫入字串資料和I/O控制命令。直接向裝置檔案寫入資料可以使用命令列方式來完成,也可以通過write函數來完成,但I/O命令只能通過ioctl發出。

一個完整的Linux驅動主要是由內部處理和硬體互動兩部分組成,其中內部處理主要是指Linux驅動的裝載、卸載、與裝置檔案相關的動作處理以及商務邏輯、與硬體互動主要是指通過函數與硬體中的寄存器進行資料互動

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在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.