应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动,这些都是需要内核框架的支持。无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。这些都是对设备及设备开发的需求。......
2023-11-22
谈到内核核心需求,先回忆一下最小系统。最小系统包括主处理器(可以理解为CPU)、内存(RAM)、外部存储设备(最小系统中是NAND Flash)、电源管理芯片以及时钟晶振。内核核心功能应该能满足最小系统的需求。从最小系统的硬件出发,考虑内核应该满足的功能,包括程序管理功能、内存管理功能和存储管理功能,当然也对应到这些功能的各个层次的实现(在Linux内核层次分析中做过讨论)。另外针对时钟晶振的硬件,内核还应该提供时间管理和定时器管理相应的功能。
最小系统中最核心的硬件是CPU和RAM,在系统执行期间这两个硬件是必需的。所以这两部分的管理可以说是Linux内核的重中之重,对性能等各方面的影响也是最大的。对这两部分的性能需求非常苛刻,这也就是这两部分在Linux内核中,直到今天还在不断改进的原因(相关改进如将中断处理分成前半部和后半部,抢占式调度,调度算法演变为O(1)算法,采用CFS调度器或Deadline调度器等新式调度器,内存管理支持大容量内存,大内存页等等)。可以预见未来这两部分功能仍然是改进的重点,但是改进的方向应该在SMP和多核并行运算,以及锁的效率上。效率至上在这两部分中体现特别明显,只要性能有提升,哪怕是面目全非的完全重写,也是必须做的。图3-8中展示了Linux内核这两部分可供各个模块使用的功能,从中会看到很多熟悉的函数,后面会进行比较全面的介绍。
从图3-8中可见,体系结构无关的代码主要是在kernel以及mm两个目录中,而与体系结构相关的代码则在arch/xxx/和arch/xxx/mm下。可见Linux内核在目录编排上也是有比较多的讲究的,这在后续讨论设备驱动时会有更多介绍。(www.chuimin.cn)
在图3-8中的memory硬件中除了RAM还有DMA和MMU。通常MMU和RAM一起实现内存管理,而DMA作为底层的一个横切功能,可以作为基础库提供给不同的设备驱动使用。由于DMA在硬件中的广泛使用,内核同样需要在核心部分提供该功能。另外和硬件相关的底层横切功能还包括clock、GPIO和引脚管理等功能。随着Linux的内核发展这些底层的横切功能已经逐渐脱离具体的体系结构形成抽象库,以供Linux内核和设备驱动使用。可见Linux内核核心功能需求也是逐渐发展来满足内核和驱动开发需要的。
有关深入剖析Linux内核与设备驱动的文章
应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动,这些都是需要内核框架的支持。无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。这些都是对设备及设备开发的需求。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。Linux内核也要满足性能需求,需要更快、更高、更强。内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。......
2023-11-22
考虑到电源管理的需求涉及处理器和各种设备,一方面是处理器尽可能减少功耗,另一方面是设备尽可能减少功耗。图5-30Linux电源管理各个功能从图5-30可见Linux内核的电源管理功能有与处理器相关的CPUIdle和CPUFreq,也有与设备相关的runtime pm,另外还有与整个系统待机时SLM相关的低功耗电源管理功能。下面分别对这些功能框架进行介绍。具体的驱动同样会在SoC电源管理部分进行讲解。对具体设备的电源管理实现,将在设备驱动中进行详细分析。......
2023-11-22
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
SPI是一种高速、全双工、同步总线。这样就允许单个SPI总线上连接多个SPI从设备。对于SPI总线从设备并没有固化的地址,而是通过CS信号区分不同的设备。另外因为SPI总线频率最高可以达到70MHz,所以需要较大吞吐量的操作方案进行数据传输,通常使用DMA进行操作。总体上来说,系统对于SPI总线驱动的需求就是要能实现总线的各种功能,并且满足类似于I2C总线的各种无关性需求。图7-5SPI总线数据传输信号规范......
2023-11-22
内存管理是Linux内核非常重要的功能,可以说是最基础的功能之一。图4-31存储系统层次结构整个内存管理的首要需求自然是内存物理空间的管理。特别是视频应用需求的不断增长使得内存管理的需求也发生了变化,由于图像分辨率以及显示分辨率的不断提高,而协处理器通常又需要连续的物理内存,这样就有对于几兆甚至十几兆连续内存管理的需求。而原有的Linux内核内存管理并不能满足这种需求,这样就需要开发新的内存管理方法。......
2023-11-22
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
相关推荐