linux驱动程序的特点和程序框架,linux驱动之USB驱动程序框架

USB驱动程序框架:

app:

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

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

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

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

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

USB总线控制器

UHCI  OHCI   EHCI

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

USB设备

USB总线规范:

UHCI

intel

低速(1.5Mbps)/全速(12Mbps)

硬件功能强大,软件简单

OHCI

microsoft

低速(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

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

0818b9ca8b590ca3270a3433284dd417.png

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函数(参照下图)

0818b9ca8b590ca3270a3433284dd417.png

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值