pipe传输音频
发布时间: 2024-11-08 18:03:40
这个问题问的太大了,或者说题主因为你可能不了解USB传输的具体方式,所以实际上你这个问题问的让人不太好回答。
以网络作为例子吧,不知道题主你是否知道七层网络协议之类的说法:
网络可以是有线也可以是无线,其物理层上传输的模型是完全不同的。
物理层之上还有数据链路层,这一层上有MAC地址、ARP协议之类的概念。
数据链路层往上才有IP/TCP/UDP这些结构,而你浏览网页、聊QQ工作的都在更上层。
同样的,USB也是分层的,虽然跟网络的分层方法区别很大。
USB底层使用串行信号,使用NRZI编码(NRZI_网络),之上有USB frame(高速的还有微帧的概念),以及各种封包方式,比如SETUP/IN/OUT/DATA之类的。
在这一层之上,定义有传输模型,包括interrupt、Bulk、ISO、control四种模式,以及endpoint(代码中也有pipe的概念)。
在传输模型之上,才是device、interface等更高层的概念。
想想看USB 2.0的规范都是几百页的,想要在一个回答里说清楚是很困难的事情,如果题主真的有兴趣,可以看看USB2.0的规范,在USB-IF的官网上就有:USB.org - USB 2.0 Documents
规范有中文翻译的,但不全(我6年前学的时候不太全,现在不清楚)。
对于一个USB来说,具体使用的传输协议也不完全一样,因为不同的设备类(class driver)用的通信方式都不同,比如键盘鼠标多用interrupt传输,U盘以bulk为主,音频设备则用ISO传输。
对于U盘来说你还要学习SCSI命令才能理解为什么U盘这样工作。
总之,你这个问题问的太大了,建议阅读各种技术规范,不是一个回答能讲清楚的。