全球最实用的IT互联网信息网站!

AI人工智能P2P分享&下载搜索网页发布信息网站地图

当前位置:诺佳网 > 电子/半导体 > 接口/总线/驱动 >

看一下Linux下USB驱动的架构(二)

时间:2022-08-16 17:50

人气:

作者:admin

标签: USB驱动  驱动器  网络接口 

导读:看一下Linux下USB驱动的架构(二)-xhci主机的驱动方式和ehci基本一样,在/drivers/usb/host/xhci.c中实现XHCI主机驱动的工作。具体的驱动只要简单调用xhci_init_driver()即可。...

前言

前面简单聊了一下USB驱动的整体框架(一),下面看一下驱动主机的《USB驱动框架》。

主机游戏框架

poYBAGL7ZtaAfHtxAACPuQ4INgI097.png
 

USB核心(USBD)是整个USB驱动的核心部分,USBD来自从USB主机接收到USB驱动端的非端设备进行处理,然后传送给上层的驱动端;同时也接收上层格式的数据流,相应的数据处理后承接交给USB主机驱动。所以它是一个上启下的作用。

重要结构体

usb_hcd -- 主机驱动器

poYBAGL7ZwuAINa5AAEIXdrUudo154.pngpoYBAGL7ZxGAZWOLAAFvq0LRaAI469.pngpoYBAGL7ZxeAQKLQAAA3VD_4TEc814.png


hc_driver -- 控制器操作函数

pYYBAGL7Z2WAACHiAAFtAT0FpUM620.pngpoYBAGL7Z2qAeTpgAAFwFZWe1Zw332.pngpoYBAGL7Z3CAM7ibAAHWM8qwW5w433.pngpYYBAGL7Z3WAf_uRAAHNXgmNCbs553.pngpYYBAGL7Z4aAStTNAADVL0J2ZQM145.png

调用usb_submit_urb ()提交一个USB请求之后,该函数调用usb_hcd_submit_urb(),并最终调用usb_hcd的驱动成员(hc_driver类型)的urb_enqueue()函数。

ehci_hcd -- ECHI主机

poYBAGL7Z8GAPBkwAAE5qNkU7Kw725.pngpoYBAGL7Z8qALuU2AAHBVOdhZcQ950.pngpYYBAGL7Z9GAMIMkAAG1dSedspo811.pngpoYBAGL7Z9eAANvXAAD-njb6OOw626.png

ECHI HCD驱动属于HCD驱动的实例,用ehci_hcd结构体来表示,它通常会作为usb_hcd结构体的私有数据(hcd_priv)。

API函数

poYBAGL7Z_2AWYnaAAGhsA1_it4031.pngpYYBAGL7aAOAJvTIAABFTl1QHxs098.png

该drivers/usb/ehci-hcd.c中实现了EHCI主机驱动的工作,具体的驱动只要简单调用ehci_init_driver()就可以/看一下主机的具体实现:

pYYBAGL7aBqAftY-AACVF7whuxQ055.pngpYYBAGL7aAOAJvTIAABFTl1QHxs098.png

这个函数就是初始化hc实例_驱动程序,这个函数带的通用hc_driver ,而第二个参数可以是hc_driver实例的reset()、port_power(另外一个驱动程序)一些额外的专利数据。

poYBAGL7aEeAZNeVAAEnDJ50Lbs737.pngpYYBAGL7aEyAR3_7AAC5IZuEsDc761.png

上面是Linux已经很好操作的ehci接口函数,基本都是通用的,所以不需要自己再实现。

xhci主机的驱动方式和ehci基本一样,在/drivers/usb/host/xhci.c中实现XHCI主机驱动的工作。具体的驱动只要简单调用xhci_init_driver()即可。



审核编辑:刘清

温馨提示:以上内容整理于网络,仅供参考,如果对您有帮助,留下您的阅读感言吧!
相关阅读
本类排行
相关标签
本类推荐

CPU | 内存 | 硬盘 | 显卡 | 显示器 | 主板 | 电源 | 键鼠 | 网站地图

Copyright © 2025-2035 诺佳网 版权所有 备案号:赣ICP备2025066733号
本站资料均来源互联网收集整理,作品版权归作者所有,如果侵犯了您的版权,请跟我们联系。

关注微信