USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
如果对内核代码进行统计,会发现超过百分之五十的代码都是设备驱动。可见Linux内核支持了大量的设备,也说明设备的多样性支持对于内核的重要性。应用层需要统一的接口对设备进行操作,内核中还需要良好的框架和机制对这些设备进行管理,而很多情况下还需要设备能够被发现并绑定正确的驱动(驱动需要允许动态加载),这些都是需要内核框架的支持。随着嵌入式设备的发展,功耗问题逐渐成为研究的重点,这样在框架方面也需要完整、统一、简单的实现,以对整个设备的使用以及功耗进行管理。所有这些需求都是需要在各种各样的设备上实现,实际就会跨越不同的设备类型,从而形成对各种设备的横切功能。
无论是应用层的设备还是横切功能,在设备管理中都是高层的抽象概念。这些抽象的细节如图3-9所示,图3-9中的设备模型(device model)就是实现横切功能的高级抽象模块,后续会对设备模型进行详细讲解。横切模块通常采用内嵌的方式来具体的实现。kernel对外提供了良好的接口sys文件系统,可以使用户查看具体的设备信息。关于设备,之前已经介绍用户直接交互的设备主要是人机接口(human interface)设备,人机接口设备主要是通过字符设备框架来做具体的实现。一个良好的设备实现框架,如字符设备框架,也是设备开发的重要需求。其他的需求,如中断框架、地址映射、内存管理、定时器等内核核心功能模块都是支撑驱动开发的基础。还有一些情况某些设备中会有子设备,比如现在的视频设备中会有I2C总线进行控制,这样在视频设备中就需要使用I2C的设备驱动,这就要求各种设备驱动提供良好的接口以便其他设备在需要时使用相应的功能。这些都是对设备及设备开发的需求。
图3-8 CPU和RAM管理框图(www.chuimin.cn)
图3-9 设备模型和抽象设备框图
有关深入剖析Linux内核与设备驱动的文章
USB的设计为非对称式的,它是主从式总线,任何USB事务都是由主机引发的。USB总线拓扑如图7-12所示。图7-12引自《USB2.0规范》。USB总线已经成为使用最广泛的设备连接标准。每个USB设备至少有两个端点/管道,分别是进和出两个方向,编号为0,用于控制总线上的设备。总体上来说,系统对USB总线驱动的需求就是要能按规范实现总线的各种功能,并且满足总线的各种无关性的需求。......
2023-11-22
Linux内核有一类特殊的用户,就是系统管理员,这些用户需要对内核有一定的了解,并对内核进行相应的设置。Linux内核也要满足性能需求,需要更快、更高、更强。内核和驱动开发人员需要Linux内核提供基本功能和框架的支持。......
2023-11-22
SPI是一种高速、全双工、同步总线。这样就允许单个SPI总线上连接多个SPI从设备。对于SPI总线从设备并没有固化的地址,而是通过CS信号区分不同的设备。另外因为SPI总线频率最高可以达到70MHz,所以需要较大吞吐量的操作方案进行数据传输,通常使用DMA进行操作。总体上来说,系统对于SPI总线驱动的需求就是要能实现总线的各种功能,并且满足类似于I2C总线的各种无关性需求。图7-5SPI总线数据传输信号规范......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
内核核心功能应该能满足最小系统的需求。最小系统中最核心的硬件是CPU和RAM,在系统执行期间这两个硬件是必需的。所以这两部分的管理可以说是Linux内核的重中之重,对性能等各方面的影响也是最大的。可见Linux内核在目录编排上也是有比较多的讲究的,这在后续讨论设备驱动时会有更多介绍。由于DMA在硬件中的广泛使用,内核同样需要在核心部分提供该功能。可见Linux内核核心功能需求也是逐渐发展来满足内核和驱动开发需要的。......
2023-11-22
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
内存管理是Linux内核非常重要的功能,可以说是最基础的功能之一。图4-31存储系统层次结构整个内存管理的首要需求自然是内存物理空间的管理。特别是视频应用需求的不断增长使得内存管理的需求也发生了变化,由于图像分辨率以及显示分辨率的不断提高,而协处理器通常又需要连续的物理内存,这样就有对于几兆甚至十几兆连续内存管理的需求。而原有的Linux内核内存管理并不能满足这种需求,这样就需要开发新的内存管理方法。......
2023-11-22
Linux内核作为目前最成功以及发展最快的开源项目之一,在实际应用中取得的巨大成功是举世瞩目的。Linux Foundation于2013年9月发布了《Who Writes Linux》报告,公布了最新的不同组织对Linux内核贡献的情况,见表1-1。表1-1不同组织对Linux内核贡献贡献前30名的公司中半导体厂商就有11家,约占三分之一,如果算上硬件相关的公司会超过20家,贡献总量超过了60%。可见硬件厂商对Linux内核的贡献是很大的,对Linux内核的影响也是巨大的。......
2023-11-22
相关推荐