usb库文件usb_desc.c分析

参考《圈圈教你玩USB》

usb协议中使用的是小端结构,所以实际数据在传输时是低字节在先的。

设备描述符的实现:

  已知每个设备都必须有且仅有一个设备描述符,它的结构在USB协议中有详细的定义。

              偏移量                             域                  大小/字节                          说 明                       
0 bLength 1 该描述符的长度(18字节)
1 bDescription 1 描述符类型(设备描述符为0x01)
2 bcdUSB 2 本设备所使用的usb协议版本
4 bDeviceClass 1 类代码
5 bDeviceSubClass 1 子类代码
6 bDeviceProtocol 1 设备所使用的协议
7 bMaxPackSize0 1 端点0最大包长
8 idVender 2 厂商id
10 idProduct 2 产品ID
12 bcdDevice 2 设备版本号
14 iManufacturer 1 描述厂商的字符串的索引
15 iProduct 1 描述产品的字符串的索引
16 iSerialNumber 1 产品序列号字符串的索引
17 bNumcofigurations 1 可能的配置数
 1 const uint8_t MASS_DeviceDescriptor[MASS_SIZ_DEVICE_DESC] =
 2   {
 3     0x12,   /* bLength  */
 4     0x01,   /* bDescriptorType */
 5     0x00,   /* bcdUSB, version 2.00 */
 6     0x02,
 7     0x00,   /* bDeviceClass : each interface define the device class */
 8     0x00,   /* bDeviceSubClass */
 9     0x00,   /* bDeviceProtocol */
10     0x40,   /* bMaxPacketSize0 0x40 = 64 */
11     0x83,   /* idVendor     (0483) */
12     0x04,
13     0x20,   /* idProduct */
14     0x57,
15     0x00,   /* bcdDevice 2.00*/
16     0x02,
17     1,              /* index of string Manufacturer  */
18     /**/
19     2,              /* index of string descriptor of product*/
20     /* */
21     3,              /* */
22     /* */
23     /* */
24     0x01    /*bNumConfigurations */
25   };
时间: 2024-10-05 05:01:01

usb库文件usb_desc.c分析的相关文章

stm32F4各个库文件的作用分析

system_stm32f4xx.c:This file contains the system clock configuration for STM32F4xx devices. 1 /** 2 ****************************************************************************** 3 * @file system_stm32f4xx.c 4 * @author MCD Application Team 5 * @vers

分析MAC*.a库文件信息

一.起因 在前面的文章中,我尝试在MAC终端上编译构建了可直接用于COCOS2D-X C++开发的Lean Cloud库.于是,接下来制作一个基本的例子去使用这个库中功能.出于类似于windows vc开发时候的好奇吧,我想先瞅瞅(使用mac下的工具)这个.a文件中包含/输出哪些内容.于是,在网络上搜索找到几个基本工具. 二.分析工具 目前我使用的工具有MAC终端命令行工具(系统本身提供,但是需要安装xcode,我的是version 7.2): ar nm otool file lipo 还有专

【discuzX2】/source/function/function_core.php通用核心函数库文件分析

[php] view plain copy print? <?php /** *      [Discuz!] (C)2001-2099 Comsenz Inc. *      This is NOT a freeware, use is subject to license terms * *      $Id: function_core.php 28890 2012-03-19 02:05:42Z liudongdong $ */ if(!defined('IN_DISCUZ')) { e

USB库STM32F0x2移植到STM32F070笔记

1. 前言 ST官方提供的USB库STM32F0x2_USB-FS-Device_LibV1.0.0 是基于标准库的,适用于STM32F0x2系列MCU,但是对于STM32F070来说,就需要稍作修改,本文就一直到STM32F070作一个笔记. 2. 移植 从STM中文官网上下载STM32F0x2 USB库,地址:http://www.stmcu.org/document/detail/index/id-214961.用MDK打开,首先在Manager Project Items下的Projec

很详细、很移动的Linux makefile教程:介绍,总述,书写规则,书写命令,使用变量,使用条件推断,使用函数,Make 的运行,隐含规则 使用make更新函数库文件 后序

很详细.很移动的Linux makefile 教程 内容如下: Makefile 介绍 Makefile 总述 书写规则 书写命令 使用变量 使用条件推断 使用函数 make 的运行 隐含规则 使用make更新函数库文件 后序 近期在学习Linux下的C编程,买了一本叫<Linux环境下的C编程指南>读到makefile就越看越迷糊,可能是我的理解能不行. 于是google到了以下这篇文章.通俗易懂.然后把它贴出来,方便学习. 后记,看完发现这篇文章和<Linux环境下的C编程指南>

小黑的日常折腾-复制外部命令的可执行文件和依赖库文件到指定目录下的对应目录

清明三天假期基本都是在写脚本中度过了,今天又折腾了一个新的脚本,该脚本的作用是快速复制一个或多个命令的可执行文件和依赖库文件到一个模拟的根文件系统下的相应目录下,这个脚本平时运维估计用不到,只有自己制作一个小的Linux发行版时才有可能使用该脚本. 脚本具体的功能如下: 1)提示用户选择要从文本中读取要复制的命令名还是从当前终端中交互式输入命令名. 2)用户选择前者,会自动使用vim打开一个文件,用户根据格式说明填入要复制的命令的名称,可以是多个命令,保存退出后自动执行复制操作. 3)用户选择后

APK中引用第三方库文件

注意以下操作是在源码中进行,即修改Android.mk,并非借助IDE(AndroidStudio)的情形. 引用第三方JAR包 1,在源Android.mk里面加参数,使其编译为JAR包,然后mm编译 ... LOCAL_MODULE_CLASS := JAVA_LIBRARIES include $(BUILD_JAVA_LIBRARY) ... 2,提取class.jar选用 把common下面的jar包文件(out\target\common\obj\JAVA_LIBRARIES\xxx

登录mysqlpxc报错找不到库文件libreadline.so.7

一.环境说明: 本博文的演示环境和上篇博文一致https://blog.51cto.com/wujianwei/2374588 1.1简述: 基于上篇博文,为了部署mysqlpxc集群环境,需要开启3个vmware虚拟机实例来部署3个mysqlpxc实例.第一篇博文中在初始化mysqlpxc实例后,登录实例时,报错提示: [[email protected] local]# /usr/local/mysqlpxc/bin/mysql -uroot -p mysql: error while lo

copy命令及库文件至/mnt/sysroot/目录shell脚本

#!/bin/bash # #获取目标目录 target=/mnt/sysroot #命令copy函数 cmndcopy(){         #假如命令不存在,return 1         if ! which $1 &> /dev/null; then                 return 1         fi         #获取命令决定路径         cmnd=$(which --skip-alias $1)         #获取命令目录名