考虑到电源管理的需求涉及处理器和各种设备,一方面是处理器尽可能减少功耗,另一方面是设备尽可能减少功耗。图5-30Linux电源管理各个功能从图5-30可见Linux内核的电源管理功能有与处理器相关的CPUIdle和CPUFreq,也有与设备相关的runtime pm,另外还有与整个系统待机时SLM相关的低功耗电源管理功能。下面分别对这些功能框架进行介绍。具体的驱动同样会在SoC电源管理部分进行讲解。对具体设备的电源管理实现,将在设备驱动中进行详细分析。......
2023-11-22
关于GPIO管理,Linux内核提供了GPIO lib来实现具体的GPIO服务,提供了统一的接口供其他模块使用,基本的框架如图4-49所示。
图4-49 Linux内核GPIO框架
从图4-49可见,各种设备模块都可以访问使用GPIO,相应的需要通过GPIO lib和Linux内核中断处理子系统进行操作。而真正的GPIO芯片的实现是通过GPIO chip提供的接口来实现的。
1ᤫ外部使用GPIO的操作接口
GPIO lib提供的功能接口如下:
这些接口的名字都很好理解,相应的都会调用GPIO chip的接口函数。
2ᤫGPIO内部管理框架
GPIO框架的重要数据结构就是gpio_chip,详细内容如下:
系统中可以有多个gpio_chip,而每个gpio_chip管理一组GPIO,其中base表示相应的gpio_chip管理的系统中的起始GPIO号,一共管理ngpio个GPIO。(www.chuimin.cn)
内核将所有的GPIO组成数组,每个GPIO用gpio_desc进行描述,具体的结构如下:
其中的chip表示该GPIO由哪个gpio_chip进行管理。其中,flags表示该GPIO是否被请求、输入输出状态等与GPIO功能相关的状态及属性。
GPIO框架中还需要对gpio_chip进行管理,主要是将实际的物理GPIO的管理实体gpio_chip和逻辑层的gpio_desc进行绑定,相应绑定的GPIO号是在gpio_chip的base至base+ng-pio之间。对之前gpio_request申请的,只有在绑定gpio_chip之后才能申请成功,继而对GPIO进行正确的操作。
具体的gpio_chip管理接口如下:
3ᤫGPIO的sysfs接口
针对应用程序对GPIO操作的需求,GPIO库将GPIO开放到sysfs文件系统中,这样可以在用户层对GPIO进行相应的操作。在用户层进行操作的好处是,可以直接进行开发而不是通过驱动程序进行,另外从软件版权考虑可以将不同的版权更好的隔离避免彼此的污染。相应的接口如下:
开放到sysfs的GPIO有如下的操作接口:
以上是GPIO框架抽象层的实现,体系结构具体的实现主要就是实现并注册结构体gpio_chip及相关的操作。从整体上来说GPIO框架还是简单直接的。
有关深入剖析Linux内核与设备驱动的文章
考虑到电源管理的需求涉及处理器和各种设备,一方面是处理器尽可能减少功耗,另一方面是设备尽可能减少功耗。图5-30Linux电源管理各个功能从图5-30可见Linux内核的电源管理功能有与处理器相关的CPUIdle和CPUFreq,也有与设备相关的runtime pm,另外还有与整个系统待机时SLM相关的低功耗电源管理功能。下面分别对这些功能框架进行介绍。具体的驱动同样会在SoC电源管理部分进行讲解。对具体设备的电源管理实现,将在设备驱动中进行详细分析。......
2023-11-22
1框架总体设计从输入设备框架的需求可知,内核的整个输入流程应该分为下层的各种输入设备和上层与用户的控制信息交互两个方面。从图6-1可见,输入设备系统框架的核心部分从底到上分为input driver,input core和event handler三个部分。应用层则要根据输入设备的事件进行相应的操作,为了给应用层统一的接口,输入设备框架对于输入事件进行了规范。......
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
1老版本内核时间管理框架在Linux 2.6.16之前,内核一直使用一种称为timer wheel的机制来管理时钟。这就是熟知的基于Hz的timer机制。2新的时间管理框架为了解决timer wheel低精度以及与内核其他模块的高耦合性的缺点,Linux内核引入了hrtimer。它是建立在per-cpu时钟事件设备基础上的。图4-48Linux内核时间管理框架⑤dynamic tick。它能在系统空闲时通过停止tick的运行以达到降低处理器功耗的目的。dynamic tick是为彻底替换掉周期性的tick机制而产生的。这是因为hrtimer在高精度模式时必须使......
2023-11-22
整体的frame buffer框架如图6-5所示。了解frame buffer的框架还要先从为用户提供的接口开始。图6-7可变参数中硬件信息的含义固定信息是在frame buffer的操作过程中并不发生变化的。从整体分析,frame buffer的框架很直接,主要就是直接管理实际的设备,而相关的操作与应用层直接相关。......
2023-11-22
为了满足以上的需求,视频驱动框架分别在不同的层次进行了设计,以实现不同层面的巨大挑战。从中可以一定程度上了解视频驱动的框架。视频驱动框架也考虑到这两种需求,并提供了解决方法。2设备层次管理前面部分主要涉及视频驱动框架中对应用层接口实体的管理,框架还需要提供实际设备的管理层。......
2023-11-22
SPI总线框架对这两类设备进行管理,具体的框架如图7-6所示。通常的SPI驱动都是在内核实现并在内核态执行的,所以就不对spidev进行详细的分析。SPI总线框架整体的功能就是这样,接下来看看具体各部分的实现。在SPI总线框架中相应的实体是spi_board_info,内容如下:其中的主要信息是与总线信号相关的属性。......
2023-11-22
相关推荐