linux驅動程式:控制發光二極體

lucky嗷嗷發表於2016-06-05

 

  一個完整的Linux驅動包括內部處理和互動兩部分。其中內部處理主要是指Linux驅動的裝載、解除安裝、與裝置檔案的相關動作處理以及業務邏輯等。與硬體互動主要是指通過iowrite32、ioread32等函式與硬體中的暫存器進行資料互動。對於大多數的Linux驅動來說,需要直接與硬體互動。而控制發光二極體該Linux驅動用來控制開發板上的4個Led燈。通過向Linux驅動傳送資料可以控制Led燈的開關。

  雖然Linux驅動直接與硬體打交道,但是並不是直接向硬體中的記憶體寫資料,而是與本機中的I/O記憶體進行互動。Linux核心提供了多個與I/O記憶體互動的函式,Linux核心的記憶體管理模組負責同步I/O記憶體與硬體中的資料。每一個連線Linux的硬體在I/O記憶體中都會有對映地址。

編寫Led燈驅動的步驟如下:

1、 建立LED驅動裝置檔案:

(1)   使用cdev-init函式初始化cdev;

(2)   指定裝置號;

(3)   使用cdev_add函式將字元裝置新增到核心中的字元裝置陣列中;

(4)   使用class_creat巨集建立struct class;

(5)   使用device_create函式建立裝置檔案;

2、  解除安裝Led驅動的裝置檔案

3、 設定暫存器和初始化led驅動

4、 控制led燈:

(1)   通過字串控制LED

(2)   通過I/O命令控制

5、 LED驅動的模組引數

6、 測試LED驅動

(1)   編寫測試I/O控制命令的通用程式;

(2)   使用NDK測試LED驅動;

(3)   使用Java測試LED驅動;

7、Led驅動移植

相關文章