最近在调试usb 功能设备驱动程序,包括hid类设备和audio等。发现很多问题都卡在了HUB的分离处理传输上,不知道是主机控制器兼容性的问题还是配置不对,在周期传输中hub总会出现各种各样的问题。趁着周末好好把hub这块基本的流程看一下。
硬件上主要就是hub芯片了,host接口直接引到上行端口,然后分4路引出:直接外接设备。另外MiniAB接口通过OTG转接线分为Adevice和Bdevice两种情况,暂不分析。常见的HUB芯片为GL85X系列,一般内部集成一个微控制器和TT,以及中断端点等。hub一般也分为高速hub和全速hub,当为高速hub时对于插入的高速设备是透明传输,对于插入的全速设备来说则进行转发处理。
USB硬件很简单,这主要是靠大量协议和软件的复杂性换来的,所以说什么都是有代价的。