图7-8引自《MMC规范》。需要根据这些控制器的属性值正确地操作MMC设备。图7-9MMC信号传输特点图7-9以单一的读操作为例,可见MMC的信号主要通过CMD传送命令,并且需要响应,通过DAT信号传送数据。另外由于MMC连接的设备可能会以卡的形式存在,这就需要能够支持对设备插入的检测,在系统级别也需要能够对设备插拔进行支持。总体上来说,MMC总线驱动的需求就是要能实现总线的各种功能,并且满足总线的各种无关性需求。......
2023-11-22
探讨需求首先要考虑的就是需求从哪里来的问题。这就涉及用户是谁的问题。Linux内核的用户是谁呢?Linux内核的用户不是Linux桌面系统的使用者,主要是两类程序开发人员,一类是应用层的开发人员,另一类是内核及驱动的开发人员。
这两类开发人员看Linux内核系统的视角是不同的,应用层开发人员是从外部看Linux内核,更多的是将内核作为黑盒;而内核及驱动开发人员是从内部看Linux内核,需要了解Linux内核的内部实现机制。
视角不同自然需求就不同。应用开发人员需要Linux内核提供的功能,主要在用户管理(包括用户界面和用户账户管理)、系统管理(涉及资源分配和时间管理等)、数据管理(通常通过文件系统相关接口实现)和各种网络功能几个方面。另外Linux内核设计之初就考虑兼容UNIX的应用,所以要求与UNIX功能接口一致,不能在不同版本中功能有变化。针对这些特点,Linux内核提供和UNIX相同的应用层接口即系统调用。由于UNIX本身并不是图像化系统,所以设计时并没有考虑图形化操作的接口。所以Linux内核在开始的时候并没有像Windows那样考虑这部分功能,在内核也没有图形渲染的驱动,只有通过字符设备这种抽象的功能和ioctl这种扩展性极强的系统调用,来进行各种扩展。随着系统的发展,现如今也提供了DRM(direct rendering manager)图形渲染等功能,来完善图形化操作。当然这部分功能并不是通过增加新的系统调用,而是通过字符设备和ioctl系统调用来共同完成的。可见在设计系统时,关注主要功能并保留一个强大的扩展能力是十分重要的。
应用层开发人员还有对设备操作的需要,但是应用开发人员不想了解设备的具体细节,只是想使用设备完成一定的功能。对这些功能的需求,还要求这些功能的实现在任何硬件上都是相同的,也就是硬件无关或者说屏蔽各种硬件的差异。这部分需求,就要求Linux内核中提供给应用层的资源,要是虚拟的逻辑资源,不能是物理资源,通过转换来实现对应用层统一的视角。对于应用层来说硬件的无关性需要操作系统支持各种各样的设备,可以说要支持所有的设备,这样应用层可以只关注其业务的实现,而不关心设备寄存器的读写逻辑。(www.chuimin.cn)
应用层还有对安全性的需求,不同的用户所拥有的资源是有限的,并且不能超越权限访问其他用户的资源。
Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。这就需要内核很多模块开放设置,设置分为启动参数设置和运行时参数设置。设置很大程度上是进行系统调优,是为了性能。Linux内核也要满足性能需求,需要更快、更高、更强。
内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。他们更多是需要Linux内核有良好的框架设计和性能,可以使得他们开发的模块容易集成到内核系统中,并且彼此隔离对其他模块没有影响。从内核和驱动开发人员的角度,功能可以分为核心功能和设备相关功能两个方面。
有关深入剖析Linux内核与设备驱动的文章
图7-8引自《MMC规范》。需要根据这些控制器的属性值正确地操作MMC设备。图7-9MMC信号传输特点图7-9以单一的读操作为例,可见MMC的信号主要通过CMD传送命令,并且需要响应,通过DAT信号传送数据。另外由于MMC连接的设备可能会以卡的形式存在,这就需要能够支持对设备插入的检测,在系统级别也需要能够对设备插拔进行支持。总体上来说,MMC总线驱动的需求就是要能实现总线的各种功能,并且满足总线的各种无关性需求。......
2023-11-22
应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动,这些都是需要内核框架的支持。无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。这些都是对设备及设备开发的需求。......
2023-11-22
通常的分类方式是将设备分为字符设备、块设备和网络设备。这样的分类方式只是在高级抽象层中对主设备相关的分类,对具体的设备究竟如何划分并没有涉及。谈到设备分类,还会想到Linux内核中的drivers目录,drivers目录下的子目录本身就是对设备驱动的分类。图3-12驱动层次看过Webcam的例子后,再重新考虑设备分类的问题,硬件通过各种总线实现层次扩展。那么按照这种层次的需要进行设备分类,一定会有全新的视角。......
2023-11-22
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
图6-4分辨率指标从图6-4可见,目前各种显示分辨率,不仅大小不同,长宽比也是各种各样的,这些分辨率主要有两种不同的标准,一种是4∶3的PC相关的显示器标准,另外一种是16∶9的TV相关的标准。对显示驱动基本的需求就是能够支持这些各种不同分辨率和长宽比的显示设备,并对这些设备进行相应的控制,使得系统能有较好的输出效果。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
音频设备还有可能有多路数据源,而在设备内部作混音,所以在考虑控制需求的时候,同样要考虑相关的应用以及混音通路的设置。这样更进一步要求控制流能够和数据流分离。然而控制流和数据流不仅要考虑分离又要考虑关联,毕竟控制部分同样需要能够获取数据流格式等相关的信息。......
2023-11-22
SPI是一种高速、全双工、同步总线。这样就允许单个SPI总线上连接多个SPI从设备。对于SPI总线从设备并没有固化的地址,而是通过CS信号区分不同的设备。另外因为SPI总线频率最高可以达到70MHz,所以需要较大吞吐量的操作方案进行数据传输,通常使用DMA进行操作。总体上来说,系统对于SPI总线驱动的需求就是要能实现总线的各种功能,并且满足类似于I2C总线的各种无关性需求。图7-5SPI总线数据传输信号规范......
2023-11-22
相关推荐