随笔分类 -  usb设备驱动

USB设备驱动6:usb HID 报告描述符
摘要:在网上看了许多前辈的文章,就是无法理解报告描述符中的那些数字字符所表达的含义,几经周折,总算大致了解了。codecharMouseReportDescriptor[63]={ 0x05,0x01,//USAGE_PAGE(GenericDesktop) 0x09,0x06,//USAGE(Keyboard) 0xa1,0x01,//COLLECTION(Application)0x05,0x07,//USAGE_PAGE(Keyboard) 0x19,0xe0,//USAGE_MINIMUM(KeyboardLeftControl) 0x29,0xe7,//USAGE_MAXIMUM(Keyb 阅读全文
posted @ 2012-02-28 20:25 image eye 阅读(4059) 评论(2) 推荐(1) 编辑
Usb设备驱动5:usb-firmware简易框架
摘要:usb firmware主要工作是满足usb 协议所定义的标准请求(usb协议第9章第4节),不同的firmware因为硬件不同而操作有所不同,但目的都是完成主控制器对设备的标准请求,大致框图如下: 阅读全文
posted @ 2012-02-13 14:36 image eye 阅读(1392) 评论(0) 推荐(0) 编辑
Usb设备驱动4:usb-skeleton例程
摘要:有了前面的设备驱动基础,以及usb方面的基础知识,则可以很轻松的就理解usb-skeleton例程,并轻松的就能写出自己的简易usb driver了。下面是usb-skeleton例程的简易解析:/** USB Skeleton driver - 2.0** Copyright (C) 2001-2004 Greg Kroah-Hartman (greg@kroah.com)**This program is free software; you can redistribute it and/or*modify it under the terms of the GNU General Pu 阅读全文
posted @ 2012-02-10 17:00 image eye 阅读(3372) 评论(1) 推荐(0) 编辑
Usb设备驱动3:root hub守护进程2
摘要:Hub正常工作后,主控制器就会定时询问hub是否有中断产生,当hub端口上有一个设备插入或拔除,hub就向主控制器发送urb请求,即把hub端口的变化状况告诉主控制器,这是通过urb请求来完成的,主机在处理完了这个urb后,就会调用urb所提供的完成函数,来调用hub的中断函数,即hub_irq。Hub_irq是hub的中断处理函数,处理程序首先判断主控制器处理urb的结果状态,如果状态是OK的,则继续处理。1.扫描hub的所有端口,确定是哪个端口发生了变化。端口是用位图来表示的,一个long型数据可以表示32个hub端口(每位表示一个端口),有多少个端口,就用多少位表示,而8位用一个字节表示 阅读全文
posted @ 2012-02-04 20:09 image eye 阅读(3263) 评论(0) 推荐(0) 编辑
Usb设备驱动2:root hub守护进程1
摘要:在终端下执行 ps –A| grep khubd,会显示出khubd的进程,这个就是hub的守护进程,我们的设备插入usb接口(不论是插入跟集线器,还是子集线器)后,就是这个守护进程发现的,然后通过中断的方式通知主控制,主控制器才开始调用hub的探测函数,来解析我们的设备的。在上节hub驱动安装OK后,系统会调用kthread_run(hub_thread, NULL, "khubd")来启动守护进程的,其中的khubd,就是守护进程名称,这个进程几乎是个死循环,只有在执行kthread_should_stop时才会退出,而进程也不是时时都在执行的,当hub没有设备插入时, 阅读全文
posted @ 2012-02-02 17:21 image eye 阅读(3789) 评论(0) 推荐(0) 编辑
Usb设备驱动1:root hub 设备驱动安装
摘要:按照设备模型的总线,设备,驱动模式,一条总线会把所有这条总线上的设备和驱动都挂载到总线的设备链表和驱动链表上,具体到usb总线上,就是usb主控制器,hub等设备,都需要按照设备模型的要求,作为设备挂载到usb总线的设备链表上,同时也需要把usb主控制器,hub的驱动也挂载到驱动链表上,并且使得设备和设备驱动能够相互关联起来,才能使得设备能够使用,完成应有的设备功能。那么usb hub驱动是如何被挂载的,驱动又是如何跟hub设备关联在一起的?首先,要有一条usb总线,就必须有一个usb主控制器,一个usb主控制器对应一条usb总线。一个系统有多少个usb主控制器,就有多少条usb总线,我们常见 阅读全文
posted @ 2012-01-31 16:06 image eye 阅读(18661) 评论(0) 推荐(0) 编辑
Usb设备驱动0:从usb设备被发现开始
摘要:经过对设备模型的整理,消化,就有了编写一个设备驱动程序的基础。因工作关系,需要熟悉usb设备驱动,因此,就选择usb设备驱动作为开始。一个usb设备,是如何被usb系统发现并安装对应的设备驱动程序的,从而使得usb设备可以正常工作?当一个usb设备通过usb接口,连接到主机时,实际上是链接到了一个usb集线器( hub)的一个接口上,集线器的接口上有了电平的变化(高速设备在D+上有上拉,低速设备D+上有上拉),从而知道这个端口上有了设备的接入,从而可以通知usb主控制器,在集线器的某一个接口上有设备插入了,此时,要采取什么行动,就由usb主机来决定。一般的usb设备可以直接连接到跟集线器上,也 阅读全文
posted @ 2012-01-30 11:37 image eye 阅读(2273) 评论(0) 推荐(0) 编辑