linux驱动之USB驱动程序框架


USB驱动程序框架:

app:

-----------------------------------------------------------------------

                             USB设备驱动程序          ----》知道数据的含义

内核            --------------------------------------------------------

                             USB总线驱动程序          -----》1、识别,2.找到匹配的设备驱动。3.提供USB读写函数(不知道数据的具体含义)

----------------------------------------------------------------------

                              USB总线控制器

                           UHCI  OHCI   EHCI

硬件                 -----------------------------

                                   USB设备


USB总线规范:

UHCIintel低速(1.5Mbps)/全速(12Mbps)硬件功能强大,软件简单
OHCImicrosoft低速(1.5Mbps)/全速(12Mbps)硬件相对较弱,软件复杂
EHCI 高速(480Mbps) 

linux-2.6.30.4内核自带 OHCI。


USB总线驱动程序的作用:

1、识别USB设备

1.1分配地址

1.2告诉USB设备(set address)

1.3发出命令,获取描述符

描述符信息在在inlcude/linux/usb/ch9.h

usb_device_descriptor

       usb_config_descriptor

每个硬件都有一个设备描述符号,每个设备描述服中又包含配置描述符号(多个)。




2、查找并板状对应的设备驱动程序


3、提供USB读写函数

---------------------------------------------------------------------------------------------------------------------------------------------------

内核中usb驱动流程:

hub_irq
    kick_khubd
        hub_thread
            hub_events
                hub_port_connect_change
                    usb_alloc_dev
                        dev->dev.bus = &usb_bus_type;
                    choose_address(udev);//为新设备分配编号
                        bus->devnum_next);
                    hub_port_init : "%s %s speed %sUSB device using %s and address %d\n",
                        hub_set_address//把编号告诉USB设备
                        usb_get_device_descriptor;//获取设备描述符
                        retval = usb_get_device_descriptor(udev, USB_DT_DEVICE_SIZE);
                    usb_new_device(udev);
                    usb_get_configuration把所有的描述符号都都出来,解析
                    device_add//把设备放入usb_bus_type的dev链表,从usb_bus_type的driver链表里取出usb_driver逐个进行比较,

                                         //把usb_interfaces和usb_driver的id_table比较
                                         //如果能够匹配,那么调用usb_driver的probe函数(参照下图)















  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值