LINUX下USB1.1设备学习小记(1)
现在暂定的学习目标为一个USB鼠标的设备到主机的传输过程软件上的贯穿(会涉及到部分硬件 但是本人的电电路知识有限 涉及的量不会多)
学习的框架如下:
1. USB1.1协议
A. 控制传输
B. 中断传输
2. USB主机
A. LINUX下的UHCI
3. USB设备
A.飞利浦的PDIUSBD12
4. HID协议
A.鼠标部分
5. USB主机的HID驱动程序
A.鼠标部分
6. LINUX的INPUT子系统
A.鼠标部分
在这里简短说一下为什么会有USB协议的诞生~
一方面,在电脑上可以看多很多的插口,例如PS/2,网口,VGA,DVI,并口,打印机并口
USB设备主要为了统合这些日益增多的插口而诞生的
另一方面,并口的传输随着计算机数据流量的发展而显得力不从心,并口,泛指使用若干个数据位进行传输的设备,在计算机中信号的传输只有1和0两种信号,呢么一次传输数据的大小和数据位的关系就是2x 个bit,当有3个数据位的时候就是23位,也就是8个bit,一个字节,为了增加数据流量,会增大数据位的位数或者增大频率
可以看看IDE硬盘的数据线
密密麻麻的排了多少数据线,每根数据线就是一个数据位
并口传输的一个特征就是数据一定要一起到达,这样才不会出错,但当频率和数据位增大时,现在的电气技术无法解决信号一起到达的问题,所以开始转向研究串口传输
什么是串口传输呢? 画了个图和并口传输比较一下
左边的是串口传输,右边的是并口传输
可以看出并口传输是每个位一根数据线,并起来传输,而串口传输是所有的位共享一根数据线
而USB的总称是Universal Serial Bus~ 也就是 通用串行总线
这个协议的具体内容也就是规范了串行传输中的信号格式和如何使用这些信号
= 3= 转载请注明转自个人BLOG http://blog.chinaunix.net/u1/57901/
相关文档:
Linux驱动程序入门—Hello World
来源:
ChinaUnix博客 日期:
2009.11.19 21:17 (共有0
条评论) 我要评论
1、引言
记得在学习VC++和C语言的时候,一开始都会以一个HELLO
WORLD的例子作为演示,将学者逐渐引入殿堂,这个几乎成了计算机编程语言学习必经的一个入门之路。
......
一、概述
系统调用是一个软中断,中断号是0x80,它是上层应用程序与Linux系统内核进行交互通信的唯一接口。通过int 0x80,就可使用内核资源。不过,通常应用程序都是使用具有标准接口定义的C函数库间接的使用内核的系统调用,即应用程序调用C函数库中的函数,C函数库中 ......
总览
用iptables -ADC 来指定链的规
则
,-A添加 -D删除 -C 修改
iptables - [RI] chain rule num rule-specification[option]
用iptables - RI 通过规则的顺序指定
iptables -D chain rule num[option]
删除指定规则
iptables -[LFZ] [chain][option]
用iptables -LFZ 链名 [选项]
iptables -[NX] chain
用 -NX ......
先是内核驱动程序:
#include <linux/module.h>//具体的头文件位置为/opt/FriendlyARM/mini2440/linux-2.6.29/include/linux/*.h
#include <linux/kernel.h>
#include <linux/fs.h>
#include <linux/init.h>
#include <linux/delay.h>
#include <linux/poll.h>
#include <l ......
usb_hcd_omap_probe (const struct hc_driver *driver) (dev/ohci/ohci-omap.c)
在模块初始化时被platform_driver_register()调用,用来初始化与ohci_hcd_omap_driver
相匹配的usb主控制器.
->usb_create_hcd(driver); 创建一个代表host-controller的数据结构(struct usb_hcd)并初始化 core/hcd.h
->hcd = kz ......