linux设备驱动层次
USB 采用树形拓扑结构,主机侧和设备侧的USB 控制器分别称为主机控制器(HostController)和USB 设备控制器(UDC),每条总线上只有一个主机控制器,负责协调主机和设备间的通信,而设备不能主动向主机发送任何消息。如图20.1 所示,在Linux 系统中,USB 驱动可以从两个角度去观察,一个角度是主机侧,一个角度是设备侧。
如图20.1 的左侧所示,从主机侧的观念去看,在Linux 驱动中,USB 驱动处于最底层的是USB 主机控制器硬件,在其之上运行的是USB 主机控制器驱动,主机控制器之上为USB 核心层,再上层为USB 设备驱动层(插入主机上的U 盘、鼠标、USB 转串口等设备驱动)。因此,在主机侧的层次结构中,要实现的USB 驱动包括两类:USB 主机控制器驱动和USB 设备驱动,前者控制插入其中的USB 设备,后者控制USB 设备如何与主机通信。Linux 内核USB 核心负责USB 驱动管理和协议处理的主要工作。主机控制器驱动和设备驱动之间的USB 核心非常重要,其功能包括:通过定义一些数据结构、宏和功能函数,向上为设备驱动提供编程接口,向下为USB 主机控制器驱动提供编程接口;通过全局变量维护整个系统的USB 设备信息;完成设备热插拔控制、总线数据传输控制等。
如图20.1 的右侧所示,Linux 内核中USB 设备侧驱动程序分为3 个层次:UDC 驱动程序、Gadget API 和Gadget 驱动程序。UDC 驱动程序直接访问硬件,控制USB 设备和主机间的底层通信,向上层提供与硬件相关操作的回调函数。当前Gadget API 是UDC 驱动程序回调函数的简单包装。Gadget 驱动程序具体控制USB 设备功能的实现,使设备表现出“网络连接”、“打印机”或“USB Mass Storage”等特性,它使用Gadget API 控制UDC 实现上述功能。Gadget API 把下层的UDC 驱动程序和上层的Gadget 驱动程序隔离开,使得在Linux 系统中编写USB 设备侧驱动程序时能够把功能的实现和底层通信分离。
linux设备驱动层次的更多相关文章
- linux设备驱动概述,王明学learn
linux设备驱动学习-1 本章节主要学习有操作系统的设备驱动和无操作系统设备驱动的区别,以及对操作系统和设备驱动关系的认识. 一.设备驱动的作用 对设备驱动最通俗的解释就是“驱使硬件设备行动” .设 ...
- Linux 设备驱动 Edition 3
原文网址:http://oss.org.cn/kernel-book/ldd3/index.html Linux 设备驱动 Edition 3 By Jonathan Corbet, Alessand ...
- linux 设备驱动概述
linux 设备驱动概述 目前,Linux软件工程师大致可分为两个层次: (1)Linux应用软件工程师(Application Software Engineer): 主要利用C库函数和 ...
- 乾坤合一~Linux设备驱动之USB主机和设备驱动
如果不能陪你到最后 是否后悔当初我们牵手 如果当初没能遇见你 现在的我 在哪里逗留 所有的爱都是冒险 那就心甘情愿 等待我们一生中 所有悬念 我一往情深的恋人 她是我的爱人 她给我的爱就像是 带着露水 ...
- Linux设备驱动模型之platform(平台)总线详解
/********************************************************/ 内核版本:2.6.35.7 运行平台:三星s5pv210 /*********** ...
- Linux设备驱动模型底层架构及组织方式
1.什么是设备驱动模型? 设备驱动模型,说实话这个概念真的不好解释,他是一个比较抽象的概念,我在网上也是没有找到关于设备驱动模型的一个定义,那么今天就我所学.所了解 到的,我对设备驱动模型的一个理解: ...
- linux设备驱动的分层设计思想--input子系统及RTC
转自:linux设备驱动的分层设计思想 宋宝华 http://blog.csdn.net/21cnbao/article/details/5615493 1.1 设备驱动核心层和例化 在面向对象的程序 ...
- Linux 设备驱动模型
Linux系统将设备和驱动归一到设备驱动模型中了来管理 设备驱动程序功能: 1,对硬件设备初始化和释放 2,对设备进行管理,包括实参设置,以及提供对设备的统一操作接口 3,读取应用程序传递给设备文件的 ...
- linux设备驱动模型之Kobject、kobj_type、kset【转】
本文转载自:http://blog.csdn.net/fengyuwuzu0519/article/details/74838165 版权声明:本文为博主原创文章,转载请注明http://blog.c ...
随机推荐
- DatabaseError: no such table: django_session
最近我也遇到这个问题了,从网上查了下,说是数据库同步出了问题,只需要运行如下命令:python manage.py syncdb就可以了 (这是django1.4之前的命令,1.4之后的是 pytho ...
- Android——inflate 将一个xml中定义的布局找出来
通俗的说,inflate就相当于将一个xml中定义的布局找出来. 因为在一个Activity里如果直接用findViewById()的话,对应的是setConentView()的那个layout里的组 ...
- xutils 框架
1. android快速开发框架xUtils xUtils简介 xUtils 包含了很多实用的android工具. xUtils 支持大文件上传,更全面的http请求协议支持(10种谓词),拥有更加灵 ...
- jmeter随笔(4)--中文url编码问题
最近在工作中,对jmeter实践的点滴的记录,这里分享交流,不一定正确,仅供参考和讨论,有想法的欢迎留言.谈论,手机上图片如果不清晰,请点击[阅读原文]查看. 技巧1:中文url编码问题 问题:我们抓 ...
- SMTP邮件发送命令
第一步,远程登录smtp服务器 在命令行窗口输入 telnet smtp.163.com 25 然后回车第二步,用户登录 输入 helo 163.com 回车,这是向服务器表明你的用户身份250 OK ...
- 学习总结 java 数据库 ResultSet 、PreparedStatement
package com.hanqi.test; import java.sql.*; public class jdbcTest { public static void main(String[] ...
- Tomcat 7优化前及优化后的性能对比
Tomcat 7在我们日常开发.测试.生产环境都会使用到,但对于大部分开发人员来说,对其性能还是没有多大了解.本文就对它做一次性能测试,对比优化前后的性能区别. 一.运行环境 CPU: Intel(R ...
- Heavily reliance on forensic tools is risky
We could take advantage of forensic tools to examine and analyze the evidence, but heavily reliance ...
- Android IOS WebRTC 音视频开发总结(三九)-- win10升级为何要p2p
本文主要介绍webrtc p2p的应用场景,文章来自博客园RTC.Blacker,支持原创,转载请说明出处. P2P最简单的解释就是两个客户端之间直接进行数据交互,不经过服务端转发. 最早接触P2P是 ...
- Linux系统在嵌入式硬件上的移植
========================= 基本常识 ========================= 一. Linux系统的基本构成: 1. loader 2. ...