USB主从切换浅析及LAN7800调试

preview
需积分: 0 6 下载量 116 浏览量 更新于2023-10-25 收藏 1.03MB PDF 举报
USB主从切换浅析及LAN7800调试 一、硬件驱动层 在USB驱动中,硬件层面主要包含三部分:USB controller、USB PHY、USB interface。 1. USB controller:USB controller是在Soc内部实现的USB逻辑电路,实现了USB协议的处理。UDS710目前支持USB Controller:DWC3、MUSB。当前我们使用的是DWC3,支持USB3.0。需要注意的是,MUSB不支持USB HUB,而DWC3支持USB HUB。 2. USB PHY:USB PHY负责完成USB信号的数模转换。 3. USB interface:分两种:Micro B 和 Type-c。Type-c 接口与芯片相关,在芯片内有Type-c Controller实现Type-c协议。Micro-B接口不同于Type-c,在芯片内部没有可依赖的逻辑电路,而是依赖EIC检测电平的变化,从而达到USB cable插拔检测的目的。 二、软件驱动层 软件层面USB驱动大致包含三个模块:UDC driver、USB PHY driver、USB interface driver。 1. UDC driver:直接控制硬件的USB controller。其中包含两种不同的UDC driver,分别是DWC3/MUSB。源码路径如下:kernel4.14/drivers/usb/dwc3/、kernel4.14/drivers/usb/musb/。 2. USB PHY driver:USB PHY驱动源码在kernel4.14/drivers/usb/phy/。 3. USB interface driver:Type-c驱动代码在kernel4.14/drivers/usb/typec/。Micro-B由于硬件上不存在独立的逻辑,代码没有单独的路径,每个UDC driver中都有Micro-B的源码在kernel4.14中。kernel提供extcon模块,以此来实现对Micro-B接口的管理。 三、USB主模式LAN7800驱动调试 1. USB驱动主从模式切换调试流程:在kernel4.14/arch/arm64/configs/sprd_roc1_defconfig中配置如下宏:对于kernel4.14/arch/arm64/boot/dts/sprd/roc1.dtsi和kernel4.14/arch/arm64/boot/dts/sprd/ud710-2h10.dts需按上一章节所示进行配置。然后在kernel4.14/drivers/usb/dwc3/core.c中,根据“snp,dwc3"对dts和driver进行匹配,然后执行dwc3_probe(),大致流程如下: 在上述过程中,如果dr mode为device,则初始化gadget;如果dr mode为host,需要初始化host模式。
身份认证 购VIP最低享 7 折!
30元优惠券