青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

USB描述符詳解

一、基本概念  

  1、USB協(xié)議本身很復雜,但方便在提供了統(tǒng)一的接口方式,使得驅動程序在使用設備的時候,工作簡化到了類似操作串行接口。

  2、USB設備可以看作提供了多個串口的設備,依據(jù)USB的規(guī)范,我們將每個串口稱作端點(Endpoint),要和這個端點通信,我們就要打開到這個端點的連接,這個連接就是管道(Pipe)。

  3、打開端點之后,就可以像串口一樣進行數(shù)據(jù)傳輸了。USB有4種不同類型的傳輸方式:控制傳輸(Control Transfer),批量傳輸(Bulk Transfer),中斷傳輸(Interrupt Transfer)和實時傳輸(IsochTransfer)。

  4、由于一個設備可能要適應多種情況,端點的設置會有多套,以備使用。端點設置稱為接口(Interface)。USB設備展現(xiàn)給我們能夠找到的東西就是這些Interface,我們選擇要用的Interface,就可以找到Endpoint,再打開Endpoint,就可以傳輸數(shù)據(jù)了。所以,在驅動程序開始的時候,需要記錄下這些Interface。

  5、例如:OV511+的端點0是控制端點,用來設置參數(shù)以及起停設備;端點1是實時傳輸端點,用來傳輸視頻。端點1有8套不同的設置,主要區(qū)別就在于一次傳輸?shù)臄?shù)據(jù)幀的大小,所以在USBDeviceAttach的時候,要記錄這些設置到驅動程序中,后面才能夠選用。

二、描述符介紹
   標準的USB設備有5種USB描述符:設備描述符,配置描述符,字符串描述符,接口描述符,端點描述符。下面詳解:

1、設備描述符:一個設備只有一個設備描述符

typedef struct _USB_DEVICE_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    WORD      bcdUSB,
    BYTE        bDeviceClass,
    BTYE        bDeviceSubClass,
    BYTE        bDeviceProtol,
    BYTE        bMaxPacketSize0,
    WORD      idVenderI,
    WORD      idProduct,
    WORD      bcdDevice,
    BYTE        iManufacturer,
    BYTE        iProduct,
    BYTE        iSerialNumber,
    BYTE        iNumConfiguations
}USB_DEVICE_DESCRIPTOR;

bLength : 描述符大小.固定為0x12.
bDescriptorType : 設備描述符類型.固定為0x01.
bcdUSB : USB 規(guī)范發(fā)布號.表示了本設備能適用于那種協(xié)議,如2.0=0200,1.1=0110等.

bDeviceClass : 類型代碼(由USB指定)。當它的值是0時,表示所有接口在配置描述符里,并且所有接口是獨立的。當它的值是1到FEH時,表示不同的接口關聯(lián)的。當它的值是FFH時,它是廠商自己定義的.
bDeviceSubClass : 子類型代碼(由USB分配).如果bDeviceClass值是0,一定要設置為0.其它情況就跟據(jù)USB-IF組織定義的編碼.
bDeviceProtocol : 協(xié)議代碼(由USB分配).如果使用USB-IF組織定義的協(xié)議,就需要設置這里的值,否則直接設置為0。如果廠商自己定義的可以設置為FFH.
bMaxPacketSize0 : 端點0最大分組大小(只有8,16,32,64有效).
idVendor : 供應商ID(由USB分配).

idProduct : 產品ID(由廠商分配).由供應商ID和產品ID,就可以讓操作系統(tǒng)加載不同的驅動程序.
bcdDevice : 設備出產編碼.由廠家自行設置.

iManufacturer : 廠商描述符字符串索引.索引到對應的字符串描述符. 為0則表示沒有.
iProduct : :產品描述符字符串索引.同上.
iSerialNumber : 設備序列號字符串索引.同上.
bNumConfigurations : 可能的配置數(shù).指配置字符串的個數(shù)
2、配置描述符:配置描述符定義了設備的配置信息,一個設備可以有多個配置描述符
typedef struct _USB_CONFIGURATION_DESCRIPTOR_
{
    BYTE      bLength,
    BYTE      bDescriptorType,
    WORD    wTotalLength,
    BYTE      bNumInterfaces,
    BYTE      bConfigurationValue,
    BYTE      iConfiguration,
    BYTE      bmAttributes,
    BYTE      MaxPower
}USB_CONFIGURATION_DESCRIPTOR;

