程式碼研究室:QEMU 教育版驅動程式庫

驅動程式會提供軟體介面,用於與嵌入系統或連線至系統的硬體 (或虛擬) 裝置通訊。在 Fuchsia 中,驅動程式是執行在系統元件拓樸中的使用者空間元件,而驅動程式架構則是建構在元件架構提供的概念和工具之上。驅動程式會使用透過 FIDL 建立的功能和連線,與其他驅動程式和非驅動程式庫元件互動。

在本程式碼研究室中,您將建構一個 Fuchsia 驅動程式庫元件,其目標是 QEMU 中內建的虛擬裝置 (可支援 Fuchsia 模擬器),名為 edu,這是用於編寫驅動程式的教育用裝置,可計算給定整數的階乘。您也會瞭解如何使用 Fuchsia SDK 提供的工具與驅動程式互動。

課程內容

  • 探索裝置節點並繫結至該節點
  • 註冊及載入新的裝置驅動程式庫
  • 與執行中的裝置驅動程式庫互動

必要條件

事前準備

您已在先決條件中,在 fuchsia-drivers/ 目錄中建立 Bazel 工作區。這是含有 WORKSPACE.bazel 檔案的目錄,代表工作區的根目錄。在整個程式碼研究室中,這個根目錄會使用 // 前置字串來參照。舉例來說,路徑 //fuchsia-codelab 代表 Bazel 工作區根目錄中名為 fuchsia-codelab 的目錄。

Bazel 工作區也已預先設定 tools/ 目錄中 Fuchsia SDK 提供的開發工具。本程式碼研究室假設您會在 Bazel 工作區中使用 SDK 工具,因此建議您更新 PATH,以納入 SDK 的 tools/ 目錄,或是使用下列指令建立暫時別名:

alias ffx=tools/ffx
alias bazel=tools/bazel