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

建立LED驅動的設備文件數組

1步:使用cdev_init函數初始化cdev函數

2步:指定設備號。直接在代碼指定或動態分配學習

3步:使用cdev_add函數將字符設備添加到內核中的字符設備數組中spa

4步:使用class_create宏建立struct classblog

第5步:使用device_create函數建立設備文件接口

卸載LED驅動的設備文件字符串

須要依次調用device_destroyclass_destroyunregister_chrdev_region方法博客

void device_destroy(struct class *class, dev_t devt)it

void class_destroy(struct class *cls)io

void unregister_chrdev_region(dev_t from, unsigned count)

控制LED

LED驅動能夠使用以下兩種方式控制LED

1.經過字符串控制LED

2.經過I/O命令控制LED

 要想使用上述兩種方式控制LEDLED驅動必需要接收相應數據。若是經過字符串控制LED須要使用file_operations.write函數。若是經過I/O命令控制LED,須要使用file_operations.ioctl函數。

移植Linux驅動有一條很是重要。就是在修改Linux驅動源代碼時,應儘可能不修改Linux驅動的接口。

本章主要學習了LED驅動,它是一個真正和硬件打交道的Linux驅動。雖然LED驅動並不複雜,只是控制了幾個LED,可是LED驅動已經包括了Linux驅動全部必要的部分。一個完整的Linux驅動主要由內部處理和硬件交互兩部分組成。其中內部處理主要是指Linux驅動的裝載、卸載、與設備文件相關的動做處理(讀寫設備文件、向設備文件發送I/O命令等動做)以及業務邏輯等。Linux驅動在不一樣的平臺的移植也是處理這兩部分。

 

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

相關文章
相關標籤/搜索