DFv1 與 DFv2 的比較

本頁面提供 Fuchsia 驅動程式庫程式架構兩個版本的差異簡介:DFv1 (舊版) 和 DFv2

DF1 和 DFv2 之間的主要差異如下:

裝置與節點

在 DFv1 中,我們使用「裝置」和「裝置圖表」等詞彙。裝置可視為硬體。驅動程式會繫結至裝置並對其運作。駕駛人也可以建立子裝置。在 DFv1 中,當驅動程式庫繫結至裝置時,必須建立子裝置。裝置隨後就會歸由建立該裝置的驅動程式庫所有。

在 DFv2 中,我們使用「節點」和「節點圖表」(或「節點拓樸」) 等詞彙。您可以將節點想成在 Fuchsia 系統中公開功能的項目。可以是實體硬體裝置,也可以是硬體的虛擬表示法。驅動程式會繫結至節點並使用其功能。驅動程式也可以建立子節點。此時,節點就歸屬於與其繫結的驅動程式庫。

libDDK 與功能

在 DFv1 中,驅動程式不是元件。他們沒有用於使用 Fuchsia 系統功能的傳入或傳出命名空間。驅動程式會使用 libDDK 與驅動程式庫程式架構通訊,這是公開函式的共用程式庫。如果驅動程式想要放置在 /dev 目錄 (虛擬檔案系統) 中,就會建立可傳送訊息的裝置。接著,驅動程式庫架構會將 Fidl 訊息轉送回驅動程式庫。

在 DFv2 中,驅動程式是元件。他們在傳入命名空間中擁有功能。其中部分功能可讓他們向驅動程式庫架構使用 FIDL。駕駛人可以向其他駕駛人或非驅動程式庫元件宣傳服務。透過這些服務,驅動程式和其他元件可以直接使用 FIDL 進行通訊。

Banjo 與 FIDL

在 DFv1 中,驅動程式會彼此發出 Banjo 信號。如要取得 Banjo 通訊協定,驅動程式庫會向已綁定的裝置提出要求。

在 DFv2 中,驅動程式會彼此使用 FIDL 進行通訊,就像 Fuchsia 系統中的任何其他元件一樣。驅動程式會從傳入的元件命名空間取得 FIDL 管道。