資料介紹
Android系統(tǒng)是Google推出的基于Linux內(nèi)核和Java架構(gòu)的操作系統(tǒng),在很短的時(shí)間內(nèi)已成為主流的手機(jī)操作系統(tǒng),并已逐步擴(kuò)展應(yīng)用到嵌入式系統(tǒng)、平板電腦和上網(wǎng)本上。它既有Linux系統(tǒng)所具有的硬件平臺(tái)可移植性,也因使用Java語言開發(fā)應(yīng)用程序帶來了應(yīng)用軟件只編寫一次即可在所有平臺(tái)運(yùn)行的巨大優(yōu)勢。Android雖然主要基于已有的技術(shù),但在體系結(jié)構(gòu)設(shè)計(jì)上有較大的創(chuàng)新。其主要設(shè)計(jì)目標(biāo)之一就是要使應(yīng)用程序和系統(tǒng)能獨(dú)立于具體的計(jì)算機(jī)體系結(jié)構(gòu)和硬件平臺(tái),表現(xiàn)在設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)上,對(duì)于已有的Linux標(biāo)準(zhǔn)設(shè)備驅(qū)動(dòng)程序可以直接繼續(xù)使用,只需為其增加應(yīng)用層JNI接口。但對(duì)于Linux沒有的非標(biāo)準(zhǔn)設(shè)備則提倡在Linux內(nèi)核中驅(qū)動(dòng)部分只做很少的接口工作,盡量把驅(qū)動(dòng)程序的主要處理放在Android的上層架構(gòu)中,即在應(yīng)用層實(shí)現(xiàn)。本文對(duì)Android系統(tǒng)的底層實(shí)現(xiàn)技術(shù)進(jìn)行深入的研究,包括Android的硬件抽象層和JNI技術(shù)實(shí)現(xiàn)等。并以S3C2440開發(fā)板上的LED燈設(shè)計(jì)顯示驅(qū)動(dòng)程序?yàn)槔?,提出了一種非標(biāo)準(zhǔn)硬件設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)和實(shí)現(xiàn)方案。
1 Android系統(tǒng)驅(qū)動(dòng)程序架構(gòu)
1.1 驅(qū)動(dòng)程序分層體系結(jié)構(gòu)
Android是基于Linux的,它使用了Linux內(nèi)核,但應(yīng)用程序使用Java語言開發(fā),所以應(yīng)用程序在調(diào)用設(shè)備驅(qū)動(dòng)時(shí)不能像一般的Linux應(yīng)用程序那樣直接使用系統(tǒng)調(diào)用,必須通過Java虛擬機(jī)的JNI的本地(Native)方法使用設(shè)備。另一方面,Android要成為一個(gè)通用性強(qiáng)的平臺(tái),必須加強(qiáng)它的可移植性。這也是在Android架構(gòu)添加一個(gè)硬件抽象層(HAL)的原因,目的是為設(shè)備的調(diào)用提供一個(gè)更高級(jí)的封裝圖1所示為Android驅(qū)動(dòng)程序架構(gòu)。
HAL Stub是以Linux共享庫(*.so)的形式存在,在整個(gè)驅(qū)動(dòng)架構(gòu)中,它是設(shè)備驅(qū)動(dòng)程序運(yùn)行在用戶空間的一部分,它向上為Dalvik虛擬機(jī)提供硬件設(shè)備的抽象接口,向下通過系統(tǒng)調(diào)用與Linux內(nèi)核中的驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)交互。在這個(gè)過程中HAL可以對(duì)驅(qū)動(dòng)程序的數(shù)據(jù)進(jìn)行處理,也就是說在Linux內(nèi)核中的驅(qū)動(dòng)程序部分只需要提供一個(gè)與硬件設(shè)備傳輸數(shù)據(jù)接口的功能,而其余具體的操作可以由HAL完成。
1.2 Android的硬件抽象層
Android的硬件抽象層HAL(Hardware Abstract Layer)在Android的架構(gòu)中是在庫這一層中,通過這一層,硬件廠商可以把部分設(shè)備的驅(qū)動(dòng)源碼封裝在這一層而不公開源代碼。
對(duì)圖1分析,設(shè)計(jì)HAL就是為了把應(yīng)用框架和Linux內(nèi)核分離出來,讓Android使用Linux內(nèi)核而又不完全依賴Linux內(nèi)核。當(dāng)然,驅(qū)動(dòng)程序并不是完全從Linux內(nèi)核中分離出來,一些基本的處理必須由內(nèi)核來完成,HAL只是分擔(dān)了Linux設(shè)備驅(qū)動(dòng)的部分功能,至于這部分的功能占驅(qū)動(dòng)程序功能的比例目前并沒有一個(gè)標(biāo)準(zhǔn)。
在Android系統(tǒng)發(fā)展過程中,HAL的實(shí)現(xiàn)也逐步有了一些變化,舊的HAL是一種模塊化的思想,通過共享庫的形式由Runtime在JNI時(shí)以函數(shù)調(diào)用方法調(diào)用,這種做法并沒有通過封裝,即上層應(yīng)用可以直接調(diào)用硬件。另外,這種方法可被多個(gè)進(jìn)程使用,映射到多個(gè)進(jìn)程空間中浪費(fèi)內(nèi)存資源。
現(xiàn)在HAL提出一種Stub的思想,HAL Stub是一種代理的概念,Stub同樣是以共享庫(*.so)格式存在,但上層應(yīng)用并不像加載動(dòng)態(tài)庫那樣調(diào)用Stub。這種HAL是由模塊與Stub結(jié)合而成,Runtime通過模塊提供的統(tǒng)一接口獲取并操作Stub。Stub向HAL提供操作的回調(diào)函數(shù),Runtime向HAL取得指定模塊的操作函數(shù)后,調(diào)用這些回調(diào)函數(shù)。這是一種間接函數(shù)調(diào)用的方式,HAL里包含了多個(gè)Stub。圖2為HAL Stib原理。
1 Android系統(tǒng)驅(qū)動(dòng)程序架構(gòu)
1.1 驅(qū)動(dòng)程序分層體系結(jié)構(gòu)
Android是基于Linux的,它使用了Linux內(nèi)核,但應(yīng)用程序使用Java語言開發(fā),所以應(yīng)用程序在調(diào)用設(shè)備驅(qū)動(dòng)時(shí)不能像一般的Linux應(yīng)用程序那樣直接使用系統(tǒng)調(diào)用,必須通過Java虛擬機(jī)的JNI的本地(Native)方法使用設(shè)備。另一方面,Android要成為一個(gè)通用性強(qiáng)的平臺(tái),必須加強(qiáng)它的可移植性。這也是在Android架構(gòu)添加一個(gè)硬件抽象層(HAL)的原因,目的是為設(shè)備的調(diào)用提供一個(gè)更高級(jí)的封裝圖1所示為Android驅(qū)動(dòng)程序架構(gòu)。
HAL Stub是以Linux共享庫(*.so)的形式存在,在整個(gè)驅(qū)動(dòng)架構(gòu)中,它是設(shè)備驅(qū)動(dòng)程序運(yùn)行在用戶空間的一部分,它向上為Dalvik虛擬機(jī)提供硬件設(shè)備的抽象接口,向下通過系統(tǒng)調(diào)用與Linux內(nèi)核中的驅(qū)動(dòng)程序進(jìn)行數(shù)據(jù)交互。在這個(gè)過程中HAL可以對(duì)驅(qū)動(dòng)程序的數(shù)據(jù)進(jìn)行處理,也就是說在Linux內(nèi)核中的驅(qū)動(dòng)程序部分只需要提供一個(gè)與硬件設(shè)備傳輸數(shù)據(jù)接口的功能,而其余具體的操作可以由HAL完成。
1.2 Android的硬件抽象層
Android的硬件抽象層HAL(Hardware Abstract Layer)在Android的架構(gòu)中是在庫這一層中,通過這一層,硬件廠商可以把部分設(shè)備的驅(qū)動(dòng)源碼封裝在這一層而不公開源代碼。
對(duì)圖1分析,設(shè)計(jì)HAL就是為了把應(yīng)用框架和Linux內(nèi)核分離出來,讓Android使用Linux內(nèi)核而又不完全依賴Linux內(nèi)核。當(dāng)然,驅(qū)動(dòng)程序并不是完全從Linux內(nèi)核中分離出來,一些基本的處理必須由內(nèi)核來完成,HAL只是分擔(dān)了Linux設(shè)備驅(qū)動(dòng)的部分功能,至于這部分的功能占驅(qū)動(dòng)程序功能的比例目前并沒有一個(gè)標(biāo)準(zhǔn)。
在Android系統(tǒng)發(fā)展過程中,HAL的實(shí)現(xiàn)也逐步有了一些變化,舊的HAL是一種模塊化的思想,通過共享庫的形式由Runtime在JNI時(shí)以函數(shù)調(diào)用方法調(diào)用,這種做法并沒有通過封裝,即上層應(yīng)用可以直接調(diào)用硬件。另外,這種方法可被多個(gè)進(jìn)程使用,映射到多個(gè)進(jìn)程空間中浪費(fèi)內(nèi)存資源。
現(xiàn)在HAL提出一種Stub的思想,HAL Stub是一種代理的概念,Stub同樣是以共享庫(*.so)格式存在,但上層應(yīng)用并不像加載動(dòng)態(tài)庫那樣調(diào)用Stub。這種HAL是由模塊與Stub結(jié)合而成,Runtime通過模塊提供的統(tǒng)一接口獲取并操作Stub。Stub向HAL提供操作的回調(diào)函數(shù),Runtime向HAL取得指定模塊的操作函數(shù)后,調(diào)用這些回調(diào)函數(shù)。這是一種間接函數(shù)調(diào)用的方式,HAL里包含了多個(gè)Stub。圖2為HAL Stib原理。
下載該資料的人也在下載
下載該資料的人還在閱讀
更多 >
- VxWorks操作系統(tǒng)下CompactPCI總線驅(qū)動(dòng)程序設(shè)計(jì)
- AN-0978: 分量處理器非標(biāo)準(zhǔn)視頻格式
- ADB驅(qū)動(dòng)程序安裝程序安卓編程驅(qū)動(dòng)免費(fèi)下載 32次下載
- 嵌入式Linux的中斷驅(qū)動(dòng)程序設(shè)計(jì) 3次下載
- 一種基于DaVinci DM6446的非標(biāo)準(zhǔn)VGA接口設(shè)計(jì)與實(shí)現(xiàn) 5次下載
- WinCE流驅(qū)動(dòng)程序設(shè)計(jì)概述 7次下載
- 基于WinCE下光電編碼器的驅(qū)動(dòng)程序設(shè)計(jì) 19次下載
- 基于Avalon總線的非標(biāo)準(zhǔn)以太網(wǎng)控制器IP核設(shè)計(jì)_薛毅 1次下載
- 油紙絕緣變壓器非標(biāo)準(zhǔn)極化譜的仿真研究_蔡金錠 1次下載
- 基于TinyOS的CC1100驅(qū)動(dòng)程序設(shè)計(jì) 13次下載
- 用ADC實(shí)現(xiàn)非標(biāo)準(zhǔn)方波信號(hào)的頻幅同測 44次下載
- VxWorks 可加載的PCI驅(qū)動(dòng)程序設(shè)計(jì)
- 連桿大頭薄壁瓦幾種非標(biāo)準(zhǔn)檢修方法的探討
- 嵌入式通信設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)標(biāo)準(zhǔn)化
- Linux中基于EP7312的LCD驅(qū)動(dòng)程序設(shè)計(jì)
- 怎么編寫Framebuffer驅(qū)動(dòng)程序 589次閱讀
- 解析PLC梯形圖程序設(shè)計(jì) 1609次閱讀
- 設(shè)計(jì)在非標(biāo)準(zhǔn)操作保戶MAX2140的內(nèi)部ESD二極管 448次閱讀
- ProfiNet輸入/輸出端的驅(qū)動(dòng)程序解析 3579次閱讀
- 米爾科技LINUX設(shè)備驅(qū)動(dòng)程序教程 2103次閱讀
- 什么是非標(biāo)自動(dòng)化設(shè)備及分類介紹 4.3w次閱讀
- POE供電優(yōu)缺點(diǎn)講解 非標(biāo)準(zhǔn)POE危害是什么? 7.5w次閱讀
- 淺談電腦驅(qū)動(dòng)程序的工作原理 詳解電腦驅(qū)動(dòng)程序意義 3w次閱讀
- 嵌入式系統(tǒng)開發(fā)中驅(qū)動(dòng)程序設(shè)計(jì)的5個(gè)方法盤點(diǎn) 3244次閱讀
- 關(guān)于驅(qū)動(dòng)程序設(shè)計(jì)的5個(gè)竅門 4487次閱讀
- 8255A驅(qū)動(dòng)程序 3429次閱讀
- 8155驅(qū)動(dòng)程序 3284次閱讀
- max7219點(diǎn)陣驅(qū)動(dòng)程序分享 1.9w次閱讀
- Xilinx設(shè)備的驅(qū)動(dòng)程序 8200次閱讀
- PCI驅(qū)動(dòng)程序開發(fā)實(shí)例 6831次閱讀
下載排行
本周
- 1TC358743XBG評(píng)估板參考手冊
- 1.36 MB | 330次下載 | 免費(fèi)
- 2開關(guān)電源基礎(chǔ)知識(shí)
- 5.73 MB | 6次下載 | 免費(fèi)
- 3100W短波放大電路圖
- 0.05 MB | 4次下載 | 3 積分
- 4嵌入式linux-聊天程序設(shè)計(jì)
- 0.60 MB | 3次下載 | 免費(fèi)
- 5基于FPGA的光纖通信系統(tǒng)的設(shè)計(jì)與實(shí)現(xiàn)
- 0.61 MB | 2次下載 | 免費(fèi)
- 6基于FPGA的C8051F單片機(jī)開發(fā)板設(shè)計(jì)
- 0.70 MB | 2次下載 | 免費(fèi)
- 751單片機(jī)窗簾控制器仿真程序
- 1.93 MB | 2次下載 | 免費(fèi)
- 8基于51單片機(jī)的RGB調(diào)色燈程序仿真
- 0.86 MB | 2次下載 | 免費(fèi)
本月
- 1OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 2555集成電路應(yīng)用800例(新編版)
- 0.00 MB | 33564次下載 | 免費(fèi)
- 3接口電路圖大全
- 未知 | 30323次下載 | 免費(fèi)
- 4開關(guān)電源設(shè)計(jì)實(shí)例指南
- 未知 | 21548次下載 | 免費(fèi)
- 5電氣工程師手冊免費(fèi)下載(新編第二版pdf電子書)
- 0.00 MB | 15349次下載 | 免費(fèi)
- 6數(shù)字電路基礎(chǔ)pdf(下載)
- 未知 | 13750次下載 | 免費(fèi)
- 7電子制作實(shí)例集錦 下載
- 未知 | 8113次下載 | 免費(fèi)
- 8《LED驅(qū)動(dòng)電路設(shè)計(jì)》 溫德爾著
- 0.00 MB | 6653次下載 | 免費(fèi)
總榜
- 1matlab軟件下載入口
- 未知 | 935054次下載 | 免費(fèi)
- 2protel99se軟件下載(可英文版轉(zhuǎn)中文版)
- 78.1 MB | 537796次下載 | 免費(fèi)
- 3MATLAB 7.1 下載 (含軟件介紹)
- 未知 | 420026次下載 | 免費(fèi)
- 4OrCAD10.5下載OrCAD10.5中文版軟件
- 0.00 MB | 234315次下載 | 免費(fèi)
- 5Altium DXP2002下載入口
- 未知 | 233046次下載 | 免費(fèi)
- 6電路仿真軟件multisim 10.0免費(fèi)下載
- 340992 | 191185次下載 | 免費(fèi)
- 7十天學(xué)會(huì)AVR單片機(jī)與C語言視頻教程 下載
- 158M | 183278次下載 | 免費(fèi)
- 8proe5.0野火版下載(中文版免費(fèi)下載)
- 未知 | 138040次下載 | 免費(fèi)
評(píng)論
查看更多