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

LED驅動的實現原理算法

 

編寫LED驅動:數組

測試LED驅動以前須要用USB數據線鏈接開發板,而後打開電源,成功啓動以後,執行build.sh腳本文件編譯和安裝LED驅動,順利則會自動鏈接函數

若是有多個設備文件將會在後來使用,則要經過指針變量cdev.list.prev和cdev.list.next指針變量鏈接,從而造成雙向連接。測試

在建立設備文件時要注意:ui

Device_count表示創建設備文件的個數命令行

Alloc_chrdv_region函數的第2個參數表示分配的起始設備號。指針

卸載Linux驅動的設備文件,須要依次調用device_destory、class_destory和unregister_chrdev_region方法blog

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驅動的裝載、卸載、與設備文件相關的動做處理以及業務邏輯、與硬件交互主要是指經過函數與硬件中的寄存器進行數據交互

相關文章
相關標籤/搜索