赛灵思
直播中

邢洋

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

为什么Zynq ZC706主板USB OTG不检测拇指驱动器?

你好
我们正试图在OTG模式下测试ZC706板的USB接口。
我们的目标是验证电路板的主机和设备模式操作,即检测并安装板上的拇指驱动器,并使用大容量存储小工具驱动程序将PC上的板检测为USB存储设备。我们正在使用
与ZC706board一起提供的“PCIE目标参考设计”。
Linux内核源代码是从xilinx git repository中提取的。内核已使用“xilinx_zynq_defconfig”(arch / ARM / configs / xilinx_zynq_defconfig)进行配置。
配置包括
- > USB Host支持,
- >大容量存储支持
- > USB小工具支持
- >小工具海量存储支持
- > USB OTG双重角色支持。
此外,根据原理图,所有跳线都已设置为启用USB OTG。
1. J48到位置2-32。
J10到ON位置3。
J50到位置1-24。
J49保持打开状态(我们使用的是一端带有标准USB(母)插座的连接器,另一端带有微型B(插座)。我们将USB拇指驱动器插入插座,并将微型B端连接到插座上。
board.J49保持开路以确保USB ID引脚悬空)
设备树中的dr_mode属性也被修改为“otg”。
我们能够使用小工具大容量存储驱动程序验证设备模式功能,但电路板未检测到拇指驱动器。
有没有人知道哪些是错的?
我们错过了什么吗?
请建议。谢谢。

回帖(4)

马丹丹

2019-10-31 09:31:28
在进一步研究xilinx USB OTG驱动程序代码时,我们注意到了一些事情
1.最初没有连接拇指驱动器时,id引脚悬空,OTG状态为“b_idle”。
2.插入pendrive时,发生id更改中断,OTG状态变为“a_idle”
3.根据USB OTG规范,下一个状态“a_wait_vrise”将为总线(VBus)供电,并且为了从“a_idle”更改为“a_wait_vrise”,必须满足以下条件:
如果A设备应用程序不想丢弃总线(a_bus_drop = FALSE),并且满足以下任何条件: 
&A设备应用程序正在请求总线(a_bus_req = TRUE), 
或在总线上检测到SRP(a_srp_det = TRUE) 
或检测到ADP更改(adp_change = TRUE) 
或者•A设备刚刚启动其USB系统(power_up = TRUE)。
这些都不会发生,这就是为什么电路板没有给拇指驱动器供电的原因。
我们试图从用户应用程序中提供“a_bus_req”。
结果是状态变为“a_wait_vrise”并且pendrive被检测到并且我们能够成功安装它。
任何人都知道为什么这不会自动发生。
请帮忙。
这影响了我们的客户交付。
提前致谢
举报

黄淳

2019-10-31 09:51:27
rohit.mohan@vvdntech.com写道:
请帮忙。
这影响了我们的客户交付。
提前致谢
只是一个提示:如果它阻止客户交付,不要浪费时间试图在论坛上得到答案。
打开一个webcase,并与当地的FAE合作。
向FAE明确表示在问题解决之前您无法运送任何东西。
----------------------------是的,我这样做是为了谋生。
举报

马丹丹

2019-10-31 10:01:13
@bassman感谢您的提示。
我们已经提交了一个webcase,他们说这个问题似乎是xilinx OTG驱动程序中的一个错误,他们已经要求他们的软件团队确认它。
但是我们与客户支持人员的沟通渠道有点慢。我可能会从论坛得到一些指示。除此之外,我们还没有与xilinx进行本地联系。
我们的客户来自美国,他们购买了评估板并发送给我们。
让我请他们联系xilinx并获得FAE来调查这个问题。谢谢了!
美好的一天!
举报

马丹丹

2019-10-31 10:11:29
为了防止有人遇到同样的问题:Xilinx确认,为了让电路板检测拇指驱动器,必须在将驱动器插入USB端口后启动用户空间总线请求。
这可以使用命令echo 1> /sys/devices/amba.0/e0003000.ps7-u***/xu***ps-otg.0/inputs/a_bus_req来完成。确切路径可能因设备树中的USB节点而异
举报

更多回帖

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