Linux设备驱动之USB hub驱动
------------------------------------------
本文系本站原创,欢迎转载!
转载请注明出处:http://ericxiao.cublog.cn/
------------------------------------------
一:前言
继UHCI的驱动之后,我们对USB Control的运作有了一定的了解.在接下来的分析中,我们对USB设备的驱动做一个全面的分析,我们先从HUB的驱动说起.关于HUB,usb2.0 spec上有详细的定义,基于这部份的代码位于linux-2.6.25/drivers/usb/core下,也就是说,这部份代码是位于core下,和具体设备是无关的,因为各厂商的hub都是按照spec的要求来设计的.
二:UHCI驱动中的root hub
记得在分析UHCI驱动的时候,曾详细分析过root hub的初始化操作.为了分析方便,将代码片段列出如下:
usb_add_hcd() à usb_alloc_dev():
struct usb_device *usb_alloc_dev(struct usb_device *parent,
struct usb_bus *bus, unsigned port1)
{
……
……
//usb_device,内嵌有struct device结构,对这个结构进行初始化
device_initialize(&dev->dev);
dev->dev.bus = &usb_bus_type;
dev->dev.type = &usb_device_type;
……
……
}
一看到前面对dev的赋值,根据我们对设备模型的理解,一旦这个device进行注册,就会发生driver和device的匹配过程了.
不过,现在还不是分析这个过程的时候,我们先来看一下,USB子系统中的两种驱动.
三:USB子系统中的两种驱动
linux-2.6.25/drivers/usb/core/driver.c中,我们可以找到两种register driver的方式,分别为usb_register_driver()和usb_register_device_driver().分别来分析一下这两个接口.
usb_register_device_driver()接口的代码如下:
int usb_register_device_driver(struct usb_device_driver *new_udriver,
struct module *owner)
{
int retval = 0;
if (usb_disabled())
return -ENODEV;
new_udriver->drvwrap.for_d
相关文档:
Linux安装Mysql+Apach+PHP+phpMyAdmin
我的系统是redhat as5 建议大家完全安装,以免安装时缺少相关的编译器等等。
一、安装mysql(mysql-5.0.21.tar.gz)
# tar zxf mysql-5.0.21.tar.gz
# cd mysql-5.0.21
#./configure --prefix=/usr/local/mysql --sysconfdir=/etc --lo ......
linux上的Apache服务和LAMP环境的配置
在RHEL4系统中可以通过两种方式安装Apache服务器。
1. RHEL4系统的安装光盘中包括的Apache服务器的RPM软件包,可以使用rpm命令直接进行安装。
2. 可以从Apache服务器的官方站点下载最新版本的程序源代码,并在RHEL4系统中进行编译安装。(因为系统光盘里的版本过低所以选择编译安 ......
在Linux下安装Oracle Database 9i
2009年05月11日 星期一 20:49
http://www0.ccidnet.com/tech/guide/2001/11/20/58_3761.html
Oracle9i 2000年10月在Oracle Open World上发布,为 Oracle 数据库、应用服务器和开发工具引进了许多新功能。Oracle9i是业界第一个完整、简单的用于互联网的新一代智能化的、协作各种应用的软 ......
远程调试环境由宿主机GDB和目标机调试stub共同构成,两者通过串口或TCP连接,使用GDB标准程串行协议协同工作,实现对目标机上的系统内核和上层应用的监控和调试功能,调试stub是嵌入式系统中的一段代码,作为宿主机GDB和目标机调试程序间的一个媒介而存在。
就目前而言,嵌入式Linux系 ......
linux下安装apache+php
1.apache
在如下页面下载apache的for linux 的 ......