以下作为一个例子:
文章插图
2. DisplayPort如前文中所述,typec拥有4对差分信号,上/下行各2对 。USB-IF推出了一个Alternate Mode交替模式,支持将USB Type-C线缆转化为其他用途,而DP交替模式就是第一个应用,它可以将其中一些或者全部差分信号通道转化为DisplayPort信号通道,如果还有剩余的差分信号,则可以继续用于USB 3.1高速数据传输 。
有了DP交替模式,USB Type-C的实力将会大增,因为它让平板电脑、笔记本产品通过一个迷你接口实现高速数据传输、视频输出、电力供应等功能,带来类似手机那样的“单接口、多功能”的可能性,这比之前通过USB接口输出视频信号的方案更加强大 。
以下作为一个例子:
文章插图
三、USB3.0 OTG在usb2.0时代,为了满足移动设备单usb口既可以为主也可以为从的需求,出现了otg功能 。Usb2.0的otg是通过micro或miniusb座子上的第5个id pin上的电平来完成识别,当id pin的电平为高,则为从机,当该电平为低时,则为主机 。
我们市面上买的otg线,内部电路就是把id pin与GND线相接,以实现otg线插入后,手机可以作为host端
在usb3.0中,id pin的功能同样被强大的typec所取代,主从的识别将通过cc来识别 。同时主从双方也可以通过cc的通讯来切换角色 。
在usb2.0中,供电方与受电方和设备的主从关系是绑定的,只有host可以给devices供电 。usb3.0中则完全不同,两者完全独立,在做host的同时,依旧可以接受供电 。解决了“手机没电时,就无法插usb设备”的问题
同时在硬件上,我们需要明确usb 3.0 otg的组成部分
- usb控制器
在usb3.0中,控制器则只剩了xhci,与dwc3,同样的dwc3也是拥有otg功能 。
- usb phy
- typec phy
1.EXTCONExternal Connectors是usb用于状态通知的驱动,当phy收到中断,处理完usb状态后,通过extcon驱动,广播到已监听该extcon的所有驱动
使用devm_extcon_register_notifier来注册监听usb状态变化
使用devm_extcon_dev_register来注册管理usb的状态变化
以下host的识别作为一个例子:
文章插图
2.USB3.0 HOSTUsb3.0相比于usb2.0,在usb core层,驱动并没有太大变化,仍旧与原来的流程相同,usb代码的核心数据结构仍然是URB,URB的使用方法也与原来相同:
文章插图
区别在于usb hcd之后的代码,xhci中,核心的数据结构为TRB,每一笔数据以一个trb来做交换,在xhci.c中xhci_urb_enqueue进一步判断数据类型,并对stream id以及burst做判断,并提交到控制器中
3. USB3.0 OTG(1) ConfigFS在《带你遨游USB世界》中,我们介绍了Android.c的gadget配置方式,在早期时,linux的gadget驱动都是固定功能,即开机后usb功能就已固定,无法改变 。而这样的功能,明显无法满足移动设备对于otg功能的需求,因此android推出了android.c和composite.c的复合功能的gadget驱动 。
在此之后,android.c的方式沿用了很久,直到linux更新了新的gadget驱动----configfs子系统,满足了移动端的所有需求 。相比于android.c,configfs更加灵活,因此替代了android.c 。
在新的linux代码中,configfs基本替代了android.c,因此我们对configfs做一定的介绍
启动流程:
文章插图
启动后,上层UsbDeviceManager.JAVA通过setprop sys.usb.config的属性来控制gadget功能,例如:
文章插图
这其中每个绑定的功能都应gadget中的一个驱动,如mtp对应drivers/usb/gadget/function/f_mtp.c
推荐阅读
- 网络安全技术分享
- 互动场景下的低延迟编码技术
- 这种复杂的多条件关键词归类查询技术,只有5.6%的Excel高手会用
- 和USB端口不够用说拜拜,ORICO7口USB3.0分线器体验
- 精梳棉和纯棉的区别是什么?
- 新版Windows10 对USB输出控制的更改
- 关于品茶的感悟,想品茶必须要有好的泡茶技术
- 日本|DVD光驱还没有绝迹:升级USBC接口、售价180多元
- 感官审评技术研究,茉莉花茶审评
- 程序员那些事:总结一个技术总监的教训和经验