usb接口

8 Linux usbmouse设备驱动程序

試著忘記壹切 提交于 2019-12-02 05:45:30
前一章节对 linux 内核中 USB 驱动程序的框架进行了分析,这一节以 USB 鼠标为对象,编写 USB 鼠标驱动程序。 实验内容:编写 USB 鼠标设备驱动程序。并将 USB 鼠标左键定义为" L "功能,右键定义为" S "功能,中间滚轮键定义为" ENTER "功能,方便测试。 参考内核中 /driver/hid/usbhid/usbmouse.c 文件。 从入口函数 usbmouse_as_key_init 开始。按照之前编写字符驱动程序的惯例,入口函数中需要实现 usb_driver 结构体的分配,配置、注册以及和硬件相关的操作。 那么,首先需要定义一个 usb_driver 结构体。 其中 probe 函数是整个驱动程序的重点,后面再讲。 disconnect 函数是当设备断开连接时调用,后面再讲。 id_table 用于保存 usb 设备的 id 信息,其结构体定义如下: 这里 usbmouse_as_key_id_table 的定义如下: 定义中使用宏 USB_INTERFACE_INFO ,具体定义如下: 对宏 USB_INTERFACE_INFO 进行展开, usbmouse_as_key_id_table [] ={ { .match_flags = USB_DEVICE_ID_MATCH_INT_INFO, .bInterfaceClass = USB

ubuntu下usb抓包方法步骤--usbmon

社会主义新天地 提交于 2019-12-02 04:53:43
开发或者调试USB设备相关的工具或者驱动,一个调试的利器就是usbmon抓包。 在ubuntu下使用步骤如下: 1 运行命令 sudo mount -t debugfs none /sys/kernel/debug ,如果提示已经挂载,则下次抓包就可以不运行这个命令了。表示系统默认会挂载。 2 运行命令 sudo modprobe usbmon 3 查看usbmon监控可以识别到的设备号。如下图,生成了几个usb设备号。 4 找出你需要监控的总线编号。如果找呢,根据设备的信息,包括设备描述,vid或者pid等等。如下图,如果Manufacturer和Vendor和ProdID之类的信息可以对应上需要监控的设备,那么Bus=02就是你需要监控的USB总线号。 5 监控设备号对应的usb数据包。这里我监控的设备号是2,设备名对应2u。 6 分析usb抓包后的数据。具体的数据格式如何解析,参考Linux内核源码库目录下的文档 linux-3.11.1\Documentation\usb\usbmon.txt。 原文链接:https://blog.csdn.net/faithzzf/article/details/60958858 来源: https://www.cnblogs.com/hshy/p/11730670.html

USB描述符

不想你离开。 提交于 2019-12-02 02:26:06
USB描述符 USB 设备的描述符是具有特定格式的数据结构,用于存储各个配置的属性信息,每一个 USB 外围设备,必须对标准的 USB 描述符做出响应。 USB2.0 规范中定义了如下表的标准描述符类型。在设备检测期间,主机使用控制传输来要求设备传回描述符,首先是设备描述符,然后依次是配置描述符、接口描述符和端点描述符。 在 linux 内核中 USB 描述符信息保存在 include/linux/usb/ch9.h 文件中。 其中设备描述符的定义如下: 配置描述符的定义如下: 接口描述符的定义如下: 端点描述符的定义如下: 来源: https://www.cnblogs.com/beijiqie1104/p/11725775.html

oop面向对象【接口、多态】

大兔子大兔子 提交于 2019-12-02 02:16:43
今日内容 1.接口 2.三大特征 —— 多态 3.引用类型转换 教学目标 1.写出定义接口的格式 2.写出实现接口的格式 3.说出接口中成员的特点 4.能够说出使用多态的前提条件 5.理解多态的向上转型 6.理解多态的向下转型 7.能够完成笔记本电脑案例(方法参数为接口) 第一章 接口 1.1 概述 接口,是 Java 语言中一种引用类型,是方法的集合,如果说类的内部封装了成员变量、构造方法和成员方法,那么 接口的内部主要就是 封装了方法 ,包含抽象方法( JDK 7 及以前),默认方法和静态方法( JDK 8 ),私有方法 ( JDK 9 )。 接口的定义,它与定义类方式相似,但是使用 interface 关键字。它也会被编译成 .class 文件,但一定要明确它并 不是类,而是另外一种引用数据类型。 引用数据类型:数组,类,接口。 接口的使用,它不能创建对象,但是可以被实现( implements ,类似于被继承)。一个实现接口的类(可以看做 是接口的子类),需要实现接口中所有的抽象方法,创建该类对象,就可以调用方法了,否则它必须是一个抽象 类。 1.2 定义格式 public interface 接口名称 { // 抽象方法 // 默认方法 // 静态方法 // 私有方法 } 含有抽象方法 抽象方法:使用 abstract 关键字修饰,可以省略,没有方法体

STEVAL-SPIN3202开发板的使用

心已入冬 提交于 2019-12-01 22:57:57
STEVAL-SPIN3202 1、注意跳帽的位置 2、使用FOC方式运行的时候需要将三个零欧的电阻焊到左边来。 3、如果没有USB供电的话,电机是不能运行的。 4、这个USB如果只有供电的话(比如插到5V输出的USB供电头),有一个状态指示灯反复闪烁。提示状态不太正常。但是如果插到电脑的USB上,就显得比较正常了。 来源: https://www.cnblogs.com/praiseslow/p/11719940.html

win101903版本vmware 14虚拟机插usb设备卡死

北城余情 提交于 2019-12-01 22:06:33
win101903版本vmware 14虚拟机插usb设备卡死 问题的环境: win10,1903版本; vmware 14 版本; 安装的是ubuntu1604虚拟机; 当插入usb摄像头,并连接到虚拟机时,虚拟机直接卡死;必须重启才能结束虚拟机;反复尝试多次无效; 解决方式: 1. 安装vmware 15.x版本,打开以前人虚拟机即可; 来源: https://www.cnblogs.com/cocoajin/p/11718401.html

[USB波形分析] 全速USB波形数据分析(三)

纵然是瞬间 提交于 2019-12-01 20:20:01
前面的两篇文章介绍和分析了USB的一些基本知识,结合前面的介绍,今天用实例介绍USB的枚举过程。 1 | 概况 硬件基于EK-TMC123GXL开发板,软件是TI提供的USB批量传输的简单例子,在PC端用命令行通过USB发送字符串,开发板通过USB返回应对的字符串(发送的是大写字母,返回小写字母,反之亦然) 2 | 枚举过程 由于整个枚举过程很长,现有示波器没法捕获这个枚举过程,改用逻辑分析仪来分析: 2.1 | 获取描述符(GET_DEVICE_DESCRIPTOR) 主机发起控制传输的SETUP阶段,地址为0,端点为0 主机发起控制传输的DATA阶段,设备返回设备描述符 对应的解析如下 主机发起控制传输的STATUS阶段 2.2 | 复位(RESET) 获取完设备描述符以后,支持对设备进行了复位操作 2.3 | 设置地址(SET_ADDRESS) 主机发起控制传输的SETUP阶段,地址为0,端点为0,设置设备的新地址为1 主机发起控制传输的STATUS阶段,地址为0,端点为0(这里没有DATA阶段) 2.4 | 获取设备描述符(GET_DEVICE_DESCRIPTOR) 主机用新设置的地址(下同),发起获取设备描述符传输,传输过程和返回值和2.1相同 2.5 | 获取配置描述符(GET_CONFIGURATION_DESCRIPTOR) 主机发起控制传输的SETUP阶段

[USB波形分析] 全速USB波形数据分析(一)

99封情书 提交于 2019-12-01 13:24:27
在之前的文章 一次CAN波形分析之旅 里,根据示波器采集的波形数据,详细地分析了CAN通信。今天来分析USB数据,还是同样的流程,但是这次使用 matplotlib 来协助分析。 USB基本波形 USB通过一对差分信号进行数据传输,这对差分信号叫D+和D-,用示波器抓取一段D+和D-的信号,保存成CSV格式,用 matplotlib 绘制该信号: 分了方便分析,我们将D+和D-分别绘制: 标记数据包(Packet)的组成: 进一步细化数据包(Packet)的内容 USB数据分析 起始帧数据包(FRAMEPACKET) 全速USB会每隔1毫秒发送一包起始帧数据包(FRAME PACKET),由PID,FRAME_NUMBER和CRC三部分: PID(Packet ID)为数据包标识符,为8位长度,低4位为标识符数值,高4位值为低4位数值按位取反。起始帧数据包对应的PID为1010 0101(最左侧为最高位,下同) 这里需要注意,USB数据流先传输最低字节的最低位,同时按照NRZI方式编码,即(值不变表示数据'1',值发生改变表示数据'0')。 令牌数据包(TOKEN PACKET) 令牌数据包由PID,ADDR,ENDP和CRC四个段组成。一共有三种令牌: IN OUT SETUP 令牌IN对应的PID为0110 1001 令牌OUT对应的PID为1110 0001

Android Studio使用指南

北城以北 提交于 2019-12-01 12:32:14
开发APP,可用Android Studio来更加便捷地构建我们的app。下面介绍怎么使用。 一、下载安卓sdk并安装 1、官网地址: http://tools.android-studio.org/index.php/sdk?hitcount=0 2、安装到D:\Android\android-sdk 3、选择package安装。 二、Android Studio官网下载安装包并安装 1、官网地址: http://www.android-studio.org 2、等上一步的sdk安装成功后,再安装。安装到D:\Android\Android Studio 3、打开,确认sdk的配置文件路径 三、下载gradle并安装 1、官网地址: https://gradle.org/install/ 2、下载后的压缩包,解压到D:\Program Files\Java\gradle-5.6.2文件夹中,然后根据教程配置环境变量。 四、启动Android Studio,并新建一个项目,编译运行。在手机上调试 1、build 注意:gradle的下载安装的版本和项目中插件版本是否对应。查看build.gradle文件 2、usb连接上手机后,开启开发者模式,并打开usb联调。 ============================================================

使用大白菜软件制作USB自动安装盘,如何U盘引导安装

最后都变了- 提交于 2019-12-01 08:43:19
第一步、访问大白菜官方网站,下载最新版本,安装大白菜 http://www.caipb.com/ 第二步、制作USB启动盘(暂时不放置任何的Ghost镜像ISO文件),仅是USB启动盘。 启动应用程序,插入USB盘,大白菜自动识别USB设备,进入如下界面: 模式选择 HDD-FAT32,NTFS和CHS 不需要选中。 直接点击“一键制作USB启动盘”,弹出一个窗口,提示本操作将会删除USB盘上的所有数据,既然要制作启动盘肯定不在乎里面的数据了,继续。 点击“确定”,进行格式化,并开始制作,如下图所示: 大概几分钟就制作完成,弹出下面的窗口,提示制作完成,要不要测试,我们点“是” 测试画面如下图,点击鼠标进去,什么都不要动只是看一下就可以了,如果显示出下面的画面说明USB启动盘已经制作成功,然后按“Ctrl+Alt 释放鼠标”退出来。 至此,USB启动盘制作完成了,接下来,我们放置Ghost_xp系统的ISO文件或 Ghost_win7系统的ISO文件,放什么ISO就会自动安装什么版本的操作系统。 第三步、放置Ghost镜像ISO文件到USB启动盘 打开USB设备,看到USB启动盘制作以后的样子,如下图,就一个可执行exe文件和一个GHO空目录 拷贝一个下载的Ghost_XP.ISO文件到GHO目录下,文件名不要是中文,如下图: 到此,所有制作工作完成