USB驱动学习笔记

USB通信基于端点进行,分为输出和输入。端点的描述符中包含地址、类型和最大包大小等信息。USB接口组合端点,设备可有多个配置。Linux内核通过urb与设备交互,urb需通过特定函数创建和提交。
摘要由CSDN通过智能技术生成
 

USB里的端点

USB通信最基本的形式是通过端点(endpoint),USB端点只能往一个方向发送数据,从主机到设备称为输出端点,从设备到主机称为输入端点。端点可以看作是单向的通道。

内核中使用struct usb_host_endpoint 结构体来描述USB端点。而真正的端点信息则在struct usb_endpoint_descriptor的结构体中存储

1.struct usb_endpoint_descriptor {

2. __u8  bLength;

3. __u8  bDescriptorType;

4.

5. __u8  bEndpointAddress;

6. __u8  bmAttributes;

7. __le16 wMaxPacketSize;

8. __u8  bInterval;

9.

10. /* NOTE:  these two are _only_ in audio endpoints. */

11. /* use USB_DT_ENDPOINT*_SIZE in bLength, not sizeof. */

12. __u8  bRefresh;

13. __u8  bSynchAddress;

14.}

bEndpointAddress:这个8位的值表示了特定端点的USB地址。它可以结合位掩码USB_DIR_OUTUSB_DIR_IN来表示数据的传送方向,表示该端点的数据是传向设备还是主机。

bmAttributes:这该是端点的类型。它可以结合位掩码USB_ENDPOINT_XFERTYPE_MASK来使用,以确定该端点的类型是USB_ENDPOINT_XFER_ISOC(等时端点)、USB_ENDPOINT_XFER_BULK(批量端点)还是USB_ENDPOINT_XFER_INT(中断端点)。

wMaxPacketSize

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值