1Android系统移植与驱动开发概述
1、Android系統架構分為四層,從下至上依次為Linux內核層,C/C++代碼庫、Android SDK API、應用程序,要熟悉每一層的內容以及功能;
2、Android移植分為應用移植和系統移植,系統移植的主要工作是移植Linux驅動和移植HAL,Android移植的基本原則是盡可能找到驅動和HAL的源代碼,在源代碼的基礎上修改要容易得多,如果實在找不到源代碼,只能從頭開始編寫。Android移植很大程度上是Linux內核移植,Linux內核移植主要是移植驅動程序,不同Linux版本的驅動程序不能通用,需要修改源代碼,并且要在新的Linux內核下重新編譯才可以運行在新的Linux內核版本下;
3、驅動開發與內核版本的依賴程度很高,所以做驅動開發之前,要明確Linux內核版本,目前Linux內核主要維護的三個版本是:Linux2.4、Linux2.6和Linux3.x;查看Linux系統內核版本的方法有2種:使用命令【uname -a】或者【cat /proc/version】;需要注意的是,/proc不是普通的文件系統,而是系統內核的映象,該目錄中的文件是存放在系統內核之中的,它以文件系統的方式為訪問系統內核數據的操作提供接口;
4、Linux內核版本好的組成:主版本號、次版本號、修訂版本號、微調版本號、為特定的Linux系統特別調校的描述;
5、要想學習好Linux驅動開發,要做到以下幾點:
(1)?? 準備一個自己熟悉的Linux操作系統,用于開發和測試Linux驅動;
(2)?? 準備一塊開發板;
(3)?? 學習GUN C;
(4)?? 學習相關硬件知識;
(5)?? 不斷地實踐;
6、Linux設備驅動的作用:對硬件進行抽象,降低應用程序與硬件的耦合度;
7、Linux設備分為:
(1)?? 字符設備:必須以串行順序依次進行訪問的設備;
(2)?? 塊設備:可以以任意順序進行訪問,以塊為單位進行操作;
(3)?? 網絡設備
8、任何的Linux驅動都有一個裝載函數(裝載驅動時調用)和一個卸載函數(卸載驅動時調用),裝載函數和卸載函數分別通過module_init和module_exit宏指定;
9、Linux驅動只與Linux內核有關,與Linux系統無關,只要使用相同的內核,驅動就可以通用;判斷內核是否相同的方法就是Linux內核版本號,只有組成內核版本號的五部分完全相同,才能說明兩個Linux系統的內核是相同的;
10、??????????? Android驅動與Linux驅動的區別就是Android增加了HAL,一般的Android驅動都會有對應的HAL,但也不是必須的,通過NDK可以直接訪問Linux驅動,但Google建議最好為Linux驅動編寫對應的HAL程序庫;
轉載于:https://www.cnblogs.com/mch0dm1n/p/5443202.html
創作挑戰賽新人創作獎勵來咯,堅持創作打卡瓜分現金大獎總結
以上是生活随笔為你收集整理的1Android系统移植与驱动开发概述的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Eclipse项目环境配置
- 下一篇: 【MySQL】Java对SQL时间类型的