- USB 控制器
- 主控制器是 Synopsys DesignWare Core SuperSpeed USB 3.x 控制器(Gen1/Gen2)。
- 两个 Qualcomm 多用途 PHY(QMP)实例,用于 USB SuperSpeed 和 DisplayPort。
- 用于高速 USB 的 Synopsys PHY。
- 辅助控制器是 Synopsys DesignWare Core 高速 USB 2.0 控制器。
- 用于高速 USB 的 Synopsys PHY
- 第三控制器是 Synopsys DesignWare Core 高速 USB 2.0 控制器。
- 用于高速 USB 的 Synopsys PHY。
- Dragonwing IQ-9075 有三个 USB 控制器(主 USB 3.2、辅助 USB 3.2、第三 USB 2.0)
- 主控制器是 Synopsys DesignWare Core SuperSpeed USB 3.x 控制器(Gen1/Gen2)。
- Synopsys DesignWare core SuperSpeed USB 3.x 控制器特性
- Synopsys DesignWare Core SuperSpeed USB 3.x 控制器是符合 USB SuperSpeed 标准的控制器,可以配置为以下方式之一:
- 仅外设配置
- 仅主机配置
- 双角色配置
- 支持所有传输类型(控制、批量、中断和同步)
- 支持 SuperSpeed 批量流
- 符合可扩展主机控制器接口(xHCI)规范
- 主机模式支持 SuperSpeed(5 Gbps)、高速(480 Mbps)、全速(12 Mbps)和低速(1.5 Mbps)操作。
- 设备模式支持 SuperSpeed(5 Gbps)、高速(480 Mbps)和全速(12 Mbps)操作,并最多支持 16 个双向端点(包括控制管道
ep0)。 - 链路电源管理
- Synopsys DesignWare Core SuperSpeed USB 3.x 控制器是符合 USB SuperSpeed 标准的控制器,可以配置为以下方式之一:
- USB PHY 访问方式
- 通过 AHB2PHY 提供寄存器级接口,用于执行 PHY 相关操作。
- USB Type-C
- 支持 USB Type-C 并使用 PM7325B PD 控制器进行电力传输。
- 完全符合 USB Type-C 3.0 电力传输规范。
- 在传输控制器确定连接的链路伙伴的 Type-C 方向、角色和模式后,支持根据 UCSI 框架更新 PM7325B 软件驱动程序。
- 仅用于主 USB 控制器。
时钟
下表列出了 USB 控制器以及高速和 SuperSpeed PHY 正常运行所需的时钟和工作频率。 表: USB 控制器时钟
表:
高速 PHY 时钟
表:
SuperSpeed PHY 时钟
电压轨
下表列出了高速和 SuperSpeed PHY 所需的电压轨。 表: USB 电压轨
Dragonwing IQ-9075 USB 电压轨
- HS PHY: L7A (0.88 V), L6C (1.8 V), L9A (3.3 V)
- SS PHY: L1C, L7A
中断
下表列出了 USB 控制器用于通知事件的各种中断。 表: USB 控制器中断互连
下表列出了 USB 控制器使用的各种互连。 表: USB 互连使用时钟控制的 USB 控制器复位
下表列出了 USB 控制器和 PHY 使用的复位方法。 表: USB 时钟复位方法使用寄存器的 USB 控制器软件复位
下表列出了复位 USB 控制器的寄存器选项。 表: USB 控制器复位
Dragonwing IQ-9075 控制器复位寄存器
- HS: GCC_USB2_PHY_PRIM_BCR
- SS: GCC_USB3_PHY_PRIM_BCR/ GCC_USB3PHY_PHY_PRIM_BCR
- GCC_USB3_PHY_TERT_BCR
- USB30_PRIM_GDSC
- USB30_SEC_GDSC
- USB20_PRIM_GDSC
- GCC_USB20_SEC_BCR
- GCC_QUSB2PHY_SEC_BCR
- GCC_USB2_PHY_SEC_BCR
USB 控制器和 SoC 集成
USB 控制器的知识产权和 PHY 集成到 SoC 中,如下图所示。 图:USB 控制器 PHY 和 SoC 集成USB 3.xcontrollerSoCType-C connectorAHB 2PHYDisplay port controllerSS0_1DPPHY (QMP)SS0_0DPPHY (QMP)EUDHS0PHY(SNPS)PipeUTMISSHS Synopsys DesignWare Core SuperSpeed USB 3.0 知识产权仅控制核心功能,不控制设备规格,如时钟、互连、稳压器和 GDSC。Synopsys DesignWare Core 知识产权嵌入在Qscratch 包装器(知识产权和软件驱动程序)内,该包装器负责在探测、挂起或恢复状态期间管理所需的资源(时钟、互连、中断、GDSC 和稳压器)。这两个驱动程序共存以确保 USB 功能。
有关 USB Qscratch 包装器驱动程序的信息,请参见 https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/dwc3-qcom.c。有关控制器核心驱动程序的信息,请参见 https://github.com/torvalds/linux/blob/master/drivers/usb/dwc3/core.c。
xHCI 支持
xHCI 规范描述了 USB 2.0 及更高版本的寄存器级主机控制器接口。USB 控制器符合 xHCI 规范,在主机模式下支持 SuperSpeed(5 Gbps)、高速(480 Mbps)、全速(12 Mbps)和低速(1.5 Mbps)操作。 在主机模式下使用 Linux 标准 xHCI 驱动程序来操作 USB 控制器。USB Type-C 连接器系统软件接口(UCSI)
注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持 USB Type-C 功能。- USB Type-C 连接器系统软件接口在 Linux 内核中作为库提供。它定义了一组寄存器和数据结构,用于与系统上的 USB Type-C 连接器进行接口。平台上的 USB Type-C 连接器称为平台策略管理器(PPM),系统软件组件称为 OS 策略管理器(OPM)。
- Qualcomm 参考设计使用 UCSI
Glink驱动程序来处理应用处理器上的 OPM 与 PPM 之间的通信,PPM 是使用 PMIC GLINK 在远程子系统(aDSP)上运行的充电器固件。 - USB Type-C DisplayPort 备用模式增加了支持额外线缆详情的功能,例如 DPAM 版本和线缆信令。Qualcomm 参考设计支持使用 Type-C 的 DisplayPort,以及同时支持 USB SuperSpeed 和 DisplayPort,DisplayPort 最多两个通道(USB SuperSpeed 两个通道和 DisplayPort 两个通道)。
- USB Type-C 电力传输由 PM7325B PD 控制器支持,完全符合 USB PD 3.0 规范。使用 UCSI 接口,支持 USB 数据角色交换和电源角色交换。 注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持通过 Type-C 连接器进行数据和电源角色交换。
- 以下是所涉及驱动程序的参考:
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/ucsi_glink.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/typec/ucsi/displayport.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink.c?h=v6.6.2
- https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/soc/qcom/pmic_glink_altmode.c?h=v6.6.2
USB 功能
Qualcomm 芯片硬件 SoC 允许在双角色设备(DRD)模式下工作。DRD 支持设备和主机两种角色。设备动态检测要切换到的角色,并相应地对控制器进行编程。支持自动挂起功能,可在拔下电缆时关闭 USB 控制器。支持视频、音频、网络共享、文件传输、媒体传输和充电等功能接口。 表: USB 功能:Linux运行时电源管理
可根据您的要求启用运行时电源管理功能。LPM 支持已作为 https://lore.kernel.org/all/20231017131851.8299-1-quic_kriskura@quicinc.com/ 的一部分添加。 注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持 USB Type-A 端口的运行时电源管理。 默认情况下,运行时的 USB 挂起和恢复被禁用。要启用这些功能,请运行以下命令:sysfs 命令:
xhci-hcd.X.auto 值,其中 X = 0、1、2。它表示连接到 USB 的设备数量。连接的设备在 /sys/bus/platform/devices/xhci-hcd.X.auto/usb1/<node number> 下列出。<node number> 值取决于连接到 USB 端口的设备数量。
要为 LS 光学鼠标启用远程唤醒,请运行以下命令:
软件功能
软件支持以下 USB 功能。 表: USB 软件功能USB 架构
Qualcomm USB 软件架构大致由两个组件组成,一个基于纯上游,另一个是包含一些待处理功能相关变更的沙盒。纯上游直接从最新的稳定内核长期支持(LTS)6.6.2 版本中选取。该架构使用 Yocto(4.0 版)配方来创建二进制文件。 图:USB 软件架构/dev/ffs-xxx//dev/ffs-xxx//dev/ffs-xxx//sys/kernel/config/usb_gadget/…/sys/bus/usb/…Function driverFunction driverGadget frameworkconfigfs, UDC coreDevice controller driverClassdriverClassdriverUSB coreHost controller driverdwc3-qcomDWC3 core driversFemto phy driverQMP phy driverUCSIPMIC GLINKPM7325BaDSP corecharger firmwareVBUS, CC, D+,D-HSSS/sys/class/typec/port0/…Dual-role class driverType-C role swapdiag-routerport-bridgeadbd.serviceUSB peripheral mode configurationRuntime power management controlUser-space servicesVFSKernel-spaceType-C connector 沙盒使用以下特定于 Qualcomm 的功能实现。- USB_DWC3_QCOM:主要粘合驱动程序负责主机和设备模式下的 USB 功能,具体取决于连接的内容。粘合驱动程序的设备树条目包括时钟、电源轨和中断等资源。此功能使用 DWC3 核心驱动程序作为库,控制 DWC3 控制器的实际功能。更多详情,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/dwc3/dwc3-qcom.c?h=v6.6.2。
- Synopsys femto PHY:Qualcomm Synopsys femto PHY 是高速 USB PHY,负责控制 D+/D- 线路,并与充电器检测一起促进数据传输。更多详情,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-snps-femto-v2.c?h=v6.6.2。
- QMP DisplayPort 组合 PHY:Qualcomm 多用途 PHY(QMP)显示端口组合 PHY 设计用于通用用途。USB 的一个示例用例是 SuperSpeed 和 SuperSpeed-plus 功能,其中 Rx+/Rx- 和 Tx+/Tx- 可用于数据传输。当显示可以在 USB 以 SuperSpeed 工作时占用一对通道进行镜像功能时,PHY 支持显示备用模式。更多详情,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/phy/qualcomm/phy-qcom-qmp-combo.c?h=v6.6.2。
USB 接口
USB 支持多种接口来传输音频、视频、调试信息和网络共享。以下每个 USB 接口通信协议都不同,除了标准 USB 协议外,还有自己的协议。- Android 调试桥(ADB)
- USB ADB 是一个调试接口,通过 USB 连接提供对系统的访问。有关 ADB 的更多信息,请参见 https://developer.android.com/tools/adb。
- 文件名是
dev节点的虚拟eps名称。有关f_fs.c的更多信息,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_fs.c?h=v6.6.2。 - 用户空间服务:用户空间守护进程
adbd.service运行 ADB,并负责在底层内核驱动程序和主机 PC 之间建立连接。
- 诊断(diag)
- Diag 是用于从各个子系统收集日志数据和调试的诊断框架。诊断数据通过 USB 传输到主机 PC。
- 内核驱动程序:Diag 使用
f_fs.c暴露/dev/ffs-diag节点,该节点由用户空间服务操作以进行各种操作。dev节点具有以下三个文件:ep0:控制操作ep1:读取操作ep2:写入操作 这些文件名是dev节点的虚拟eps名称。有关f_fs.c的更多信息,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_fs.c?h=v6.6.2。
- 大容量存储
- 具有大容量存储驱动程序的通用接口驱动程序可供设备作为通用存储设备使用。
- 内核驱动程序:
mass_storage功能由f_mass_storage.c驱动程序调节。此驱动程序暴露dev node[revisit],由主机 PC 控制。有关大容量存储的更多信息,请参见 https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git/tree/drivers/usb/gadget/function/f_mass_storage.c?h=v6.6.2。
- 远程网络驱动程序接口规范(RNDIS)
- RNDIS 是 Microsoft 为动态即插即用 I/O 总线(如 USB)上的网络设备开发的规范。
- 内核驱动程序:它使用
f_rndis驱动程序,该驱动程序存在于上游 Linux 内核中,直接与网络接口或堆栈通信。
- 网络控制模型(NCM)
- NCM 是一种协议,与 RNDIS 相比,旨在提供高级特性和功能。
- 它通常出现在 USB 设备必须处理苛刻网络任务的应用中。
- USB 音频类 2(UAC2)
- UAC2 是控制 USB 音频设备与计算机之间通信的标准。
- UAC2 支持更高的音频数据传输速率,从而改善音频质量并减少延迟。
- USB 视频类(UVC)
- UVC 是一种标准,定义了视频流设备(如网络摄像头)应如何使用 USB 与计算机通信。
- UVC 便于视频设备的即插即用功能。
USB 工具
下表列出了一些常用的 USB 工具。 表: USB 工具和下载详情配置 USB 引导加载程序
引导加载程序中用于调整高速和 SuperSpeed USB 信号质量的设备树参数可以使用 Qualcomm DeviceTree 编辑器(QDTE)工具进行修改。 QDTE 工具用于通过编辑 xbl_config.elf 文件来配置设备树二进制 Blob,如下图所示。有关如何配置设备树 Blob 的更多信息,请参见 QDTE 部分。Linux 主机上的设备树文件路径为 /boot_images/boot/Settings/Soc/<Chipset>/Core/WiredConnectivity/USB/usb.dtsi。 图:设备树布局 下表列出了用于调整 HS-USB PHY 和 SS USB PHY 信号质量的属性。 表: USB 配置属性配置 USB 摄像头
Qualcomm Linux 设备为符合 USB 视频类(UVC)标准的 USB 网络摄像头提供驱动程序支持。Linux 内核的uvcvideo 驱动程序支持摄像头。有关 uvcvideo 驱动程序的更多信息,请参见 https://www.kernel.org/doc/html/v4.19/media/v4l-drivers/uvcvideo.html。
uvcvideo 驱动程序将这些摄像头暴露为 V4L2 视频设备,可以通过字符设备节点(如 /dev/videoX)访问。
在用户空间中,应用程序可以使用 v4l2src GStreamer 插件管理 USB 摄像头,该插件与 Qualcomm 智能多媒体 SDK(IM SDK)一起提供。或者,Yavta(yet another V4L2 test application)等程序直接与 V4L2(Video4Linux2)接口交互以测试和控制摄像头设备。
如果目标上没有 YAVTA,请按照以下步骤交叉编译并安装它:
- 可以使用以下任一方法建立交叉编译环境。
- 方法 1:要设置交叉编译环境,请运行以下命令。
- 方法 2:要设置交叉编译环境,请运行以下命令:
- 下载交叉编译器。
- 解压交叉编译器。
- 运行以下命令为交叉编译设置环境。
- 下载交叉编译器。
- 方法 1:要设置交叉编译环境,请运行以下命令。
- 克隆 Yavta 仓库并更改目录。
- 交叉编译该工具。
- 要将 Yavta 推送到 Qualcomm Linux 硬件 SoC,请执行以下操作:
- 在宽松模式下打开 SSH shell 或使用 ADB shell。有关如何运行 SSH 的更多信息,请参见 Use SSH 部分。
- 挂载文件系统。
- 使用 SCP 或类似工具传输文件。
例如,
scp yavta root@10.92.162.185:/usr/bin - 为 Yavta 分配执行权限。
前提条件:获取图像格式和大小
要通过 Yavta 或 GStreamer 配置 USB 摄像头,以下步骤是必需的。- 要了解枚举详情,请插入 USB 摄像头并运行以下命令。
将显示以下输出。
- 从串行控制台识别创建的 USB 摄像头视频节点 /dev/videoX。
注意
1-1/1-1:1.0值根据连接的 USB 设备而变化。 将显示以下输出。 - 要使用 Yavta 查看支持的输出格式和大小,请运行以下命令:
其中
X值基于节点。 例如:将显示以下输出。 - 从第 3 步选择所需的图像格式和大小。
使用 Yavta 配置 USB 摄像头
前提条件:确保 Yavta 已交叉编译,并已识别输出格式和大小。- 要选择 MJPEG 格式(1280x720 输出大小、30 fps),在 /tmp/ 下捕获 10 帧,文件名为 testmjpeg-00000*.bin,请运行以下命令。
将显示以下输出。
- 要选择 YUV 格式(1280x960 输出大小、30 fps),在 /tmp/ 下捕获 10 帧,生成的文件名为 testyuv-00000*.bin,请运行以下命令。
注意使用命令
#setenforce 0启用宽松模式。 将显示以下输出。
在 Qualcomm IM SDK 中使用 GStreamer 配置 USB 摄像头
Qualcomm IM SDK 使用 GStreamer,一个开源的多媒体框架,用于在多媒体和机器学习领域公开简单的 API 和插件。有关安装 Qualcomm IM SDK 的信息,请参见 Getting Started 部分。 Qualcomm IM SDK 包括v4l2src 插件,该插件允许从具有所选格式的 USB 摄像头输入。waylandsink 插件负责在 Wayland 显示器上渲染视频输出。
注意 前提条件:
- 确保 Yavta 已交叉编译,并已识别输出格式和大小。
- 要下载或更新固件,请参见 Download PCIe to USB controller firmware。
- 要为 Wayland 显示器设置环境变量,请在串行控制台中运行以下命令。
- 使用 GStreamer 命令将视频从摄像头流式传输到 UI。确保您设置了适当的设备 ID (
/dev/videoX) 并根据 USB 摄像头检测选择正确的格式。 注意在 GStreamer 中,YUYV 颜色格式称为 YUY2。因此,在设置管道时您必须指定 YUYV 格式,并在 caps 过滤器中使用 YUY2。- 对于 720p,运行以下命令:
将显示以下输出。
- 对于 1080p,运行以下命令:
- 对于 720p,运行以下命令:
自定义 USB 设备
本节描述 USB 软件中各种配置和自定义的要求。具有 diag 和 ADB 接口的 USB 组合的示例 shell 脚本
使用 configfs 自定义
configfs 文件系统提供与 sysfs 功能相反的功能。多种接口可以配置 Linux USB gadget,每个接口代表一个 USB 功能。
这些接口的组合可以通过类似于上一节中启动 diag-adb 的命令进行枚举。
可用的 USB 组合如下。
A4A1 NCM4EE7 ADB900E DIAG901C DIAG + UAC2901D DIAG + ADB9015 MASS_STORAGE + ADB9024 RNDIS + ADB902A RNDIS + MASS_STORAGE902B RNDIS + ADB + MASS_STORAGE902C RNDIS + DIAG902D RNDIS + DIAG + ADB902F RNDIS + DIAG + MASS_STORAGE9060 DIAG + QDSS + ADB908C NCM + ADB90CA DIAG + UAC2 + ADB90CB DIAG + UVC + ADB90CC DIAG + UAC2 + UVC + ADB90DF DIAG + UVC90E0 DIAG + UAC2 + UVCF000 MASS_STORAGEF00E RNDIS
启用和配置 UVC 用例
USB 视频设备类(也称为 USB 视频类或 UVC)是一种 USB 设备类,描述能够流式传输视频的设备,例如网络摄像头、数字摄像机、转码器、模拟视频转换器和静态图像相机。 USB 视频类规范的最新版本为 v1.5。USB 实施者论坛在 v1.5 中描述了基本协议和不同的有效载荷格式。 注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持 UVC 用例。 测试 UVC 的工具和程序如下:- UVC gadget(设备端):这是一个用于测试
f_uvc功能驱动程序的示例应用程序。它打开由uvc_gadget创建的视频节点,并以指定的帧速率发送 MJPEG 帧。此应用程序为 DUT 交叉编译。 注意确保主机上已安装交叉编译 64 位 Arm® 技术编译器所需的软件包和工具。- 可以使用以下任一选项建立交叉编译环境。
- 选项 A:运行以下命令。
- 选项 B:要设置交叉编译环境,请运行以下命令:
- 下载交叉编译器。
- 解压交叉编译器。
- 运行以下命令为交叉编译设置环境。
- 下载交叉编译器。
- 选项 A:运行以下命令。
- 要构建 UVC gadget 工具,请执行以下操作。
- 克隆
uvc-gadget仓库。 - 修改
Makefile以进行静态构建。 - 为
arm64交叉编译以生成uvc-gadget可执行文件。
- 克隆
- 可以使用以下任一选项建立交叉编译环境。
- UVC viewer(主机端):要接收 UVC 数据,请在计算机上打开任何 USB 网络摄像头应用程序。
- 要验证,请将 UVC gadget 应用程序和示例图像文件推送到设备,请执行以下操作:
- 在宽松模式下打开 SSH shell 或使用 ADB shell。有关如何运行 SSH 的更多信息,请参见 Use SSH 部分。
- 挂载文件系统。
- 使用 SCP 或类似工具传输文件。
例如,
scp uvc-gadget root@10.92.175.138:/usr/bin - 分配执行权限。
- 更改为任何 UVC 组合(90DF 或 90CB)。
- 要验证,请将 UVC gadget 应用程序和示例图像文件推送到设备,请执行以下操作:
uvc_gadget 应用程序。
- YUYV
- 将
image-720.yuv图像文件推送到/root或/etc。 - 使用
uvc-gadget工具验证image-720.yuv图像。- 其中
X表示组合切换后创建的新视频节点 - 其中
-f是格式,值如下:0= V4L2_PIX_FMT_YUYV1= V4L2_PIX_FMT_MJPEG
- 其中
- 将
- MJPEG
- 将
image-720.jpg图像文件推送到/root或/etc。 - 使用
uvc-gadget工具验证image-720.jpg图像。- 其中
X表示组合切换后创建的新视频节点 - 其中
-f是 <format>,值如下:0= V4L2_PIX_FMT_YUYV1= V4L2_PIX_FMT_MJPEG
- 其中
- 将
- 有关用法信息,请运行以下命令。
将显示以下输出。
UAC 用例
USB 音频使用同步、中断和控制传输。所有音频数据都使用同步传输进行传输。中断传输用于传递有关音频时钟可用性的信息,控制传输用于设置音量、请求采样率。 注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持 UAC 用例。 要验证,请选择具有 UAC 功能的 USB 组合。 要捕获或播放,请使用rootfs 中提供的 tinyutils 应用程序,如 tinyplay/tinycap。当 UAC 驱动程序绑定成功时,该应用程序会打开 /dev/snd/ 中创建的 PCM 节点。
以下是一些示例命令。
- 列出 Linux 主机上的声卡。
- 播放音频文件。
- 要将音频从设备播放到主机,请推送具有匹配音频配置的
file.wav文件。以下是示例配置的示例。输出:输出:输出:输出:输出:输出:注意要修改音频配置,请在将 USB 组合建立为 90CA 之前调整上述参数。 - 在 SSH shell 上运行以下命令或使用 ADB shell。
将显示以下输出。
- 在 Linux 主机上运行以下带有
arecord等应用程序的命令来捕获音频。
- 要将音频从设备播放到主机,请推送具有匹配音频配置的
- 录制音频文件。
- 在 Linux 主机上运行以下带有
aplay等应用程序的命令来播放音频。 - 在设备的 SSH shell 上运行以下命令或使用 ADB shell。
将显示以下输出。
- 在 Linux 主机上运行以下带有
USB 电力传输中的数据角色交换
数据角色交换(DR_SWAP)是使用 USB Type-C 连接器在端口伙伴之间交换 DFP(主机)和 UFP(设备)角色。电源角色交换(PR_SWAP)在端口伙伴之间交换源和接收角色。 注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持使用 Type-C 连接器进行数据和电源角色交换。- 数据角色
- 要将数据角色从主机切换到设备,请运行以下命令:
将显示以下输出。将显示以下输出。
- 要将数据角色从设备切换到主机,请运行以下命令:
将显示以下输出。将显示以下输出。
- 要将数据角色从主机切换到设备,请运行以下命令:
- 电源角色
- 要将电源角色从接收切换到源,请运行以下命令:
将显示以下输出。将显示以下输出。
- 要将电源角色从源切换到接收,请运行以下命令:
将显示以下输出。将显示以下输出。
- 要将电源角色从接收切换到源,请运行以下命令:
验证 USB 设备
下表列出了验证 USB 设备和主机模式的各种方法。 表: USB 设备和主机模式验证调试 USB 问题
本节介绍了获取调试日志的各种方法。调试方法包括regdumps、调试 ftraces、configfs 节点。这些日志在调试低功耗模式进入-退出、SMMU 故障、无时钟访问等问题时,提供事件和控制器状态详情的可见性。
注意Dragonwing IQ-9075 和 Dragonwing IQ-8275 不支持 USB Type-C 功能。
跟踪 USB
debugfs 跟踪提供了对 USB 线路上每个事务的更深层次的视图。要查看跟踪列表,请运行以下命令。
debugfs。如果未挂载,请运行以下命令挂载 debugfs。
USB regdump
USBdebugfs 提供以下信息。
注意a600000.usb 地址因芯片组而异。
- 操作模式。
示例输出:
- 设备模式下所有端点的状态和传输环缓冲区(TRB)队列。
- 当前链路状态。
示例输出。
- 列表处理器(LSP)转储。
示例输出:
regdump 命令提供以下寄存器的寄存器空间的当前状态:
- 设备模式寄存器,如 DCTL、DSTS 和 DCFG
- 全局寄存器,如 GCTL 和 GSTS