bLength : 描述符大小.固定為0x09.
bDescriptorType : 配置描述符類型.固定為0x02.
wTotalLength : 返回整個數(shù)據(jù)的長度.指此配置返回的配置描述符,接口描述符以及端點描述符的全部大小.
bNumInterfaces : 配置所支持的接口數(shù).指該配置配備的接口數(shù)量,也表示該配置下接口描述符數(shù)量.
bConfigurationValue : 作為Set Configuration的一個參數(shù)選擇配置值.
iConfiguration : 用于描述該配置字符串描述符的索引.
bmAttributes : 供電模式選擇.Bit4-0保留,D7:總線供電,D6:自供電,D5:遠程喚醒.
MaxPower : 總線供電的USB設備的最大消耗電流.以2mA為單位.
3、接口描述符:接口描述符說明了接口所提供的配置,一個配置所擁有的接口數(shù)量通過配置描述符的bNumInterfaces決定
typedef struct _USB_INTERFACE_DESCRIPTOR_
{
    BYTE      bLength,
    BYTE      bDescriptorType,
    BYTE      bInterfaceNumber,
    BYTE      bAlternateSetting,
    BYTE      bNumEndpoint,
    BYTE      bInterfaceClass,
    BYTE      bInterfaceSubClass,
    BYTE      bInterfaceProtocol,
    BYTE      iInterface
}USB_INTERFACE_DESCRIPTOR;

bLength : 描述符大小.固定為0x09.
bDescriptorType : 接口描述符類型.固定為0x04.
bInterfaceNumber: 該接口的編號.
bAlternateSetting : 用于為上一個字段選擇可供替換的位置.即備用的接口描述符標號.
bNumEndpoint : 使用的端點數(shù)目.端點0除外.
bInterfaceClass : 類型代碼(由USB分配).
bInterfaceSunClass : 子類型代碼(由USB分配).
bInterfaceProtocol : 協(xié)議代碼(由USB分配).
iInterface : 字符串描述符的索引
4、端點描述符:USB設備中的每個端點都有自己的端點描述符,由接口描述符中的bNumEndpoint決定其數(shù)量
typedef struct _USB_ENDPOINT_DESCRIPTOR_
{
    BYTE        bLength,
    BYTE        bDescriptorType,
    BYTE        bEndpointAddress,
    BYTE        bmAttributes,
    WORD      wMaxPacketSize,
    BYTE        bInterval
}USB_ENDPOINT_DESCRIPTOR;

bLength : 描述符大小.固定為0x07.
bDescriptorType : 接口描述符類型.固定為0x05.
bEndpointType : USB設備的端點地址.Bit7,方向,對于控制端點可以忽略,1/0:IN/OUT.Bit6-4,保留.BIt3-0:端點號.
bmAttributes : 端點屬性.Bit7-2,保留.BIt1-0:00控制,01同步,02批量,03中斷.
wMaxPacketSize : 本端點接收或發(fā)送的最大信息包大小.
bInterval : 輪訓數(shù)據(jù)傳送端點的時間間隔.對于批量傳送和控制傳送的端點忽略.對于同步傳送的端點,必須為1,對于中斷傳送的端點,范圍為1-255.
5、字符串描述符:其中字符串描述符是可選的.如果不支持字符串描述符,其設備,配置,接口描述符內的所有字符串描述符索引都必須為0
typedef struct _USB_STRING_DESCRIPTION_
{
    BYTE      bLength,
    BYTE      bDescriptionType,
    BYTE      bString[1];
}USB_STRING_DESCRIPTION;

bLength : 描述符大小.由整個字符串的長度加上bLength和bDescriptorType的長度決定.
bDescriptorType : 接口描述符類型.固定為0x03.
bString[1] : Unicode編碼字符串.

本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/alien75/archive/2009/09/30/4622319.aspx

posted on 2010-11-18 11:30 wrh 閱讀(2075) 評論(0)  編輯 收藏 引用


只有注冊用戶登錄后才能發(fā)表評論。
網(wǎng)站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


導航

<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910

統(tǒng)計

常用鏈接

留言簿(19)

隨筆檔案

文章檔案

收藏夾

搜索

最新評論

閱讀排行榜

評論排行榜

