DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
总线型设备的主要功能是解决总线设备互连的问题,总线互连框架如图3-14所示。
图3-14 总线互连框架
图3-14的右侧是硬件连接示意图,PCI总线上挂载音频设备和USB总线控制器,USB总线上连接的设备包括I2C总线控制器和USB网络设备,而在I2C总线上则连接一个温度传感器,这是典型的总线层级连接,涉及PCI、USB和I2C三种总线设备。图3-14的左侧是软件实现的框架图,可以看到,对功能驱动来说,其只见到实际设备最终连接的总线,而整个连接层次中的其他总线对功能驱动并不可见。这样做的好处就是,功能部分只关心直接连接的总线协议及其功能。什么屏蔽了不同总线连接的差异呢?总线控制器提供了该功能。总线控制器(如USB controller)在不同的总线之间形成桥梁,并管理自己总线中连接的设备。这样具体设备就可以直接和总线控制器交互,由总线控制器屏蔽总线级联的差别。
Linux内核同样为开发者提供了详细的总线信息,可以通过/sys/bus获得,笔者Linux机器显示该目录的信息如下:(www.chuimin.cn)
这其中包含Linux内核支持的各种总线,有物理的总线(如i2c、spi、usb、pci、pci_express等),也有虚拟总线(如platform等)。虚拟总线是一种逻辑总线,主要是为了满足一种逻辑互连功能。连接的主体通常是设备和对应的驱动。总线的一个重要功能就是能够发现设备并找到合适的驱动来操作设备,这是逻辑总线的主要功能。Platform总线主要是为SoC内部设备而设计的,通过该总线可以将设备属性和驱动分离,从而可以使用相同的驱动来支持同一功能核心硬件的不同设备。
通过物理总线和虚拟的逻辑总线,可以对Linux内核所管理的设备进行更好的组织,并且可以通过抽象分离属性和操作,给系统带来更好的扩展性。后续章节会对总线设备进行更详细的介绍。
有关深入剖析Linux内核与设备驱动的文章
DM 3730的I2C控制器框架如图7-4所示。图7-4引自《DM 3730芯片手册》中第2798页的框图。关于DM 3730I2C的驱动部分,主要分析相关初始化和总线传输的操作。由于I2C作为控制和获取状态信息,数据量并不大,而且相关的操作频率并不高,这样在中断中进行相关的处理,对系统的影响并不大。......
2023-11-22
1框架总体设计从输入设备框架的需求可知,内核的整个输入流程应该分为下层的各种输入设备和上层与用户的控制信息交互两个方面。从图6-1可见,输入设备系统框架的核心部分从底到上分为input driver,input core和event handler三个部分。应用层则要根据输入设备的事件进行相应的操作,为了给应用层统一的接口,输入设备框架对于输入事件进行了规范。......
2023-11-22
整个系统启动和初始化的过程,Linux内核是在主处理器启动之后才会执行。不同的处理器启动流程并不相同,这就要求Linux内核能支持各种处理器的初始化操作。Linux内核各个模块,大部分设计时做到了体系结构无关。Linux内核是一个庞大的系统,最终生成的操作系统代码的执行文件非常大。......
2023-11-22
图3-3Linux内核整体框架③bridges:桥梁层。Linux内核通过统一的接口操作设备,这样就屏蔽了各个设备的差异,从而降低了和硬件的耦合关系。Linux内核为了简化实现,将共享资源的进程作为线程。考虑到外部事件需要对执行流程进行转换,另外不同的应用执行流程之间需要切换,这就要在Linux内核的逻辑层抽象出调度器这一逻辑功能。......
2023-11-22
也正是因为Linux内核的唯一性,各个不同发布版本拥有相同的框架。Linux内核是在整个Linux系统的最底层,它负责管理硬件,运行用户程序,并保持系统整体的安全性和完整性。可以说是Linux系统的根和灵魂。图3-1中看到Linux内核还有另一层面的含义。这对于Linux内核同样适用。所以对Linux内核的剖析、学习和研究也不能独立于系统进行,而是要综合考虑应用、内核和硬件等各方面的信息和内容。这样才能更全面、深刻地理解Linux内核。......
2023-11-22
VFS的实现是以“一切皆是文件”为需求出发点的。要理解VFS的框架首先看一下VFS和系统的静态关系框图,如图5-1所示。从图5-1可见,VFS是用户层的直接接口,是面向用户的服务。图5-1VFS和系统静态关系图在图5-2中每个节点被使用时都会在VFS层中创建dentry,这样可以快速通过文件名进行查找和定位,Linux内核中对dentry的管理组织形式如图5-3所示。以上是系统运行时VFS对文件名的组织管理,这是VFS管理的一个方面。......
2023-11-22
谈到Linux内核,大家的第一感觉就是一个庞大的系统、很多的模块和功能,实在是太复杂了。Linux内核在设计过程中这些都已考虑在其中,这也就提升了它的适用范围。抽象是人类的一个重要思维能力,从某种角度来说软件系统是对各种概念或者行为进行抽象,并加以管理。......
2023-11-22
整体的frame buffer框架如图6-5所示。了解frame buffer的框架还要先从为用户提供的接口开始。图6-7可变参数中硬件信息的含义固定信息是在frame buffer的操作过程中并不发生变化的。从整体分析,frame buffer的框架很直接,主要就是直接管理实际的设备,而相关的操作与应用层直接相关。......
2023-11-22
相关推荐