Khadas VIM3 開發指南

Khadas VIM3 是採用 ARM64 架構的單板電腦。您可以在 VIM3 上執行 Fuchsia。本指南將向 Fuchsia 貢獻者說明如何在 VIM3 上安裝 Fuchsia,以及執行其他常見的開發工作。

如要進一步瞭解 Fuchsia 支援哪些 VIM3 功能,請參閱「附錄:功能支援」。

目標對象

本指南假設您熟悉以下內容:

  • 電子和硬體的修理。
  • 從原始碼和其他 CLI 工作流程建構 Fuchsia。

在 Khadas VIM3 主機板上安裝 Fuchsia

如果在安裝過程中遇到任何問題,請參閱「疑難排解」和「附錄:支援服務」。

必要條件

你需要下列所有硬體和軟體:

  • Khadas VIM3 單板電腦。Google 員工應透過 Fuchsia Ops 團隊申請主機板。

  • 搭載 Linux 且有 2 個 USB 連接埠的桌上型電腦或筆記型電腦。這台電腦稱為「主機」

  • 主機的電源供應器至少為 24W。啟用 DVFS 時,VIM3 可以消耗這麼多電力。

  • 主機上運作的 Fuchsia 開發環境。換句話說,您應該可以從主機上的原始碼建構 Fuchsia

  • USB 轉 TTL 序列傳輸線

  • 支援資料傳輸和電力輸送的 USB-C 轉 USB-A 傳輸線。USB-C 端是用於 VIM3。另一端則是給主機。

以下為選用項目:

  • 散熱片。這樣一來,VIM3 就能以全速執行 2 個 CPU 核心,且不會達到 80°C 的臨界溫度,超過這個溫度時,核心就會降速。

如需相容配件的範例,請參閱 Khadas 商店中的 VIM3 系列

建構 Fuchsia

如果您尚未設定環境,請立即開始這個程序,因為完成可能需要一段時間:

  1. 下載 Fuchsia 原始碼

  2. 設定及建構 Fuchsia

    • 設定建構時,請使用 fx set core.vim3

您將使用 Fuchsia 開發環境為 VIM3 建構 Fuchsia 映像檔,並執行樹狀結構內 CLI 工具,將 Fuchsia 映像檔刷新至 VIM3。

設定硬體

設定 VIM3 與主機進行通訊:

  1. 使用 USB-C 至 USB-* 傳輸線將 VIM3 和主機連接。VIM3 上的白色 LED 燈應會亮起。

    這個連線用於為 VIM3 供電,並透過 fastboot 進行韌體刷新。

  2. 將序列線連接到 VIM3 的 GPIO:

    • GND 到針腳 17。

    • TX (VIM3 的輸出) 至 18 針。

    • RX (連接至 VIM3) 至 19 針。

    • 請勿將序列線的電源線連接到任何 VIM3 GPIO。VIM3 會透過 USB 傳輸線供電。

    請參閱序列偵錯工具,瞭解序列線應如何連接至 VIM3 的示意圖。

  3. 將序列線的 USB 端連接至主機。

驗證序列連線

確認您可以查看序列記錄:

  1. 開啟 Fuchsia 的序列主控台:

    fx serial
    
  2. 按下 VIM3 上的重設按鈕。重設按鈕是電路板上印有 R 的按鈕。如需圖表,請參閱「VIM3/3L 硬體」。在序列主控台中,您應該會看到人類可讀的記錄。

如果 VIM3 似乎一直重新啟動,請參閱「疑難排解:啟動循環」一節。

清除 eMMC

您必須先將 VIM3 韌體和軟體設為已知可用的狀態,才能安裝 Fuchsia。第一步是清除 eMMC。

  1. 按下 VIM3 上的重設按鈕。

  2. 按下重設按鈕後,請在 VIM3 開機時重複按下 Space 鍵。請確認游標已聚焦在序列主控台上。引導程式程序應會暫停,序列控制台應會顯示 kvim3# 提示。序列主控台現在可讓您存取 U-Boot 殼層

  3. 在 U-Boot 殼層中執行下列指令:

    store init 3
    

    序列控制台記錄應可驗證 eMMC 是否已正確清除。

詳情請參閱「清除 eMMC」。

更新 VIM3 上的 Android 映像檔

接下來,請將 VIM3 韌體和軟體設為已知可用的狀態:

  1. 按一下下列網址,即可下載已知可與後續 Fuchsia 安裝作業搭配使用的 Android 映像檔:https://dl.khadas.com/firmware/vim3/android/VIM3_Pie_V211220.7z

  2. 解壓縮壓縮封存檔案 (VIM3_Pie_V211220.7z)。解壓縮後,您應該會看到 VIM3_Pie_V211220 目錄,其中包含 update.img 檔案。

  3. 請按照「在 eMMC 中安裝 OS」中的操作說明進行操作。執行 aml-burn-tool 時,-i 旗標的值應為 update.img 檔案的路徑。指令應如下所示:

    aml-burn-tool -b VIM3 -i ~/Downloads/VIM3_Pie_V211220/update.img
    
  4. 如果 VIM3 上的白色和紅色 LED 燈都關閉,而藍色 LED 燈亮著,表示 VIM3 處於睡眠模式。請嘗試將 VIM3 重新置於升級模式,然後再次按下重設按鈕。

此時,VIM3 上的白色 LED 應會亮起,且在按下 VIM3 上的重設按鈕後,您應該會在序列控制台中看到記錄。

更新系統啟動載入程式

