Linux USB驱动开发
文章平均质量分 86
zqixiao_09
这个作者很懒,什么都没留下…
展开
-
Linux USB 驱动开发实例(二)—— USB 鼠标驱动注解及测试
参考2.6.14版本中的driver/usb/input/usbmouse.c。鼠标驱动可分为几个部分:驱动加载部分、probe部分、open部分、urb回调函数处理部分。 一、驱动加载部分static int __init usb_mouse_init(void){ int retval = usb_register(&usb_mouse_driver);//注册鼠标驱动原创 2016-03-28 20:05:25 · 9039 阅读 · 1 评论 -
USB协议分析仪在实际USB连通中的作用
在现代电子设备中,越来越多的使用USB接口,不仅因为其使用方便,即插即拔,更因为其价格低廉,协议开放,而广泛使用在各种电子设备上,并且已经发展为不可缺少的一种接口形式。但USB接口的开发过程中,对于工程师来说还是会遇到这样或那样的问题,如何提高调试效率,缩短研发周期,就需要一种调试测试工具——USB协议分析仪。USB协议分析仪 USB协议分析仪是协议层的分析工具,是测试设备的一种。原创 2016-11-06 21:47:45 · 9876 阅读 · 0 评论 -
USB2.0协议分析
一、USB硬件介绍1.1、概述 一条USB传输线分别由地线、电源线、D+和D-四条线构成,D+和D-是差分输入线,它使用的是3.3V的电压(与CMOS的5V电平不同),而电源线和地线可向设备提供5V电压,最大电流为500mA(可以在编程中设置)。 USB设备可以直接和HOST通信,或者通过Hub和Host通信。一个USB系统中仅有一个转载 2016-11-06 21:38:30 · 8337 阅读 · 0 评论 -
usb驱动的基本结构和函数简介
几个重要的结构struct--接口[plain] view plaincopystruct usb_interface { /* array of alternate settings for this interface, * stored in no particu转载 2016-10-30 12:59:42 · 3827 阅读 · 0 评论 -
USB gadget设备驱动解析
利用Linux USB gadget设备驱动可以实现一些比较有意思的功能,举两个例子: 1、一个嵌入式产品中的某个存储设备,或是一个存储设备的某个分区,可以作为一个U盘被PC;设别,从而非常方便的完成文件交互,这个功能被广泛的应用于手机、数码相机等产品中。2、一个嵌入式设备通过USB连接到你的PC后,在你的PC端会出现一个新的网络连接,在嵌入式设备上也会有一个网卡设备,你可以配置它们的IP地址,并转载 2016-10-30 13:01:26 · 15348 阅读 · 0 评论 -
USB中CDC-ECM的了解和配置
USB中典型类及子类:类别解释子类典型应用IC芯片备注UVC视频类 免驱USB摄像头 CDC通讯类RNDIS转载 2016-10-30 13:23:03 · 9402 阅读 · 2 评论 -
usb中的endpoint(端点)和传输模式
端点:端点位于USB 外设内部,所有通信数据的来源或目的都基于这些端点,是一个可寻址的FIFO。每个USB 外设有一个唯一的地址,可能包含最多十六个端点。主机通过发出器件地址和每次数据传输的端点号,向一个具体端点(FIFO)发送数据。每个端点的地址为0 到15,一个端点地址对应一个方向。所以,端点2-IN 与端点2-OUT 完全不同。 每个器件有一个默认的双向控制端点0,因原创 2016-10-30 18:51:42 · 18871 阅读 · 2 评论 -
如何实现自定义 USB Bulk 批量传输设备
厂商自定义设备的开发除了要完成设备硬件以及固件程序开发外,还需要开发操作系统端的设备驱动程序,还要开发设备应用程序。 厂商自定义 USB 设备的端点可以自由地选择采用哪种传输方式(control transaction 控制传输、bulk transaction 批量传输、interrupt transaction 中断传输、isochronous transfer 实时传输)原创 2016-10-30 19:22:49 · 14305 阅读 · 4 评论 -
linux ACM驱动详解
Module_init中会注册tty_driver,tty_device会在acm usb_driver的probe中注册。每个ACM设备都由2个Interface组成,第一个interface有一个interrupt endpoint主要负责控制,第二个interface主要负责数据传输,有2个endpoint,有可能是两个int,也有可能是2个bulk。他们都是成对出现的。比如:这原创 2016-11-16 21:30:07 · 10016 阅读 · 2 评论 -
USB鼠标抓包数据
先看下上面的图,相信这个图很好理解吧?恩,看着挺熟悉的吧?下面还是介绍下吧。公司是有USB分析仪,不过看过,没用过,这东西特贵。至于用,也是很简单的,插好线后,设置一些功能,点一下运行就OK,然后就有上面的图了。上图是用国嵌资料中的,公司里的东西,不好拿来用。USB数据是由二进制数字串构成的,首先数字串构成域(有七种),域再构成包,包再构成事务(IN、OUT、SETUP),事务最后构成传输转载 2016-11-06 21:41:23 · 5654 阅读 · 0 评论 -
Linux 下wifi 驱动开发(四)—— USB接口WiFi驱动浅析
前面学习了SDIO接口的WiFi驱动,现在我们来学习一下USB接口的WiFi驱动,二者的区别在于接口不同。而USB接口的设备驱动,我们前面也有学习,比如USB摄像头驱动、USB鼠标驱动,同样都符合LinuxUSB驱动结构: USB设备驱动(字符设备、块设备、网络设备) |原创 2016-04-10 21:33:08 · 22481 阅读 · 6 评论 -
Linux USB 驱动开发实例 (三)—— 基于USB总线的无线网卡浅析
一、USB设备驱动程序的构成1、设备的探测 用于检查传递给探测函数的设备信息,确认驱动程序是否适合该设备。2、数据的发送和接收 负责主机到设备的发送和设备到主机的数据接收。3、设备断开 当设备断开时候,模块负责清除和该设备关联的所有资源。4、模块的加载和卸载 用于加载和卸载usb接口的无线网卡驱动程序。二、US原创 2016-04-04 12:06:00 · 8505 阅读 · 0 评论 -
Linux USB 驱动开发(四)—— 热插拔那点事
学习USB热插拔之前,先学习一些USB的硬件知识:一、USB基础概念1、硬件知识(USB插座和插头) 在最初的标准里,USB接头有4条线:电源,D-,D+,地线。我们暂且把这样的叫做标准的USB接头吧。后来OTG出现了,又增加了miniUSB接头。而miniUSB接头则有5条线,多了一条ID线,用来标识身份用的。标准USB口只有A型和B型。其中每一型又分为插头和插座,例如A原创 2016-04-04 16:08:04 · 23671 阅读 · 2 评论 -
Linux USB 驱动开发(五)—— USB驱动程序开发过程简单总结
设备驱动程序是操作系统内核和机器硬件之间的接口,由一组函数和一些私有数据组成,是应用程序和硬件设备之间的桥梁。在应用程序看来,硬件设备只是一个设备文件,应用程序可以像操作普通文件一样对硬件设备进行操作。 设备驱动程序是内核的一部分,主要完成以下功能:对设备的初始化和释放;把数据从内核传送到硬件设备和从硬件设备读取数据;读取应用程序数据传送给设备文件和回送应用程序请求的数据;检测和处理原创 2016-04-04 17:00:17 · 24185 阅读 · 1 评论 -
Linux USB 驱动开发实例(一) —— USB摄像头驱动实现源码分析
Spac5xx的实现是按照标准的USB VIDEO设备的驱动框架编写(其具体的驱动框架可参照/usr/src/linux/drivers/usb/usbvideo.c文件),整个源程序由四个主体部分组成:设备模块的初始化模块和卸载模块,上层软件接口模块,数据传输模块。具体的模块分析如下: 一、初始化设备模块 该驱动采用了显式的模块初始化和消除函数,即调用mod原创 2016-03-25 22:57:36 · 17758 阅读 · 4 评论 -
Linux USB 驱动开发(一)—— USB设备基础概念
在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的。一个USB设备由3个功能模块组成:USB总线接口、USB逻辑设备和功能单元:a -- 这里的USB总线接口指的是USB设备中的串行接口引擎(SIE);b -- USB逻辑设备被USB系统软件看作是一个端点的集合;c -- 功能单元被客户软件看作是一个原创 2016-03-25 21:42:23 · 31065 阅读 · 5 评论 -
Linux USB 驱动开发(二)—— USB 驱动几个重要数据结构
前面我们学习了USB 驱动的一个描述符,下面来学习 USB 驱动的几个重要数据结构一、struct usb_interface 接口函数struct usb_interface{ struct usb_host_interface *altsetting; struct usb_host_interface *cur_a原创 2016-03-26 15:03:27 · 8195 阅读 · 0 评论 -
Linux USB 驱动开发(三)—— 编写USB 驱动程序
Linux的设备驱动都遵循一个惯例——表征驱动程序(用driver更贴切一些,应该称为驱动器比较好吧)的结构体,结构体里面应该包含了驱动程序所需要的所有资源。用术语来说,就是这个驱动器对象所拥有的属性及成员。一、usb-skeleton 下面先看一下Linux内核源码中的一个usb-skeleton(就是usb驱动的骨架咯),其定义的设备结构体就叫做usb-skel:s原创 2016-03-26 15:10:13 · 26573 阅读 · 2 评论 -
Linux Wireless架构总结
1. 无线网络驱动(ath9k_htc) ath9k_htc是一个基于USB接口的SoftMAC无线网络适配器。为了其驱动能正常工作,首先必须调用usb_register来注册驱动定义的usb_driver,以借助USB Core的力量来处理与USB协议相关的事件。其代码如下:static struct usb_driver ath9k_hif_usb_driver = {转载 2016-04-13 20:04:36 · 8573 阅读 · 3 评论 -
USB linux NCM usbnet驱动详解
cdc_ncm -> usbnet device -> net_deviceenum流程,cdc_ncm的probe中直接调用usbnet_probe,usbnet_probe中会分配network_device和usbnet,并调用cdc_ncm的bind回调进行cdc_ncm的附加descriptor的解析,之后调用init_status对NCM的第一个原创 2016-11-23 19:48:42 · 12474 阅读 · 0 评论