DFv1 與 DFv2 的比較

本頁概略說明 Fuchsia 驅動程式庫程式架構之間的差異:DFv1 (舊版) 和 DFv2

DF1 與 DFv2 的主要差異如下:

裝置和節點

在 DFv1 中,我們使用的是「裝置」和「裝置圖表」這兩個詞彙。裝置可以視為一種硬體,驅動程式會繫結至裝置,並在這類裝置上運作。駕駛人也可以建立孩子的裝置。在 DFv1 中,當驅動程式庫繫結至裝置時,必須建立子項裝置。接著,建立裝置的驅動程式庫即為裝置所有。

在 DFv2 中,我們使用「節點」和「節點圖表」(或「節點拓撲」) 的字詞。節點可以視為會曝露在 Fuchsia 系統中的功能。可以是實體硬體裝置或以虛擬方式呈現的硬體。驅動程式會繫結至節點並使用其功能。驅動程式也可以建立子節點。接著,該節點是由繫結該節點的驅動程式庫擁有。

libDDK 與功能比較

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

在 DFv2 中,驅動程式是「元件」。這些執行個體在連入的命名空間中都有能力其中有部分權限可讓他們在驅動程式庫架構中對 FIDL 說話。驅動程式可以使用 DevfsExporter FIDL 通訊協定向 /dev 目錄公開管道。透過此管道,驅動程式和其他元件可直接互相對 FIDL 說話。

Banjo 與 FIDL

在 DFv1 中,駕駛人相互說「Banjo」。驅動程式庫必須從繫結的裝置要求取得 Banjo 通訊協定,藉此取得 Banjo 通訊協定。

在 DFv2 中,驅動程式會彼此說出 FIDL,就像 Fuuchsia 系統中的其他元件一樣。驅動程式會從傳入的元件命名空間取得 FIDL 管道。