标准linux休眠和唤醒机制分析

标准linux休眠和唤醒机制分析

ID:6380379

大小:258.00 KB

页数:36页

时间:2018-01-12

标准linux休眠和唤醒机制分析_第1页
标准linux休眠和唤醒机制分析_第2页
标准linux休眠和唤醒机制分析_第3页
标准linux休眠和唤醒机制分析_第4页
标准linux休眠和唤醒机制分析_第5页
资源描述:

《标准linux休眠和唤醒机制分析》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、标准linux休眠和唤醒机制分析标准linux休眠和唤醒机制分析(一)说明:1.Basedonlinux2.6.32,onlyformem(SDR)2.有兴趣请先参考阅读:电源管理方案APM和ACPI比较.docLinux系统的休眠与唤醒简介.doc3.本文先研究标准linux的休眠与唤醒,android对这部分的增改在另一篇文章中讨论4.基于手上的一个项目来讨论,这里只讨论共性的地方虽然linux支持三种省电模式:standby、suspendtoram、suspendtodisk,但是在使用电池供电的手持设备上,几乎所有的方案都只支持S

2、TR模式(也有同时支持standby模式的),因为STD模式需要有交换分区的支持,但是像手机类的嵌入式设备,他们普遍使用nand来存储数据和代码,而且其上使用的文件系统yaffs一般都没有划分交换分区,所以手机类设备上的linux都没有支持STD省电模式。一、项目power相关的配置目前我手上的项目的linux电源管理方案配置如下,.config文件的截图,当然也可以通过makemenuconfig使用图形化来配置:##CPUPowerManagement##CONFIG_CPU_IDLEisnotset##Powermanagemento

3、ptions#CONFIG_PM=y#CONFIG_PM_DEBUGisnotsetCONFIG_PM_SLEEP=yCONFIG_SUSPEND=yCONFIG_SUSPEND_FREEZER=yCONFIG_HAS_WAKELOCK=yCONFIG_HAS_EARLYSUSPEND=yCONFIG_WAKELOCK=yCONFIG_WAKELOCK_STAT=yCONFIG_USER_WAKELOCK=yCONFIG_EARLYSUSPEND=y#CONFIG_NO_USER_SPACE_SCREEN_ACCESS_CONTROLisn

4、otset#CONFIG_CONSOLE_EARLYSUSPENDisnotsetCONFIG_FB_EARLYSUSPEND=y#CONFIG_APM_EMULATIONisnotset#CONFIG_PM_RUNTIMEisnotsetCONFIG_ARCH_SUSPEND_POSSIBLE=yCONFIG_NET=y上面的配置对应下图中的下半部分图形化配置。。。,看来是直接在Kconfig文件中删除了配置STD模式的选项。使用上面的配置编译出来的系统,跑起来之后,进入sys目录可以看到相关的接口:#pwd/sys/power#lsst

5、atewake_lockwake_unlockwait_for_fb_sleepwait_for_fb_wake#catstatemem如果配置了宏CONFIG_PM_DEBUG,那么在power目录下会多出一个pm_test文件,catpm_test后,列出的测试选项有:[none]coreprocessorsplatformdevicesfreezer。关于这个test模式的使用,可以参考kernel文档:/kernel/documentation/power/Basic-pm-debugging.txt这个文档我也有详细的阅读和分析。

6、二、sys/power和相关属性文件创建系统bootup时候在sys下新建power和相关属性文件,相关源码位置:kernel/kernel/power/main.cstaticint__initpm_init(void){interror=pm_start_workqueue();//CONFIG_PM_RUNTIMEnotset,sothisfunisnullif(error)returnerror;power_kobj=kobject_create_and_add("power",NULL);//建立power对应的kobject和s

7、ysfs_dirent对象,同时建立联系:kobject.sd=//&sysfs_dirent,sysfs_dirent.s_dir->kobj=&kobject。if(!power_kobj)return-ENOMEM;returnsysfs_create_group(power_kobj,&attr_group);//建立一组属性文件,可以在power下建立一个子目录来存放这些属性文件,//不过需要在结构体attr_group中指定name,否则直接将这些属性文件放在//power_kobj对应的目录下。}core_initcall(p

8、m_init);//看的出来,该函数是很早就被调用,initcall等级为1staticstructattribute_groupattr_group={.attrs=g,};s

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。