安卓深度探索(卷一)第七章

來源:互聯網
上載者:User

標籤:

led驅動的實現原理儘管 Linux 驅動直接與硬體打交道,但並不是 Linux 驅動直接向硬體中的記憶體寫資料 而是與原生 ν0 記憶體( νO Memory ,位於核心空間〉進行互動。所謂 1/0 記憶體是通過各種介面( PC I 、USB 、藍芽、乙太網路口 等〉串連到主機( PC 、手機〉的硬體〈網卡、音效卡、網路攝影機等〉在主機記憶體中的映射。

 

編寫LED驅動

第一步:使用 cdev_init 函數初始化cdev

 

第二步:指定裝置號

  1. 直接在代碼中指定(寫入程式碼〉
  2. 動態分配

第三步:使用 cdev_add 函數將字元裝置添加到核心中的字元裝置數組中

第四步:使用 clas at 宏建立 struct class

第五步:使用 ev ce ::.. crea 函數建立裝置檔案

 

為linux驅動指定一個模組參數需要使用 module _param C name, type, perm )宏。其中 name示參數名, type 表示參數類型, perm 表示讀/寫入權限。

使用 module param arra nam , type, nump, perm )宏可以為 Linux 驅動指定數組形式的模組參數,其中oam~ 表示參數名, type 表示數組 素的資料類型, OWUJ) 表示儲存數組長度的變繭的指鐘, nn 參數檔案的存取權限。 下面為 LED 驅動增加 個數群組類型的模組參數。

LED 驅動有兩種與裝置檔案互動的方式 直接寫入字串資料和 νo 控制命令.直接向裝置文寫入資料可以使用命令列方式來完成,也 以通過 write 函數來完成。但 I/0 控制命令只能通過iocll 函數發出。為了以後測試方便,本節編寫了 個通用的發送 命令的程式.

NDK 程式測試和可執行程式測試差不多。只不過 ND Library 可以被 Java 程式調用,而Android 系統中的可執行程式在非 root 狀態下是無法直接被調用的。所以如果想在 Android 應用程式中測試 inux 最直接的方法就是使用 NDK.

LED驅動移植

如果需要將 LED 驅動安裝到 Linux 3. x核心的系統上( Android 4.x 及以上版本的系統〉,首先要擷取linux 3.x 核心的原始碼〈至少是 inux 核心的標頭檔〉,然後在新核心下重新編譯即可。如果需要將 LED 驅動安裝到 Linux 3. 核心的系統上( Android 4.x 及以上版本的系統〉,首先要擷取 linux 3.x 核心的原始碼〈至少是 inux 核心的標頭檔〉,然後在新核心下重新編譯即可。

安卓深度探索(卷一)第七章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.