Khadas VIM3 开发指南

Khadas VIM3 是一款基于 ARM64 的单板计算机。可以运行 VIM3 上的 Fuchsia。本指南介绍了 Fuchsia 贡献者如何安装 在 VIM3 上使用 Fuchsia 以及执行其他常见开发任务。

请参阅附录:功能支持,详细了解 VIM3 有哪些功能 Fuchsia 支持。

受众群体

本指南假定您熟悉以下操作:

  • 摆弄电子产品和硬件。
  • 通过源代码和其他 CLI 工作流构建 Fuchsia。

在 Khadas VIM3 开发板上安装 Fuchsia

如果您遇到以下情况,请参阅问题排查附录:支持 无法顺利完成安装过程。

前提条件

您将需要以下所有硬件和软件:

  • 一台 Khadas VIM3 单板计算机。Google 员工应通过 Fuchsia Ops 团队的负责人。

  • 运行 Linux 并具有 2 个 USB 端口的台式机或笔记本电脑 可用。这台计算机称为主机

  • 为主机提供至少 24W 的电源。VIM3 的耗电量很高 当 DVFS 处于启用状态时。

  • 主机上可正常运行的 Fuchsia 开发环境。换言之, 应该能够在您的主机上基于其源代码构建 Fuchsia

  • 一根 USB 转 TTL 串行线

  • 一根既支持数据传输又支持电源传输的 USB-C 转 USB-A 数据线。USB-C 适用于 VIM3另一端用于您的主机。

以下操作是可选的:

  • 散热器。这支持在 VIM3 上全速运行 2 个 CPU 核心 但核心不超过 80°C 的临界温度 被节流。

请访问 Khadas 商店的 VIM3 系列,查看兼容的示例 配件。

构建 Fuchsia

如果您还没有 树内 设置环境 您应该立即开始此流程,因为这可能需要一段时间才能完成:

  1. 下载 Fuchsia 源代码

  2. 配置和构建 Fuchsia

    • 配置 build 时,请使用 fx set core.vim3

您将使用 Fuchsia 开发环境为 VIM3 并运行树内 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

在安装 Fuchsia 之前,您需要获取 VIM3 固件和软件 恢复为已知良好的状态第一步是清空 eMMC。

  1. 按下 VIM3 上的重置按钮。

  2. 按下重置按钮后,开始反复按 空格键。确保光标位于 集中在串行控制台上引导加载程序应该会暂停,而您的 串行控制台应显示 kvim3# 提示。您的串行控制台现已 可让您访问 U-Boot shell

  3. 在 U-Boot shell 中运行以下命令:

    store init 3
    

    串行控制台日志应验证 eMMC 是否已正确清空。

如需了解详情,请参阅清空 eMMC

在 VIM3 上更新 Android 映像

现在,您需要使 VIM3 固件和软件达到已知良好状态:

  1. 点击以下网址,下载已知能正常运行的 Android 映像 以及后续的 Fuchsia 安装: https://dl.khadas.com/firmware/vim3/android/VIM3_Pie_V211220.7z

  2. 解压缩压缩后的归档文件 (VIM3_Pie_V211220.7z)。在 您应该有一个 VIM3_Pie_V211220 目录,且目录 update.img 文件。

  3. 按照将操作系统安装到 eMMC 中的说明进行操作。运行时 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 指示灯应亮起,您应该可以看见登录记录。 串行控制台。

更新引导加载程序

本部分介绍如何刷写经过修改的 Fuchsia 的预构建版本 U-Boot 连接到 VIM3。如果您希望构建 修改了源代码中的 U-Boot: https://third-party-mirror.googlesource.com/u-boot/+/refs/heads/vim3

  1. 按“reset”按钮,然后再次访问 U-Boot shell 在串行控制台中反复按空格键。时间 串行控制台会显示 kvim3# 提示符,说明您现在位于 U-Boot shell。

  2. 在 U-Boot shell 中运行以下命令:

    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-* 数据线,并确保 同时支持数据传输和 Power Delivery

  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 进行确认。否则,请按下重置按钮,然后反复按 F 键,直到您看到 USB RESETfx serial SPEED ENUM

  2. 从主机上的单独终端运行以下命令:

    fx flash
    

您的 VIM3 现在可以运行 Fuchsia 了!

更新您的 Fuchsia 图片

如果您已经在 VIM3 上运行 Fuchsia 并希望 更新 Fuchsia 图像。

  1. 从主机上的终端运行以下命令:

    fx serve
    

    让此命令保持运行。

  2. 在树内 Fuchsia 检出中进行一些更改并构建更改。

  3. 打开一个新的终端窗口,并对 Fuchsia 映像执行 OTA 更新: VIM3:

    fx ota
    

通过停用 VIM3 的风扇来降低其噪音

如果 VIM3 风扇的嘈杂噪音给您带来了困扰,您可以使用任意 以下工作流之一:

  • --args vim3_mcu_fan_default_level=0 添加到您的 fx set 调用中。
  • 如果您使用的是 ~/fuchsia/local/args.gn,请将 vim3_mcu_fan_default_level=0 添加到 永久性本地构建参数

确保 VIM3 tryjobs 运行

在您的提交消息中添加以下行,以确保 VIM3 tryjobs 运行:

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

问题排查

本部分介绍了常见问题的解决方法。

问题排查:启动循环

问题:

您正在查看 VIM3 串行日志。日志显示,VIM3 不断重新启动。

根本原因:

未知。Khada 的能量传输中似乎存在一个潜在漏洞 实施。Fuchsia 解决了问题 122113 中的 bug。

解决方法 1:

拔下并重新插上 USB 线。如有必要,请重复 2-3 次。

解决方法 2:

始终使用 USB-C 转 USB-A 数据线。

问题排查:硬件不匹配

问题:

刷写紫红色时出现以下错误:Hardware mismatch! Trying to flash images built for vim3 but have 0

解决方案:

返回到更新 Android 映像步骤。

附录:修复 VIM3 故障

如果您的 VIM3 出现故障并需要“恢复出厂设置”,请按以下步骤操作::

  1. 清空 eMMC
  2. 更新 Android 映像
  3. 更新引导加载程序
  4. 将 Fuchsia 刷写到 eMMC(只需一次)

附录:支持

附录:功能支持

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

  • UART 串行调试程序
  • 通过以太网和 USB 铺设路面
  • 存储 (eMMC)
  • HDMI 显示屏和帧缓冲区
  • GPU(马里)和 Vulkan 图形
  • 以太网
  • SDIO
  • I2C
  • GPIO
  • 温度传感器和 DVFS
  • RTC
  • 时钟
  • 风扇
  • NNA
  • 外围设备模式下的 USB-C
  • USB A
  • 音频1

以下功能正在开发中,可能不受支持:

  • 视频解码器
  • SPI

以下功能不受支持,但未来可能会添加 贡献:

  • SPI 闪存
  • 主机模式下的 USB-C
  • 电源管理和 PMIC
  • 局域网唤醒
  • UART 蓝牙

以下功能不受支持,并且不太可能添加:

  • 视频编码(由于使用了非公开固件)
  • 可信执行环境 / 安全启动

附录:更新启动启动画面

如需将启动启动画面更新为 Fuchsia 徽标,请运行以下命令 命令:fastboot

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

  1. VIM3 不包含扬声器和麦克风等换能器, 除换能器外,还包括 DAC/ADC 在内的外部硬件 需要通过 GPIO 标头进行添加和集成, 以这种方式播放和捕获音频。