建立LED驅動的設備文件數組
第1步:使用cdev_init函數初始化cdev函數
第2步:指定設備號。直接在代碼指定或動態分配學習
第3步:使用cdev_add函數將字符設備添加到內核中的字符設備數組中spa
第4步:使用class_create宏建立struct classblog
第5步:使用device_create函數建立設備文件接口
卸載LED驅動的設備文件字符串
須要依次調用device_destroy、class_destroy和unregister_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。
要想使用上述兩種方式控制LED。LED驅動必需要接收相應數據。若是經過字符串控制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/