Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android系統教程 >> Android開發教程 >> 開發可統計單詞個數的Android驅動程序(上)

開發可統計單詞個數的Android驅動程序(上)

編輯:Android開發教程

Android本質上是基於Linux內核的系統,也就是說Android就是一種Linux操作系統。只不過大多數時候都會運行在ARM架構的設備上,例如,Android手機、平板等。Android驅動實際上就是Linux驅動,只是這裡使用Android深度探索(卷1):安裝C/C++交叉編譯環境 介紹的交叉編譯器將Linux驅動編譯成了ARM架構的,所以驅動可以安裝在Android模擬器、Android手機(需要root)或平板上(這些設備 都要使用給予ARM架構的CPU),當然,使用傳統的GCC也可以編譯成X86架構的驅動(並不需要修改代碼),這樣也可以在Ubuntu  Linux上安裝Linux驅動。

 本文及後面幾篇文章主要介紹如何利用Android模擬器和S3C6410開發板開發給予ARM架構的Linux驅動,當然,測試的環境是 Android,而不是我們通常使用的Ubuntu  Linux等X86架構的系統。最後會介紹通過多種方式測試這個驅動,測試方法包括命令行、NDK、Android程序(Java代碼)等,當然,在最最 後還會介紹如果將驅動嵌入到LInux內核中,這樣Android在啟動是就自動擁有了這個驅動。

想學習Android底層開發的童鞋可以通過本文完全掌握開發基於Android的LInux驅動的完整步驟。在《Android深度探索(卷1):HAL與驅動開發》隨書光盤上有完整的實驗環境(VMWare Ubuntu Linux12.04LTS),如果嫌自己配置麻煩,可以從光盤中復制該虛擬環境,虛擬文件太大(3.6G),傳不上去,只能發文章了!

一、Linux驅動到底是個什麼東西

對於從未接觸過驅動開發的程序員可能會感覺Linux驅動很神秘。感覺開發起來會很復雜。其實這完全是誤解。實際上Linux驅動和普通的LinuxAPI沒有本質的區別。只是使用Linux驅動的方式與使用Linux API的方式不同而已。

在學習Linux驅動之前我們先來介紹一下Linux驅動的工作方式。如果讀者以前接觸過Windows或其他非Unix體系的操作系統,最好將它們的工作方式暫時忘掉,因為這些記憶會干擾我們理解Linux底層的一些細節。

 Linux驅動的工作和訪問方式是Linux的亮點之一,同時受到了業界的廣泛好評。Linux系統將每一個驅動都映射成一個文件。這些文件稱為設備文件 或驅動文件,都保存在/dev目錄中。這種設計理念使得與Linux驅動進行交互就像與普通文件進行交互一樣容易。當然,也比訪問LinuxAPI更容 易。由於大多數Linux驅動都有與其對應的設備文件,因此與Linux驅動交換數據就變成了與設備文件交換數據。例如,向Linux打印機驅動發送一個 打印命令,可以直接使用C語言函數open打開設備文件,再使用C語言函數ioctl向該驅動的設備文件發送打印命令。

當然,要編寫Linux驅動程序還需要更高級的功能。如向打印機驅動寫入數據時,對於打印機驅動來說,需要接收這些被寫入的數據,並將它們通過PC的並 口、USB等端口發送給打印機。要實現這一過程就需要Linux驅動可以響應應用程序傳遞過來的數據。這就是Linux驅動的事件,雖然在C語言裡沒有事 件的概念,但卻有與事件類似的概念,這就是回調(callback)函數。因此,編寫Linux驅動最重要的一步就是編寫回調函數,否則與設備文件交互的 數據將無法得到處理。圖6-1是應用軟件、設備文件、驅動程序、硬件之間的關系。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved