一個完整的Linux驅動包括內部處理和交互兩部分。其中內部處理主要是指Linux驅動的裝載、卸載、與設備文件的相關動做處理以及業務邏輯等。與硬件交互主要是指經過iowrite3二、ioread32等函數與硬件中的寄存器進行數據交互。對於大多數的Linux驅動來講,須要直接與硬件交互。而控制發光二極管該Linux驅動用來控制開發板上的4個Led燈。經過向Linux驅動發送數據能夠控制Led燈的開關。數組
雖然Linux驅動直接與硬件打交道,可是並非直接向硬件中的內存寫數據,而是與本機中的I/O內存進行交互。Linux內核提供了多個與I/O內存交互的函數,Linux內核的內存管理模塊負責同步I/O內存與硬件中的數據。每個鏈接Linux的硬件在I/O內存中都會有映射地址。函數
編寫Led燈驅動的步驟以下:測試
一、 建立LED驅動設備文件:spa
(1) 使用cdev-init函數初始化cdev;內存
(2) 指定設備號;開發
(3) 使用cdev_add函數將字符設備添加到內核中的字符設備數組中;字符串
(4) 使用class_creat宏建立struct class;同步
(5) 使用device_create函數建立設備文件;it
二、 卸載Led驅動的設備文件內存管理
三、 設置寄存器和初始化led驅動
四、 控制led燈:
(1) 經過字符串控制LED
(2) 經過I/O命令控制
五、 LED驅動的模塊參數
六、 測試LED驅動
(1) 編寫測試I/O控制命令的通用程序;
(2) 使用NDK測試LED驅動;
(3) 使用Java測試LED驅動;
七、Led驅動移植