




已阅读5页,还剩3页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
第二节安卓电源管理电源管理一直是手机等移动设备最重要的功能,尤其是对于智能手机或电脑设备安卓来说。Linux已经在传统的个人电脑和服务器市场上得到很好的应用,并且有一个很好的电源管理框架。然而,对于智能手机等嵌入式设备,Linux标准电源管理并不十分适合,还有许多需要改进的地方。安卓在这方面做了一些很好的尝试。这里我们将详细介绍安卓系统的电源管理系统。我们不仅会关注安卓,还会讨论一些更好的电源管理技术。我们还将讨论流行的OMAP平台的一些硬件相关电源管理技术。包括:安卓暂停拦截器(wake _ lock)、安卓早期暂停、Linux暂停框架、Linix空闲框架、Linux CPUFreq框架。唤醒锁定和地球暂停是安卓电源管理的两个核心功能。由于这两个驱动程序都基于Linux系统标准的挂起框架,我们将首先看一下Linux系统的挂起框架,然后详细分析唤醒锁和地球挂起。2.2.1 Linux暂停/恢复框架挂起/恢复是Linux系统电源管理的一个重要功能。当系统不使用时,Suspend可以进入低功耗活动睡眠状态,从而节省系统功耗。在Linux系统中,挂起有四种状态。对于不同的架构或电源管理接口,状态的含义可能不完全相同,但不会有太大的差异。以下是ACPI电源接口及其相应睡眠状态的含义。-开(开)S0 -工作-待机(待机)S1 -中央处理器和内存已通电,但未执行-暂停到内存(内存)S3 -内存通电,运行内容保存到内存-暂停到磁盘,休眠(磁盘)S4 -所有内容保存到磁盘并关闭电源Linux系统的电源管理挂起框架是在Linux驱动程序模型的基础上建立和实现的。下图描述了Linux系统的电源管理挂起框架。Linux的挂起系统分为两个部分,一个是平台无关的核心层,另一个是平台相关的平台层。操作界面都在独立于平台的核心层。平台相关部分将使用暂停应用编程接口在暂停核心层注册它们的操作功能。根据Linux系统驱动程序模型,设备结构描述设备,设备驱动程序是设备的驱动程序,类、类型和总线分别描述设备所属的类、类型和总线。根据该模型,设备的电源管理可以分为类级、类级、总线级和驱动级。如果设备的类或总线确切知道如何管理设备的电源,驱动器级别挂起/恢复可以为空。这大大提高了电源管理的效率和灵活性。Linxux系统的挂起核心代码位于内核/电源目录中,主要文件是main.c和suspend.c平台相关代码通常位于平台的电源管理模块(arch),如ARM omap 34xx(arch/ARM/mach-omap 2/pm-34xx . c)的电源管理。在这里,我们将把Linux系统描述为根据驱动程序的接口和调用过程的任何挂起电源管理功能的实现。下图描述了Linux系统中挂起函数的调用路径,可以看到挂起函数和恢复函数是对应的。用户空间界面首先,让我们看看suspend的用户空间接口,它是一个/sys文件系统接口,接口文件是/sys/power/state。这是我们在用户空间操作暂停的唯一界面。当我们向该文件写入有效的挂起状态时,系统将调用挂起函数来进入有效的挂起状态。例如,如果我们将内存写入该文件,系统将进入挂起到内存状态。以下命令:回声记忆/系统/电源/状态当接收到这些数据时,驱动程序调用state_store函数来处理输入状态。默认状态是暂停待机。该功能首先检查是否进入休眠状态。如果是,它调用hibernate()函数进入休眠状态。如果没有,它会找到要进入的状态,并调用暂停进入状态函数进入暂停状态。我们已经看到了驱动程序实现中挂起和休眠之间的区别。所以Linux有两种暂停状态,待机和记忆。请注意,此处没有打开,因此您无法通过向/sys/power/state或其他内核接口功能发送打开命令来唤醒系统,因为这是针对服务器/电脑的,只能通过按键来完成(大多数电脑/笔记本电脑都提供暂停键,也可能是电源键)。暂停状态=暂停待机;if (len=4!strncmp(buf, disk ,len) 错误=hibernate();如果(状态为暂停最大值)error=enter_state(状态);Enter_state是挂起中定义的接口函数,用于使系统进入指定的挂起状态。剩下的就交给暂停系统了。内核驱动接口及其实现挂起接口功能内核挂起内核系统将几个非本地函数定义为挂起接口函数(linux/suspend.h),前面的enter_state就是其中之一,它们是:int pm_suspend(挂起_状态_t状态);void suspend_set_ops(结构平台_ suspend _ ops * ops);int suspend_valid_only_mem(挂起_状态_t状态);bool有效状态(挂起状态状态);然而,这里并不是所有的函数都被导出为其他模块函数使用。事实上,只有一个函数EXPORT,那就是pm_suspend。因此pm_Suspend是唯一外部可见的挂起系统接口功能。pm_suspend函数接口非常简单。这是对enter_state函数的简单封装。它首先确定状态是否有效。如果有效,则直接调用enter_state函数进入指定状态。int pm_suspend(suspend_state_t状态)如果(状态点暂停开状态=点暂停最大值)返回enter_state(状态);return-EINVAL;suspend_set_ops函数提供给平台底层来设置平台自己的挂起函数。是一个通用的验证函数,用来验证是否只支持mem暂停状态。提供此功能是因为大多数平台只支持MEM状态。因此,SUSPEND系统提供了这样的功能,使得每个平台可以共享,而无需单独实现其自己的验证功能。有效状态是暂停系统的一个验证功能。它将调用平台的底层有效函数来验证当前平台是否支持某个状态。系统挂起路径前面我们提到了挂起/恢复的调用路径,也称为挂起路径。这里我们详细描述了系统挂起路径及其功能。输入_暂停首先是enter_suspend函数,它在进入和退出挂起状态时处理一些例行处理。过程如下:首先,文件系统是同步的,以确保所有数据都写入存储设备,而不会因挂起而丢失数据sys _ sync();第二,调用suspend_prepare进入挂起状态。完成后,系统挂起状态变为“暂停准备”。该功能主要完成几件事:1)将控制台切换到SUSPEND_CONSOLE。2)通知pm_chain系统进入PM_SUSPEND_PREPARE状态(通过内核通知机制)。3)关闭usermodehelper函数,以防止新的helper函数运行。4)冻结所有冻结的任务(包括用户空间程序和一些内核空间线程)pm _ prepare _ console();事件通知程序调用链(事件暂停准备);user modehelper _ disable();suspend _ freeze _ processes第三,调用暂停设备并进入(状态);进入指定的挂起状态。第四,系统已经从挂起中醒来,并调用suspend_finish()来完成挂起操作。此功能的功能与suspend_prepare的功能相
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 中考动员会发言稿
- 护林员巡护安全知识培训课件
- 二零二五年焊管原材市场采购代理服务合同
- 二零二五年度高端游戏电脑租赁合同范本
- 二零二五年度政府机关办公电脑批量采购合同
- 护工安全知识培训课件
- 2025版建筑工程临时用工劳动权益保障合同
- 2025版办公室租赁合同员工福利与福利费用计算大全
- 护工基础知识培训课件
- 二零二五年度文化旅游融合发展项目合作开发协议
- 亲子活动热狗活动方案
- 2025年黑龙江、吉林、辽宁、内蒙古高考生物真题试卷(解析版)
- 河南省郑州市2023-2024学年高一下学期6月期末物理试题(解析版)
- 2024年中级统计师《统计基础理论及相关知识》真题及答案解析
- 智能制造虚拟仿真实训基地建设目标
- 《慢性乙肝治疗策略》课件
- 施工用电合同协议书
- 国际制药工程协会(ISPE)制药工程基本指南水和蒸汽系统
- 中小企业数字化转型的成效评估与优化
- 铲车作业安全事故案例分析
- 针刀室管理制度
评论
0/150
提交评论