查看: 7238|回复: 3

[求助] IMX6 OTG主从切换问题

[复制链接]

该用户从未签到

1

主题

2

帖子

0

新手上路

Rank: 1

积分
10
最后登录
2019-1-8
发表于 2016-9-29 14:03:49 | 显示全部楼层 |阅读模式
本帖最后由 Mostion 于 2016-9-29 14:05 编辑

移植了linux系统,USB OTG做主设备完全没有问题,做从设备加载g_mass_storage模块,也能正常模拟出U盘。但是若在连接上Hub的时候开机,然后再加载g_mass_storage模块,或者在连接Hub线的时候加载该模块,PC机则无法识别U盘。系统板有2组USB总线,一组Host,一组OTG。内核应该是在官网上下载的做好的内核...硬件上测出vbus和id信号均正常...请问最可能是硬件上有问题还是驱动上有问题?
我知道答案 目前已有3人回答
回复

使用道具 举报

  • TA的每日心情
    开心
    2016-10-28 10:25
  • 签到天数: 4 天

    连续签到: 1 天

    [LV.2]偶尔看看I

    1

    主题

    65

    帖子

    0

    中级会员

    Rank: 3Rank: 3

    积分
    256
    最后登录
    2018-3-22
    发表于 2016-9-29 19:01:21 | 显示全部楼层
    本帖最后由 魏科 于 2016-9-29 19:10 编辑

    你好,
    一个MCU的OTG是通过判断一个D脚电平的高低,来决定自己进入USB-Device还是USB-Host的,当这个MCU的这个OTG-USB口通过USB线插入到PC,PC通过这根USB线将MCU的D脚电平拉高(或者拉低,不记得了),产生一个事件,让MCU切换到USB-Device模式(把自己当做Device,当做一个仆人);另外,如果是一个U盘插入到MCU的这个OTG-USB口,这个D脚的电平变化就不同了,U盘需要MCU的USB口供电,MCU就进入USB-Host模式,开始去识别这个U盘。这是基本原理。那么,再想想USB-Hub这个东西,USB-Hub原本是给PC用的,不如把它看成PC的一个USB-Device,USB-Hub需要PC供电,PC是奶妈。那么,再进一步,USB-Hub设备插入MCU的OTG-USB口,那么MCU的这个USB口要给USB-Hub供电,此时,MCU是奶妈,MCU以为有一个U盘要吃奶(供电),进入了USB-Device模式(D引脚电平变化和U盘插入时一样),此时,USB-Hub的子USB口,用一根USB线连接PC,PC永远认为插入自己USB口的是个USB设备,所以呢,这个MCU---USB-Hub---PC的链路上,居然有2个“”奶妈“,MCU始终不承认自己是个USB设备(因为检测不到D脚电平的特征,所以不能进入USB-Device模式),造成了尴尬局面,所以就无法识别g_mass_storage或者g_file_storage模块了。另外,如果把USB-Hub插入到PC,USB-Hub的子USB口连接MCU的OTG-USB口,这样是可以识别g_mass_storage和g_file_storage的,不过传输速度会慢50%左右,你可以试一下。
    希望以上回复对你有帮助,请原谅我没办法描述D脚电平的高低变化详细过程,谢谢。
    回复 支持 反对

    使用道具 举报

    该用户从未签到

    1

    主题

    2

    帖子

    0

    新手上路

    Rank: 1

    积分
    10
    最后登录
    2019-1-8
     楼主| 发表于 2016-10-8 10:23:55 | 显示全部楼层
    魏科 发表于 2016-9-29 19:01
    你好,
    一个MCU的OTG是通过判断一个D脚电平的高低,来决定自己进入USB-Device还是USB-Host的,当这个MCU的 ...

    不好意思,您说的这个情况我能理解!不过我们现在的情况不是mcu--hub-pc的链路,OTG做主设备时是muc-hub链路,从设备是mcu-pc链路。在连接hub的时候,如果加载了g_mass_storage模块,或者在开机前连接有hub,则后续拔掉hub,加载g_mass_storage模块,连接USB OTG线到PC,PC无法识别模拟到的U盘。第一种情况很好理解,毕竟连接hub的情况下,硬件上是识别OTG为主设备的,出错是很正常的,但是第二种情况肯定是哪里有问题的...做测试把MCU上的USB驱动全部module化,发现在加载ehci-hcd.ko模块前,如果链接有hub,则后续OTG无法正常做从设备,如果加载该模块后才有hub连入,则主从设备能正常切换...具体问题就这样,希望有描述的够详细!麻烦各位大婶了...
    回复 支持 反对

    使用道具 举报

  • TA的每日心情
    擦汗
    2018-9-19 15:38
  • 签到天数: 2 天

    连续签到: 1 天

    [LV.1]初来乍到

    0

    主题

    15

    帖子

    0

    新手上路

    Rank: 1

    积分
    48
    最后登录
    1970-1-1
    发表于 2016-10-8 23:43:40 | 显示全部楼层
    回去测试下看,你的linux版本是哪个?
    回复 支持 反对

    使用道具 举报

    您需要登录后才可以回帖 注册/登录

    本版积分规则

    关闭

    站长推荐上一条 /3 下一条

    Archiver|手机版|小黑屋|恩智浦技术社区

    GMT+8, 2025-7-20 20:34 , Processed in 0.114553 second(s), 24 queries , MemCache On.

    Powered by Discuz! X3.4

    Copyright © 2001-2024, Tencent Cloud.

    快速回复 返回顶部 返回列表