版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第10章
Linux及Android操作系統(tǒng)的編譯內(nèi)容10.1Android系統(tǒng)架構(gòu)10.2Ubuntu編譯環(huán)境配置10.3快速入門與預(yù)編譯二進(jìn)制文件10.4從源代碼構(gòu)建10.1Android系統(tǒng)架構(gòu)4Android概述Android是一種基于Linux的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。Android操作系統(tǒng)最初由AndyRubin開發(fā),主要支持手機(jī)。2005年8月由Google收購注資。2007年11月,Google與84家硬件制造商、軟件開發(fā)商及電信營運(yùn)商組建開放手機(jī)聯(lián)盟共同研發(fā)改良Android系統(tǒng)。隨后Google以Apache開源許可證的授權(quán)方式,發(fā)布了Android的源代碼。第一部Android智能手機(jī)發(fā)布于2008年10月。當(dāng)前版本2013年9月4日凌晨,谷歌對外公布了Android新版本Android4.4KitKat(奇巧巧克力),并且于2013年11月01日正式發(fā)布,新的4.4系統(tǒng)更加整合了自家服務(wù),力求防止安卓系統(tǒng)繼續(xù)碎片化、分散化。Linux3.14內(nèi)核GregKroah-Hartman
2014-02-10宣布LinuxKernel3.14第二個候選版本發(fā)布,該版本帶來了大量更新和修復(fù),用戶現(xiàn)在即可免費(fèi)下載測試。Linuxkernel3.14-rc2版本包括驅(qū)動(GPU、media、block等)更新,架構(gòu)(x86、arm64、s390)升級,系統(tǒng)文件改進(jìn)(Btrfs、NFS、OCFS、VFS),以及bug修復(fù)等。此外,Linux官方還發(fā)布了Linuxkernels1,現(xiàn)均可下載。Android系統(tǒng)架構(gòu)8Linux內(nèi)核9Binder:問題應(yīng)用與服務(wù)可以運(yùn)行在不同的進(jìn)程中,但是相互必須通信且共享數(shù)據(jù)IPC會帶來巨大額外處理開銷和安全10Binder:解決方法驅(qū)動程序加快進(jìn)程之間的通信通過共享數(shù)據(jù)提高性能對于處理請求,每個進(jìn)程有單獨(dú)的線程池引用計(jì)數(shù)和對象引用進(jìn)程間映射進(jìn)程間同步調(diào)用IPC進(jìn)程間通信(Inter-ProcessCommunication)就是指多個進(jìn)程之間相互通信,交換信息的方法。Linux
IPC基本上都是從Unix平臺上繼承而來的。主要包括最初的Unix
IPC,SystemV
IPC以及基于Socket的IPC。另外,Linux也支持POSIX
IPC。11電源管理:問題移動設(shè)備通過電池提供電力電池的容量十分有限12電源管理:解決方法建立在標(biāo)準(zhǔn)的LinuxPowerManager(PM)之上更激進(jìn)的能耗管理策略組件通過“喚醒鎖”發(fā)出保持開機(jī)的請求支持多種類型的喚醒鎖13本地庫BionicLibc函數(shù)庫(FuntionLibraries)本地服務(wù)(NativeServers)硬件抽象庫(HardwareAbstractionLibraries)14BionicLibc什么是BionicLibc定制庫應(yīng)用,優(yōu)化嵌入式的應(yīng)用
15BioniclibcBSD協(xié)議,使得GPL不出現(xiàn)在用戶空間體積小,代碼路徑短,會在每個進(jìn)程中加載自定義的pthread實(shí)現(xiàn),十分快速而簡潔16Bioniclibc不支持某些POSIX特征與標(biāo)準(zhǔn)的GNUglibc庫不兼容所有的本地程序必須依照bionic庫進(jìn)行編譯POSIX表示可移植操作系統(tǒng)接口(PortableOperatingSystemInterface,縮寫為POSIX17FunctionlibcWebkitMediaFrameworkSQLite嵌入式數(shù)據(jù)庫18WebKit建立在開源的WebKit之上網(wǎng)頁渲染以桌面視圖模式完整顯示完全的支持CSS,Javascipt,DOM,AJAX支持單欄和自適應(yīng)視圖渲染W(wǎng)ebKit是一個開源的瀏覽器引擎,與之相對應(yīng)的引擎有Gecko(MozillaFirefox等使用)和Trident(也稱MSHTML,IE使用)。同時WebKit也是蘋果MacOSX系統(tǒng)引擎框架版本的名稱,主要用于Safari,Dashboard,Mail和其他一些MacOSX程序。WebKit前身是KDE小組的KHTML,WebKit所包含的WebCore排版引擎和JSCore引擎來自于KDE的KHTML和KJS,當(dāng)年蘋果比較了Gecko和KHTML后,仍然選擇了后者,就因?yàn)樗鼡碛星逦脑创a結(jié)構(gòu)、極快的渲染速度。Apple將KHTML發(fā)揚(yáng)光大,推出了裝備KHTML改進(jìn)型WebKit引擎的瀏覽器Safari。19MediaFrameWork建立在PacketVideoOpenCORE平臺之上支持標(biāo)準(zhǔn)的視頻,音頻格式支持硬件/軟件解碼插件20SQLite輕量級事務(wù)數(shù)據(jù)存儲多數(shù)平臺數(shù)據(jù)存儲的后端SQLite,是一款輕型的數(shù)據(jù)庫,是遵守ACID的關(guān)系型數(shù)據(jù)庫管理系統(tǒng),它的設(shè)計(jì)目標(biāo)是嵌入式的,而且目前已經(jīng)在很多嵌入式產(chǎn)品中使用了它,它占用資源非常的低,在嵌入式設(shè)備中,可能只需要幾百K的內(nèi)存就夠了。21本地服務(wù)器表面拋射器 SurfaceFlinger音頻拋射器 AudioFlinger
SurfaceFlinger服務(wù)負(fù)責(zé)繪制Android應(yīng)用程序的UI。22SurfaceFlinger提供全系統(tǒng)的表面“設(shè)計(jì)器”,將所有表面渲染動作處理后傳遞到幀緩沖可以結(jié)合二維和三維的表面,或者多個應(yīng)用的表面23AudioFlinger控制所有的視頻設(shè)備處理多視頻流進(jìn)行PCM視頻輸出路徑控制視頻到不同的輸出24HardwareAbstractionLibrariesC/C++庫文件層定義Android的驅(qū)動接口將Android邏輯平臺從硬件接口中分開硬件抽象層25AndroidRuntimeDalvik虛擬機(jī)核心庫26Dalvik虛擬機(jī)完全為Android定制的虛擬機(jī),基于QEMU提供應(yīng)用程序可移植性和運(yùn)行環(huán)境的一致性運(yùn)行優(yōu)化的dex格式文件和Dalvik字節(jié)碼Java.class/.jar在創(chuàng)建的時候就被轉(zhuǎn)換成為了.dex為嵌入式環(huán)境設(shè)計(jì)支持每設(shè)備多個虛擬機(jī)進(jìn)程高度CPU優(yōu)化的字節(jié)碼解釋器高效內(nèi)存使用Dalvik特點(diǎn)
每一個Android應(yīng)用程序都在它自己的進(jìn)程中運(yùn)行,都擁有一個獨(dú)立的Dalvik虛擬機(jī)實(shí)例。Dalvik被設(shè)計(jì)成一個設(shè)備可以同時高效地運(yùn)行多個虛擬系統(tǒng)。
Dalvik虛擬機(jī)執(zhí)行(.dex)的Dalvik可執(zhí)行文件,該格式文件針對小內(nèi)存使用做了優(yōu)化。
同時虛擬機(jī)是基于寄存器的,所有的類都經(jīng)由JAVA編譯器編譯,然后通過SDK中的“dx”工具轉(zhuǎn)化成.dex格式由虛擬機(jī)執(zhí)行。DalvikVM中間代碼Dalvik虛擬機(jī)有許多地方是參考Java虛擬機(jī)的設(shè)計(jì),Dalvik虛擬機(jī)所執(zhí)行的中間代碼并非是Java虛擬機(jī)所執(zhí)行的JavaBytecode,同時也不直接執(zhí)行Java類(JavaClassFile),而是依靠轉(zhuǎn)換工具將Javabytecode轉(zhuǎn)為DalvikVM執(zhí)行時特有的dex(DalvikExecutable)格式,成為.dex。DalvikVM與JavaVM區(qū)別DalvikVM與JavaVM最大的不同在于JavaVM是Stack-based,而DalvikVM是(register-based)。以技術(shù)層面來看Register-basedVM的特性有個很大的好處,那就是對于目前主流的硬件架構(gòu),很容易與現(xiàn)有系統(tǒng)整合且達(dá)到最優(yōu)化,而所需要的資源也相對較少。甚至在硬件實(shí)現(xiàn)VM上會比較容易實(shí)現(xiàn)。最重要的是Dalvik并不是由J2ME實(shí)現(xiàn),而不存在J2ME授權(quán)相關(guān)的問題。通常來說,Java比較慢不單單只是因?yàn)閂irtualMachine的關(guān)系,Java的程序編譯成Bytecode也是關(guān)鍵因素之一,因?yàn)镴avaVM采用了Stack-based的方式來產(chǎn)生指令,所以所有的變量都需要push,pop操作,所以就會多出不少指令,而DalvikVM則采用Register-based方式,變量都存儲在寄存器中,相比較而言,DalvikVM的指令就會少一點(diǎn),速度也就會更加快一點(diǎn)。31核心庫數(shù)據(jù)結(jié)構(gòu)
實(shí)用類
文件訪問……針對Java語言的APIs提供了一個強(qiáng)大,然而簡單的開發(fā)平臺應(yīng)用程序框架活動管理器包管理器窗口管理器資源管理器內(nèi)容提供器視圖系統(tǒng)通知管理器電話管理器各種服務(wù)AJAX網(wǎng)頁應(yīng)用程序<canvas>使JavaScript可直接繪圖DOM可以創(chuàng)建UI特效Android目前不支持HTML5,但有GearsGoogleReaderGmail10.2Ubuntu編譯環(huán)境配置Ubuntu編譯環(huán)境配置可以參考/wiki/Host_PC_Setup網(wǎng)頁上的步驟,詳細(xì)介紹了如何開始在Ubuntu中使用OMAP平臺上的預(yù)構(gòu)資源構(gòu)建二進(jìn)制文件。
本章主要介紹OMAP4460開發(fā)板Linux及Android操作系統(tǒng)的編譯方法。OMAP4460開發(fā)板代碼資源地址:/win32-image-writer。10.2.1主機(jī)環(huán)境
Ubuntu是OMAP平臺推薦的Linux發(fā)行版本,OMAP平臺下的Ubuntu資源下載地址是:/community/Installation。
注:建立一個版本的Android,約需要10GB的硬盤空間。1.工具和套件下面是一個用于構(gòu)建、測試和調(diào)試OMAP開發(fā)平臺所需的軟件包。這些軟件包可以下載到主機(jī)的分發(fā)包管理系統(tǒng),或通過“apt-get”命令安裝。工具和套件之中包括如下內(nèi)容:Git版本控制系統(tǒng);GCC編譯器/GNUMake;util-linux;minicom。E2fsprogs;6.ARM交叉編譯器CodeSourcery的ARM編譯器版本2009Q3-67可以用于建立OMAP平臺上不同的發(fā)生版本。更多信息可以訪問CodeSourcery網(wǎng)站:。
當(dāng)前代碼的編譯,可能會導(dǎo)致Sourcery產(chǎn)生一個內(nèi)部錯誤。如果出現(xiàn)這樣的情況,可以下載較新的CodeSourcery版本:2010Q1-202。
先前的交叉編譯器編譯版本可以下載2009Q3-67。也可能需要不同的CodeSourcery版本,具體情況根據(jù)構(gòu)建的要求進(jìn)行選擇。例如選擇IA32GNU/LinuxTAR(2c2b324f0a84916afd9920029286eb10),2008年第三季度-72。另一個更早的交叉編譯器編譯版本可以下載,選擇IA32GNU/LinuxTAR(75465352c9ee21c06c8e0c4709969d42)。10.2.2初步設(shè)置1.工具鏈2.Lucid工作站3.SD卡的容量4.引導(dǎo)程序OMAP4使用u-boot+x-loader的啟動平臺。10.3快速入門與預(yù)編譯二進(jìn)制文件快速入門與預(yù)編譯二進(jìn)制文件的方法,可參考如下網(wǎng)頁上面的相關(guān)介紹:/wiki/Android_Panda_Pre_Built
從Linaro的官方網(wǎng)站可以獲得PandaBoard的預(yù)構(gòu)建二進(jìn)制文件,可以得到Android的二進(jìn)制文件。
下面是獲得二進(jìn)制文件和保存到SD卡上的典型步驟。想要得到Linaro的安裝版本,有兩種方法:使用預(yù)構(gòu)建的image;使用Linaro的image工具創(chuàng)建自己的image。10.4從源代碼構(gòu)建從源代碼構(gòu)建Android的方法可以參考如下網(wǎng)頁:/wiki/Android_Panda_Build_Source10.4.1編譯平臺設(shè)置1.工具和依賴包
先決條件是封裝用于構(gòu)建Android的文件系統(tǒng)(注意:這里參考Ubuntu10.0464位),Ubuntu的64位CreamSandwich版本。如果是在防火墻后面,必須按前面的說
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 質(zhì)量保證協(xié)議書
- 裝修返點(diǎn)協(xié)議書
- 自然災(zāi)害協(xié)議書
- 總承包合同范本
- 屋基調(diào)換協(xié)議書
- 藝校合作協(xié)議書
- 小孩周歲協(xié)議書
- 舞團(tuán)合伙協(xié)議書
- 閘機(jī)購買合同范本
- 英語短語協(xié)議書
- 2025-2026學(xué)年蘇教版四年級數(shù)學(xué)上冊期末測試卷(附答案)
- 刑法學(xué)知到智慧樹章節(jié)測試課后答案2024年秋上海財(cái)經(jīng)大學(xué)
- 2025屆河北省石家莊市普通高中學(xué)校畢業(yè)年級教學(xué)質(zhì)量摸底檢測英語試卷(含答案解析)
- 老年護(hù)理??谱o(hù)士競聘案例
- 偉大的《紅樓夢》智慧樹知到期末考試答案章節(jié)答案2024年北京大學(xué)
- AQ2059-2016 磷石膏庫安全技術(shù)規(guī)程
- 噴涂車間操作工安全操作規(guī)程模版(三篇)
- 節(jié)水型小區(qū)總結(jié)匯報(bào)
- 2023中華護(hù)理學(xué)會團(tuán)體標(biāo)準(zhǔn)-老年人誤吸的預(yù)防
- 一年級數(shù)學(xué)重疊問題練習(xí)題
- 事業(yè)單位專業(yè)技術(shù)人員崗位工資標(biāo)準(zhǔn)表
評論
0/150
提交評論