USB开发中需要弄清的一些概念
2009-05-29 19:22
288 查看
USB接口芯片
USB接口芯片一般是一块专用MCU,集成USB电气层协议。而USB协议就是USB固件做的事了,也有一部分USB协议MCU会集成USB固件
一般地,USB设备需要一个固件程序来处理USB协议,以及设备相关的内容。比如一个USB的数据采集卡,固件就是除了处理USB协议,就是负责采数据到端点。而读取数据就是设备驱动做的事了。再比如,USB设备配置时,使用控制传输,里面有一些错误处理也是固件需要做的,当然某些错误处理就是简单的不响应。USB设备驱动
USB设备驱动提供应用层一些USB设备通讯的接口,一个重要的细节就是Windows提供了总线驱动,所以USB设备驱动只应当和总线驱动做接口对接。我们不需要关心总线驱动和主控制器驱动间的关系,当然了解了也不是件坏事。设备枚举
设备枚举从电气层开始讲十分复杂,一般驱动开发者可以不了解。在驱动层,USB总线驱动程序会识别到USB设备,并且最终得到一些ID,系统就去查注册表加载对应驱动。如果没有查到对应驱动,那么系统就会提示发现新硬件。这些工作都是总线驱动程序在使用控制管道和固件通讯,得到设备描述符,进而得到一些ID。更详细一点的细节是: USB控制器或者HUB发现硬件,控制器驱动和总线驱动发现硬件,总线驱动向PNP管理器报告,PNP管理器进一步要求总线驱动报告什么设备(ID),PNP得到ID后查询注册表,然后AddDevice。USB描述符
USB描述符用于描述USB设备的各种特性,其实是硬件的配置信息,其中重要的是需要和软件配合的信息。比如某个端点的方向、类型等端点
端点由USB抽象出来,端点号,缓冲区用于实际USB固件和驱动数据交换。端点号是一个数,这个数由芯片厂家决定,USB描述符里需要正确使用管道
一条端点到端点数据传输的通道,由USB协议抽象出来,没有实际硬件对应。比如控制管道和接口芯片通讯,固件配合处理各总USB控制传输USB通讯
USB本身是一种通讯,所谓USB设备是一种按USB协议通讯的方式驱动的设备。像其它外设一样,只不过USB通讯较为复杂,复杂到时序控制无法满足要求的程度。相关文章推荐
- java web开发中需要弄清楚的一些概念
- Android 开发需要知道的一些基本概念
- java web开发中需要弄清楚的一些概念
- 【大巧不工】--------前端开发一些概念
- Java Web应用开发中的一些概念(转载)
- Java开发需要知道的一些Linux命令
- 查新功能的一些bug点还有开发需要注意的事项
- Linux USB 驱动开发-USB设备基础概念
- Windows CE下USB设备驱动开发的一些基础知识(转)
- Android应用开发中,需要注意的一些事项
- SharePoint工作流开发点滴(1) - 一些概念
- NIO需要了解的一些概念
- android开发的一些概念
- objective-c一些需要记住的概念
- cocos2d游戏开发中的一些基本概念
- 用JASPER开发需要的一些jar包
- 【小松教你手游开发】【面试必读(编程基础)】开始构建三维图形引擎:点、向量和一些基本概念
- 一些概念需要明确的解释一下
- vue需要了解的一些概念
- Android开发的一些需要注意的细节