青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>
            91久久在线| 欧美日韩人人澡狠狠躁视频| 欧美成人免费大片| 久久精品日韩欧美| 欧美v亚洲v综合ⅴ国产v| 欧美高清视频| 最新中文字幕一区二区三区| 亚洲福利视频三区| av72成人在线| 欧美一区=区| 久久久之久亚州精品露出| 欧美国产日韩在线| 国产精品毛片| 伊人成人在线| 亚洲欧美日韩成人| 麻豆精品一区二区综合av| 亚洲狼人精品一区二区三区| 亚洲综合视频网| 欧美激情五月| 依依成人综合视频| 亚洲综合精品一区二区| 麻豆精品在线播放| 一本一本a久久| 久久久国产成人精品| 欧美久久一级| 激情综合色综合久久| 中文高清一区| 欧美成人首页| 亚洲综合精品四区| 欧美激情一二区| 伊人蜜桃色噜噜激情综合| 亚洲伊人网站| 亚洲精品麻豆| 蜜桃av一区二区三区| 国产日韩欧美一区二区三区四区| 99精品视频免费| 欧美国产日韩在线观看| 欧美一级黄色录像| 国产精品黄色| 亚洲尤物在线| 一本久久综合亚洲鲁鲁五月天| 久久在线免费观看视频| 国产一区二区高清| 久久国产黑丝| 亚洲欧美日韩另类| 国产精品久久久久一区二区三区 | 亚洲国产日韩欧美综合久久 | 亚洲高清在线视频| 国产亚洲精品成人av久久ww| 91久久久精品| 久久久久久久999| 国产精品另类一区| 亚洲欧美日韩精品久久亚洲区 | 亚洲黄色在线观看| 亚洲一区二区视频在线观看| 欧美日韩亚洲高清一区二区| 欧美大片91| 性久久久久久久久| 国产麻豆9l精品三级站| 性欧美8khd高清极品| 亚洲色图在线视频| 欧美午夜理伦三级在线观看| 正在播放欧美视频| 亚洲精品视频在线| 欧美日本国产一区| 亚洲一二三区视频在线观看| 一区二区电影免费在线观看| 欧美色综合天天久久综合精品| 一区二区日韩伦理片| 日韩亚洲欧美在线观看| 欧美午夜影院| 欧美一区二区三区日韩视频| 午夜精品在线| 亚洲成人在线免费| 亚洲精品免费在线观看| 欧美性jizz18性欧美| 欧美一区二区三区免费大片| 性色一区二区三区| 91久久香蕉国产日韩欧美9色| 亚洲精品一区二区三| 欧美日韩在线电影| 久久九九免费| 欧美激情一二三区| 久久成人免费电影| 欧美aa国产视频| 亚洲欧美日韩视频二区| 久久国产精品免费一区| 亚洲国产导航| 99国产欧美久久久精品| 国产精品一区免费观看| 久久久免费精品视频| 欧美高清视频| 欧美一级专区| 欧美激情小视频| 久久精品主播| 欧美日韩精品二区第二页| 久久xxxx精品视频| 中文在线不卡| 久久精品视频在线播放| 欧美有码在线观看视频| 久久久精品日韩欧美| 久久激情婷婷| 久久久久久网站| 亚洲图中文字幕| 久久经典综合| 欧美二区不卡| 亚洲一区二区不卡免费| 欧美日韩在线免费| 久久午夜精品| 欧美日韩中文字幕日韩欧美| 久久精品99国产精品| 欧美精品二区| 乱人伦精品视频在线观看| 欧美午夜精品久久久久久浪潮 | 欧美一区二区三区日韩视频| 欧美刺激午夜性久久久久久久| 欧美专区中文字幕| 欧美日韩视频一区二区三区| 久久在线免费视频| 国产日韩欧美另类| 亚洲综合色激情五月| 一本色道久久综合亚洲精品高清 | 国产精品入口夜色视频大尺度| 亚洲第一天堂av| 影音先锋久久资源网| 欧美一区在线直播| 久久成人精品视频| 国产欧美一区二区精品性| 一区二区av在线| 亚洲午夜视频| 国产精品久久久久久久9999| 亚洲美女精品久久| 亚洲手机成人高清视频| 欧美日韩国产欧美日美国产精品| 亚洲国产成人精品久久| 亚洲精品三级| 欧美另类视频在线| 日韩一二三区视频| 亚洲性视频网站| 国产精品国产三级国产aⅴ入口 | 久久亚洲影音av资源网| 麻豆精品视频在线观看视频| 韩国av一区二区三区四区| 欧美一区二区在线看| 久久青草欧美一区二区三区| 国内精品久久久久久| 久久狠狠婷婷| 欧美韩日亚洲| 一本大道久久a久久精品综合| 欧美日产在线观看| 中文在线资源观看网站视频免费不卡 | 欧美日韩免费观看一区=区三区 | 国产精品久久久久免费a∨| 蜜臀a∨国产成人精品| 欧美成人午夜| 欧美四级电影网站| 国产视频亚洲精品| 亚洲女女女同性video| 久久xxxx| 一本色道久久综合狠狠躁篇的优点| 欧美成人一区二区三区片免费| 亚洲电影免费在线| 亚洲一区制服诱惑| 在线观看亚洲视频| 欧美日韩国产一区| 欧美一区二区在线免费播放| 欧美成人免费小视频| 亚洲无限av看| 国外视频精品毛片| 欧美日韩国产黄| 欧美自拍丝袜亚洲| 99精品国产在热久久| 久久久久这里只有精品| 日韩亚洲综合在线| 国产亚洲福利一区| 欧美成人午夜激情在线| 午夜精品久久久久99热蜜桃导演| 欧美wwwwww| 久久精品99| 亚洲一区在线免费观看| 亚洲国产网站| 国产欧美在线视频| 欧美日韩国产首页在线观看| 久久gogo国模啪啪人体图| 亚洲精品日韩综合观看成人91| 久久久久网站| 欧美在线视频在线播放完整版免费观看 | 欧美成人精品福利| 午夜亚洲性色视频| 亚洲精品网站在线播放gif| 噜噜噜91成人网| 欧美专区在线观看| 亚洲欧美日韩一区在线观看| 亚洲精品日韩欧美| 在线日韩日本国产亚洲| 国产综合一区二区| 国产日韩欧美在线播放| 亚洲免费在线视频| 国产一区导航| 久久成人一区二区|