通常的分类方式是将设备分为字符设备、块设备和网络设备。这样的分类方式只是在高级抽象层中对主设备相关的分类,对具体的设备究竟如何划分并没有涉及。谈到设备分类,还会想到Linux内核中的drivers目录,drivers目录下的子目录本身就是对设备驱动的分类。图3-12驱动层次看过Webcam的例子后,再重新考虑设备分类的问题,硬件通过各种总线实现层次扩展。那么按照这种层次的需要进行设备分类,一定会有全新的视角。......
2023-11-22
对硬件有了基本的了解,就可以从硬件出发考虑内核应该满足的需求了。
硬件的类型是多种多样的,连接的接口也是变化多样的,作为内核的一个最基本的要求就是能够访问并操作这些设备,这就需要大量的设备驱动支持。同时也要支持各种不同的数据连接接口。内核也需要支持各种总线,并且要支持各种类型的设备,由于总线要符合一定的协议并连接多个设备,所以通常分为总线控制的主设备以及连接进行总线响应的从设备;内核会应用到各种设备,所以需要同时为各种总线的主设备以及从设备提供支持。当然电源管理的需求会涉及以上各种设备、总线和接口。另外内核不能只是支持特定的处理器,需要支持各种类型的处理器,学术一点的说法就是要支持各种体系结构。
还有一点比较重要的思路就是,大型的系统会涉及很多人共同开发,这就对代码的可维护性和重用性提出了很高的要求,针对这个需要在设计过程中内核会将各种共同的资源抽象出来统一管理,并考虑硬件无关性形成相应的模块或者函数接口以供开发者使用。
总结下来从设备出发看内核要满足以下需求:
●能支持不同的体系结构和处理器。
●能支持不同的总线连接以及总线设备。(www.chuimin.cn)
●能支持不同的数据连接接口以及相应的设备。
●能支持各个级别的电源管理功能。
●设计时要考虑硬件无关性提高各模块的重用性。
前四项都是比较直接的需求,第五项则是考验开发人员的设计能力,也是内核的各个模块的设计重点以及我们研究的重点。
有关深入剖析Linux内核与设备驱动的文章
通常的分类方式是将设备分为字符设备、块设备和网络设备。这样的分类方式只是在高级抽象层中对主设备相关的分类,对具体的设备究竟如何划分并没有涉及。谈到设备分类,还会想到Linux内核中的drivers目录,drivers目录下的子目录本身就是对设备驱动的分类。图3-12驱动层次看过Webcam的例子后,再重新考虑设备分类的问题,硬件通过各种总线实现层次扩展。那么按照这种层次的需要进行设备分类,一定会有全新的视角。......
2023-11-22
图7-8引自《MMC规范》。需要根据这些控制器的属性值正确地操作MMC设备。图7-9MMC信号传输特点图7-9以单一的读操作为例,可见MMC的信号主要通过CMD传送命令,并且需要响应,通过DAT信号传送数据。另外由于MMC连接的设备可能会以卡的形式存在,这就需要能够支持对设备插入的检测,在系统级别也需要能够对设备插拔进行支持。总体上来说,MMC总线驱动的需求就是要能实现总线的各种功能,并且满足总线的各种无关性需求。......
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
Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。Linux内核也要满足性能需求,需要更快、更高、更强。内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。......
2023-11-22
应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动,这些都是需要内核框架的支持。无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。这些都是对设备及设备开发的需求。......
2023-11-22
内核核心功能应该能满足最小系统的需求。最小系统中最核心的硬件是CPU和RAM,在系统执行期间这两个硬件是必需的。所以这两部分的管理可以说是Linux内核的重中之重,对性能等各方面的影响也是最大的。可见Linux内核在目录编排上也是有比较多的讲究的,这在后续讨论设备驱动时会有更多介绍。由于DMA在硬件中的广泛使用,内核同样需要在核心部分提供该功能。可见Linux内核核心功能需求也是逐渐发展来满足内核和驱动开发需要的。......
2023-11-22
相关推荐