赛灵思
直播中

赖治添

7年用户 212经验值
私信 关注
[问答]

如何成功连接USB 3.0设备到ZCU102板?

我想为在ZCU102 ES2板上运行的Linux启用USB 3.0主机模式。
(例如USB 3.0 pendrive)
Linux称它有两个u***总线(lsu***)。
但是,每当我将USB 3.0驱动器连接到主板时,驱动器都被识别为USB 2.0驱动器而不是USB 3.0驱动器。
有没有人成功连接USB 3.0设备到ZCU102板?
---------------------------
在连接USB3.0驱动器之前,
$ lsu*** -t /:Bus 02.Port 1:Dev 1,Class = root_hub,Driver = xhci-hcd / 1p,5000M /:Bus 01.Port 1:Dev 1,Class = root_hub,Driver = xhci-hcd / 1p
,480M
这表明总线02是USB 3.0 /总线01是USB 2.0
连接USB 3.0驱动器后,
$ lsu*** -t /:Bus 02.Port 1:Dev 1,Class = root_hub,Driver = xhci-hcd / 1p,5000M /:Bus 01.Port 1:Dev 1,Class = root_hub,Driver = xhci-hcd / 1p
,480M | __端口1:Dev 2,如果为0,Class = Mass Storage,Driver = uas,480M
即使驱动器支持USB 3.0 SuperSpeed,它也只能连接到USB 2.0的总线01
我想要连接这个驱动器
以下是我用来启用USB 3.0 GTR PHY的配置。
-------------------------------------
我使用petalinux 16.4来构建内核/设备树和rootfs。
我调查了一下:
http://www.wiki.xilinx.com/Zynq+ ... x+USB+device+driver:说dwc3驱动支持USB 3.0主机模式
http://www.wiki.xilinx.com/Zynq+ ... ux+SIOU+driver:SIOU serdes driver
我选择的ICM设置:Lane0 - PCIe / Lane1 - DP0 / Lane2 - u***0 / Lane3 - Sata1
SIOU SERDES:
我在psu_init.c中检查了ICM_CFG0和ICM_CFG1,发现u***0在PS-GTR通道1上正确设置。
我的设备树中也有正确的phys信息
& dwc3_0 {> status =“okay”;> dr_mode =“host”;> snps,u***3_lpm_capable;> phy-names =“u***3-phy”;> phys =;};
我检查了gtr lane2 for u***0是来自内核消息的pll_locked
$ dmesg |
grep gtr [2.470147] xilinx-psgtr fd400000.zynqmp_phy:Lane:3 type:3 protocol:2 pll_locked:yes [2.629933] xilinx-psgtr fd400000.zynqmp_phy:Lane:2 type:0 protocol:3 pll_locked:yes //> Lane2
type 0(u***0)protocol 3(u***)
此外,ZCU102 ES2还具有用于USB / PCIe / SATA / DP的额外GT多路复用器(开关)。
PS_GTR_LANE_SEL0~4由I2C0 gpio生成,我在设备树中设置如下:
& i2c0 {> status =“okay”;> clock-frequency =;
> tca6416_u97:gpio @ 20 {>>> / * >> * *从U-Boot启用所有GT>> * i2c mw 20 6 0 - 设置IO到输出>> * i2c mw 20 2 ef - 在引脚上设置输出值
0-7 >> * i2c mw 20 3 ff - 设置引脚上的输出值10-17 >> * / >>兼容=“ti,tca6416”;>> reg =; >> gpio-controller; >>#gpio-
cells =; >>> / * >> * IRQ未连接>> *行:>> * 0 - PS_GTR_LAN_SEL0 >> * 1 - PS_GTR_LAN_SEL1 >> * 2 - PS_GTR_LAN_SEL2 >> * 3 - PS_GTR_LAN_SEL3 >> * 4 - PCI_CLK_DIR_SEL >>
* 5 - IIC_MUX_RESET_B >> * 6 - GEM3_EXP_RESET_B >> * 7,10 - 17 - 未连接>> * / /
>> gtr_sel0 {> >> gpio-hog; >>> gpios =; >>>输出低;
/ * PCIE = 0,DP = 1 * / >>> line-name =“sel0”;>>}; >> gtr_sel1 {> >> gpio-hog; >>> gpios =; >>>输出高;
/ * PCIE = 0,DP = 1 * / >>> line-name =“sel1”;>>}; >> gtr_sel2 {> >> gpio-hog; >>>> gpios =; >>>输出高;
/ * PCIE = 0,USB0 = 1 * / >>> line-name =“sel2”;>>}; >> gtr_sel3 {> >> gpio-hog; >>>> gpios =; >>>输出高;
/ * PCIE = 0,SATA = 1 * / >>> line-name =“sel3”;>>};>};
.............
};
这些PS_GTR_LANE_SEL [0~4]信号正确显示在内核消息中:
〜$ dmesg |
grep sel [2.806147] GPIO线322(sel0)输入/输出低[2.811817] GPIO线323(sel1)输出/高电平[2.817568] GPIO线324(sel2)输出/高电平[2.823314] GPIO线325
(sel3)输出/高
-----------------------------

回帖(5)

李晔皓

2019-10-16 09:25:51
固定:
我怀疑它是主机适配器。
订购这个,不要打扰亚马逊上的那些,不要:
Firefold USB 3.0 A型母头到Micro USB B型公头适配器。
确认有效!
在原帖中查看解决方案
举报

李晔皓

2019-10-16 09:40:19
我刚刚研究USB 3.0 ZCU102,并从Ultrascale Linux USB驱动程序维基中找到以下内容[http://www.wiki.xilinx.com/Zynq+Ultrascale+MPSOC+Linux+USB+device+driver]
它有一个内核检测到的“SuperSpeed USB”闪存驱动器,所以我会尝试重现它。
另外,这里还有其他一些事情要做:
1)检查跳线
2)尝试其他USB3.0设备
3)克隆Xilinx内核,并调查您正在使用的Xilinx驱动程序的提交
希望你找到解决方案
--Tom
举报

李晔皓

2019-10-16 09:57:58
还有一件事:
您是否正在使用Wiki 3.0中的USB 3.0 OTG适配器?
举报

李晔皓

2019-10-16 10:05:30
固定:
我怀疑它是主机适配器。
订购这个,不要打扰亚马逊上的那些,不要:
Firefold USB 3.0 A型母头到Micro USB B型公头适配器。
确认有效!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分