android提供了裝置移植和支援方面有較大的自由度,可以制定自有的裝置規範和驅動。通過硬體抽象層(hal-hardware abstraction layer),可以在底層硬體驅動和上層平台之間建立關聯(hooks)。androind通過自身的開源性,來支援各種型別的裝置發展。
在將android系統移植到裝置之前,必須先理解android是如何執行的。由於驅動和hal會和android上層應用互動,通過研究aosp(android open source project),可以對你深入理解android執行機制提供巨大幫助。下圖顯示了android系統層次的架構:
圖1.android系統架構
ipc(跨程序通訊-inter-process communication)機制允許andorid應用層框架,呼叫android系統程序服務。對於應用層來說,ipc通訊對於開發者來說是「透明」的。
hal提供系統服務層和底層驅動層之間的標準介面抽象。對於特定的新硬體,首先必須實現hal和相應的底層驅動。android不限定你自己的hal和裝置驅動之間的互動規範,因此你可以自由定製。但同時你必須保證,你定製的hal可以無縫的與驅動層對接執行。hal通常在android系統中,以共享鏈結庫(.so檔案)形式存在。
大部分情況下,開發android裝置驅動和開發linux裝置驅動的過程是一樣的。android系統採用了特定版本的linux核心為基礎,同時進行了擴充套件,如喚醒所、更節約記憶體的記憶體管理機制,ipc繫結驅動以及其他更針對移動類裝置的定製。這些定製和擴充套件和系統功能的關係更大,與驅動層關係不大。你可以使用其他版本的linux核心,只要該核心支援移動裝置的特定要求,如ipc繫結等。同時,建議你採用最新版本的核心。
Android系統架構
android系統架構分為五層,從上到下依次是應用層 應用框架層 系統執行庫層 硬體抽象層和linux核心層。系統內建的應用程式以及非系統級的應用程式都是屬於應用層。引用官方描述 android 隨附一套用於電子郵件 簡訊 日曆 網際網路瀏覽和聯絡人等的核心應用。平台隨附的應用與使用者可以選擇安裝的...
譯 Orchard架構設計模式
問 我目前正在研究軟體架構 分層,並為此看了許多開源的.net專案,其中包括orchard cms。我認為orchard是乙個很好的設計範例。據我所知,良好的架構應該是ui,service,repositories和entities應該被分離在不同的程式集中。但是在orchard裡面,我看見serv...
區塊鏈的底層架構
區塊鏈基礎架構分為6層,包括資料層 網路層 共識層 激勵層 合約層 應用層。每層分別完成一項核心功能,各層之間互相配合,實現乙個去中心化的信任機制。資料層主要描述區塊鏈技術的物理形式。區塊鏈系統設計的技術人員們首先建立的乙個起始節點是 創世區塊 之後在同樣規則下建立的規格相同的區塊通過乙個鏈式的結構...