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

驅動程式會提供軟體介面,用來與嵌入式或連線的硬體 (或虛擬) 裝置進行通訊。在 Fuchsia 中,驅動程式是在系統元件拓撲中執行的使用者空間「元件」,而驅動程式架構是以元件架構提供的概念和工具為基礎。驅動程式會使用capabilities及透過 FIDL 建立的連線,彼此互動和非驅動程式庫元件。

在本程式碼研究室中,您將建構以名為 eduQEMU (做為 Fuchsia 模擬器) 內建虛擬裝置的 Fuchsia 驅動程式庫程式元件;這個教育裝置是用來編寫驅動程式計算指定整數階乘的教育裝置。您也將探索如何使用 Fuchsia SDK 提供的工具與駕駛人互動。

課程內容

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

軟硬體需求

  • 搭載 Linux 或 macOS 的 x64 機器

  • 已設定的 Fuchsia SDK 環境

  • core.x64模擬器產品組合

事前準備

針對前置作業,您會在 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