本節說明如何將預先建構的 Fuchsia 修改版 U-Boot 刷入 VIM3。如果您偏好從原始碼建構經過修改的 U-Boot,請參閱以下連結:https://third-party-mirror.googlesource.com/u-boot/+/refs/heads/vim3

  1. 按下重設按鈕,然後在序列主控台中重複按下 Space 鍵,即可再次存取 U-Boot 殼層。當序列主控台顯示 kvim3# 提示時,表示您已進入 U-Boot 殼層。

  2. 在 U-Boot 殼層中執行下列指令:

    fastboot
    

    您應該會在序列主控台中看到以下記錄:

    g_dnl_register: g_dnl_driver.name = usb_dnl_fastboot
    
    USB RESET
    SPEED ENUM
    
    USB RESET
    SPEED ENUM
    

    如果您看到第一行 (g_dnl_register: g_dnl_driver.name = usb_dnl_fastboot),但沒有看到後續的線條,請嘗試使用其他 USB-C 轉 USB-* 傳輸線,並確認該傳輸線同時支援資料和電力傳輸。

  3. 在主機上開啟新的終端機視窗,然後執行下列指令:

    cd ~/fuchsia/prebuilt/third_party/fastboot
    ./fastboot flashing unlock
    ./fastboot flashing unlock_critical
    ./fastboot flash bootloader ~/fuchsia/prebuilt/third_party/firmware/vim3/u-boot.bin.unsigned
    ./fastboot reboot
    

將 Fuchsia 刷入 eMMC (僅限一次)

請僅在首次將 Fuchsia 刷新至 VIM3 時使用此工作流程。如果您已在 VIM3 上執行 Fuchsia,請使用更新 Fuchsia 映像檔工作流程,因為這會更快。

  1. 如果您剛執行上一節中的 ./fastboot reboot 指令,VIM3 應已處於 fastboot 模式。您可以查看 fx serial 記錄來確認。否則請按下重設按鈕,然後在 fx serial 主控台中重複按 F 鍵,直到再次看到 USB RESETSPEED ENUM

  2. 在主機的其他終端機中執行下列指令:

    fx flash
    

VIM3 現已搭載 Fuchsia!

更新 Fuchsia 映像檔

如果 VIM3 上已執行 Fuchsia,且您想更新 Fuchsia 映像檔,請完成下列步驟。

  1. 在主機的終端機中執行下列指令:

    fx serve
    

    讓這項指令繼續執行。

  2. 在樹狀結構中的 Fuchsia 檢查點中進行一些變更,並建構變更。

  3. 開啟新的終端機視窗,然後在 VIM3 上執行 Fuchsia 映像檔的 OTA 更新:

    fx ota
    

停用 VIM3 風扇以降低噪音

如果 VIM3 風扇的噪音太大,你可以透過下列任一工作流程將其關閉:

  • --args vim3_mcu_fan_default_level=0 新增至 fx set 叫用作業。
  • 如果您使用持續性本機建構引數,請將 vim3_mcu_fan_default_level=0 新增至 ~/fuchsia/local/args.gn

確保 VIM3 試用工作執行

在提交訊息中加入下列行,確保 VIM3 試做工作會執行:

Cq-Include-Trybots: luci.turquoise.global.try:bringup.vim3-debug,core.vim3-debug,core.vim3-vg-debug

疑難排解

本節將說明常見問題的解決方法。

疑難排解:啟動循環

問題:

您正在查看 VIM3 序列記錄。記錄顯示 VIM3 會持續重新啟動。

根本原因:

不明。Khada 的電源供應實作項目似乎有潛在錯誤。Fuchsia 已解決 問題 122113 中的錯誤。

解決方法 1:

拔除 USB 傳輸線,然後重新插入。視需要重複 2 至 3 次。

解決方法 2:

請務必使用 USB-C 對 USB-A 傳輸線。

疑難排解:硬體不相容

問題:

刷新 Fuchsia 時發生此錯誤:Hardware mismatch! Trying to flash images built for vim3 but have 0

解決方法:

返回「更新 Android 映像檔」步驟。

附錄:修正 VIM3 磚塊

如果 VIM3 已「磚化」,需要進行「恢復原廠設定」,請按照下列步驟操作:

  1. 清除 eMMC
  2. 更新 Android 映像檔
  3. 更新 Bootloader
  4. 將 Fuchsia 快閃記憶體灌入 eMMC (僅限一次)

附錄:支援

附錄:功能支援

Fuchsia 目前支援 VIM3 的以下功能:

  • UART 序列偵錯工具
  • 透過乙太網路和 USB 鋪設
  • 儲存空間 (eMMC)
  • HDMI 螢幕和螢幕緩衝區
  • GPU (Mali) 和 Vulkan 圖形
  • 乙太網路
  • SDIO
  • I2C
  • GPIO
  • 溫度感應器和 DVFS
  • RTC
  • 時鐘
  • 風扇
  • NNA
  • 周邊模式的 USB-C
  • USB-A
  • 音訊1

以下功能仍在開發中,可能不支援:

  • 影片解碼器
  • SPI

以下功能不受支援,但日後可能會透過貢獻內容加入:

  • SPI 快閃記憶體
  • 主機模式的 USB-C
  • 電源管理和 PMIC
  • 網路喚醒
  • UART BT

系統不支援下列功能,且不太可能新增:

  • 影片編碼 (因為使用非公開韌體)
  • 受信任的執行環境 / 安全開機

附錄:更新啟動畫面

如要將啟動畫面更新為 Fuchsia 標誌,請在 VIM3 處於 fastboot 模式時,從主機終端機執行下列指令:

~/fuchsia/prebuilt/third_party/fastboot/fastboot flash logo \
    ~/fuchsia/zircon/kernel/target/arm64/board/vim3/firmware/logo.img

  1. VIM3 不包含揚聲器和麥克風等轉換器,除了轉換器之外,還需要透過 GPIO 標頭新增和整合 DAC/ADC 等外部硬體,才能以這種方式播放及擷取音訊。