usb

摘要:
USBHost的意思是该设备可以作为USB主机连接USB外围设备,如连接U盘、键盘、鼠标等。对于手机来说,同时支持Host和Device模式的,称之为OTGUSBlinux设备通常有一个或多个配置;配置通常有一个或多个接口;接口通常有一个或多个设置;接口有零或多个端点。设备描述符设备代表一个USB设备,它由一个或多个配置组成。

USB Host的意思是该设备可以作为USB主机连接USB外围设备,如连接U盘、键盘、鼠标等。

与之对等的是USB Device(有些地方翻译成target),意思是该设备可以以U盘的身份连接USB主机。

对于手机来说,同时支持Host和Device模式的,称之为OTG

USB linux

设备通常有一个或多个配置;

配置通常有一个或多个接口;

接口通常有一个或多个设置;

接口有零或多个端点。

这样一个设备对应一个设备描述符,支持视频的功能对应一个接口描述符,支持音频功能的对应一个接口描述符。为了支持视频,在下层有多个端口同时工作为提供视频数据传输的支持,所以有多个端点描述符

USB设备使用各种描述符来说明其设备架构,包括设备描述符、配置描述符、接口描述符、端点描述符和字符串描述符,他们通常被保存在USB设备的固件程序中

设备描述符

设备代表一个USB设备,它由一个或多个配置组成。设备描述符用于说明设备的总体信息,并指明其所含的配置的个数。一个USB设备只能有一个设备描述符

  1. structusb_device_descriptor
  2. {
  3. __u8bLength;//描述符长度
  4. __u8bDescriptorType;//描述符类型编号
  5. __le16bcdUSB;//USB版本号
  6. __u8bDeviceClass;//USB分配的设备类code
  7. __u8bDeviceSubClass;//USB分配的子类code
  8. __u8bDeviceProtocol;//USB分配的协议code
  9. __u8bMaxPacketSize0;//endpoint0最大包大小
  10. __le16idVendor;//厂商编号
  11. __le16idProduct;//产品编号
  12. __le16bcdDevice;//设备出厂编号
  13. __u8iManufacturer;//描述厂商字符串的索引
  14. __u8iProduct;//描述产品字符串的索引
  15. __u8iSerialNumber;//描述设备序列号字符串的索引
  16. __u8bNumConfigurations;//可能的配置数量
  17. }__attribute__((packed));

2、配置描述符

  1. structusb_config_descriptor
  2. {
  3. __u8bLength;//描述符长度
  4. __u8bDescriptorType;//描述符类型编号
  5. __le16wTotalLength;//配置所返回的所有数据的大小
  6. __u8bNumInterfaces;//配置所支持的接口数
  7. __u8bConfigurationValue;//Set_Configuration命令需要的参数值
  8. __u8iConfiguration;//描述该配置的字符串的索引值
  9. __u8bmAttributes;//供电模式的选择
  10. __u8bMaxPower;//设备从总线提取的最大电流
  11. }__attribute__((packed));

免责声明:文章转载自《usb》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇2016 GitHub章鱼猫观察报告之开源统计docker通过dockerfile打java项目镜像下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

Usb-type-C端口实现的挑战与设计方案

 Usb-type-C端口实现的挑战与设计方案 USB Type-C port implementation challenges and design solutions USB from 1.1 to 3.2 and Beyond 通用串行总线(universal serial bus,USB)于1996年首次推出,它统一了多种不同类型连接的角色,在计...

MicroPython基础知识总汇

MicroPython的系统结构 MicroPython系统的经典结构由三部分组成,分别是微控制器硬件、MicroPython固件、用户程序。 MicroPython支持的其它类型开发板,需要自己编译源代码,产生固件,并将固件下载到微控制器中才能运行MicroPython。(此内容我们后面会讲解到,千万别好高骛远!) MicroPython连接电脑 STM...

解决JLINK_v8灯不亮 jtag 提示无法识别USB设备

问题: 用usb先将jlink_V8和PC机连接在一起(未连接jtag到开发板),但jlink的指示灯不亮也不闪,且电脑提示无法识别USB设备。 解决办法: 需要重新给jlink本身烧写固件,具体步骤方法如下: 1.   软件下载地址: 链接:https://share.weiyun.com/5QNLUIH9 密码:pfj9hh 2.  安装下载好的Ins...

【转】android电池(四):电池 电量计(MAX17040)驱动分析篇

关键词:android 电池  电量计  MAX17040 任务初始化宏 power_supply 平台信息:内核:linux2.6/linux3.0系统:android/android4.0 平台:samsung exynos 4210、exynos 4412 、exynos 5250 作者:xubin341719(欢迎转载,请注明作者) 欢迎指正错误...

用组策略彻底禁止USB存储设备、光驱、软驱、ZIP软驱

转自:http://beyondhdf.blog.51cto.com/229452/131678 一、禁止USB存储设备、光驱、软驱、ZIP软驱 在现在企业网络环境下,由于企业网络越来越大环境越来越复杂。公司内员工素质参差不齐,公司为了加强网络安全性、数据保密性提出要封堵USB存储设备、光驱、软驱、ZIP软驱设备。首先我们在企业网络环境要想实现以上目的,必...

android usb adb流程[转]

android adb 概述 android adb的代码分为两部分: kernel层的代码在如下路径: drivers/usb/gadget/f_adb.c drivers/usb/gadget/android.c 他吐给上层应用的是如下的设备节点:/dev/android_adb 应用层的代码在如下路径: system/core/adb目录 针对dev...