天天看點

Android6.0&9.0 Wifi

在介紹Android9.0中wifi的架構之前,先介紹一下Android Treble項目。

Android系統架構

Android6.0&9.0 Wifi

1.應用架構。 應用架構最常被應用開發者使用。作為硬體開發者,您應該非常了解開發者 API,因為很多此類 API 都可以直接映射到底層 HAL 接口,并可提供與實作驅動程式相關的實用資訊。

2.Binder IPC。 Binder 程序間通信 (IPC) 機制允許應用架構跨越程序邊界并調用 Android 系統服務代碼,這使得進階架構 API 能與 Android 系統服務進行互動。在應用架構級别,開發者無法看到此類通信的過程,但一切似乎都在“按部就班地運作”。

系統服務。系統服務是專注于特定功能的子產品化元件,例如視窗管理器、搜尋服務或通知管理器。 應用架構 API 所提供的功能可與系統服務通信,以通路底層硬體。Android 包含兩組服務:“系統”(諸如視窗管理器和通知管理器之類的服務)和“媒體”(與播放和錄制媒體相關的服務)。

3.硬體抽象層 (HAL)。 HAL 可定義一個标準接口以供硬體供應商實作,這可讓 Android 忽略較低級别的驅動程式實作。借助 HAL,您可以順利實作相關功能,而不會影響或更改更進階别的系統。HAL 實作會被封裝成子產品,并會由 Android 系統适時地加載。有關詳情,請參閱硬體抽象層 (HAL) 一文。

4.Linux 核心。 開發裝置驅動程式與開發典型的 Linux 裝置驅動程式類似。Android 使用的 Linux 核心版本包含幾個特殊的補充功能,例如:Low Memory Killer(一種記憶體管理系統,可更主動地保留記憶體)、喚醒鎖定(一種 PowerManager 系統服務)、Binder IPC 驅動程式以及對移動嵌入式平台來說非常重要的其他功能。這些補充功能主要用于增強系統功能,不會影響驅動程式開發。您可以使用任意版本的核心,隻要它支援所需功能(如 Binder 驅動程式)即可。不過,我們建議您使用 Android 核心的最新版本。有關詳情,請參閱編譯核心一文。

HIDL

Android 8.0 重新設計了 Android 作業系統架構(在一個名為“Treble”的項目中),以便讓制造商能夠以更低的成本更輕松、更快速地将裝置更新到新版 Android 系統。在這種新架構中,HAL 接口定義語言(HIDL,發音為“hide-l”)指定了 HAL 和其使用者之間的接口,讓使用者能夠替換 Android 架構(android framework),而無需重新編譯 HAL。

利用新的供應商接口,HIDL 将供應商實作(由晶片制造商編寫的裝置專屬底層軟體)與 Android 作業系統架構分離開來。供應商或 SOC 制造商建構一次 HAL,并将其放置在裝置的 /vendor 分區中;架構可以在自己的分區中通過無線下載下傳 (OTA) 更新進行替換,而無需重新編譯 HAL。

Android6.0&9.0 Wifi

System update

1.舊版android更新

Android6.0&9.0 Wifi

舊版Android需要需要同時更新framework、vendor。

2.Android8.0+系統更新

Android6.0&9.0 Wifi

引入treble之後,隻需更新framework。

Wifi 架構

Android6.0&9.0 Wifi

Wifi 啟動過程分析

1.Android 6.0 Wifi啟動過程

Android6.0&9.0 Wifi

2.Android 9.0 Wifi啟動過程

Android6.0&9.0 Wifi

通過Wifi的啟動過程,就能看到在Android8.0之後,wifi的啟動更加的複雜。在系統中添加了與hal層相關的service,供framework層進行調用。主要原理就是為hal層添加了binder支援。