-
2021-01-17 14:39:23
问题:LINUX中,通过电源管理驱动(自行开发!)调用LINUX内/kernel/power/内的功能函数,实现将系统资源SUSPENDING,后等待外部中断(按鍵或USB等)或定时中断,把系统唤醒。此过程中,出现无法RESUMING的情况。
分析:SUSPENDING过程中,按顺序把资源保存队列中,再调用相应资源的SUSPEND,把资源挂起。挂起中把UART挂起。然后没有调试信息输出。按鍵无法唤醒。办法:逐步找出问题所在!
查找问题:
1,比较和正常的挂起和唤醒的区别。
2,了解挂起和唤醒的全过程
3,把串口SUSPENDING和RESUMING屏蔽。目的是为了找出相应的问题所在!
4,重新调试,发现系统在休眠过程中,关UART后,系统还有其他的资源要挂起。
5,重新调试,发现系统在休眠后,按鍵唤醒过程中,发现了问题出现在RESUMING某个挂起的資源上。而这个资源挂起又在UART后,故无法找到问题。
6,按问题所在,修改该資源的SUSPEND和RESUME!!
7,问题解决!!
*博客内容为网友个人发布,仅代表博主个人观点,如有侵权请联系工作人员删除。
更多相关内容 -
Qt Windows 休眠唤醒信号
2022-01-19 11:56:11Qt Windows 休眠唤醒信号 -
Rockchip 休眠唤醒 开发指南 V0.1-20160729
2017-10-28 15:16:04瑞芯技术 Rockchip 休眠唤醒 V0.1-20160729 -
android 压力测试 dmeo 自动重启 休眠唤醒 DDR wifi/BT
2018-12-20 17:21:18android 压力测试 dmeo 可以测试自动重启 休眠唤醒 DDR wifi/BT 等 -
基于ZigBee的休眠唤醒策略
2020-10-21 11:16:13随着无线电技术的不断发展,无线通信逐步融入到生活中的各个方面,针对功耗来源,对于无线传感器网络节点SoC,可以设计如下的工作状态:正常模式、浅休眠模式、深度休眠模式。本文结合ZigBee技术特点,提出一种休眠... -
SIM7600CE-T休眠唤醒手册
2018-11-21 16:57:58文档详细描述了SIM7600CE-t4G芯片如何进行休眠唤醒应用 -
解决MacOS SierraUSB网卡休眠唤醒后无法使用
2018-07-26 18:14:08解决升级到新版MacOS SierraUSB网卡休眠唤醒后无法使用问题。 -
嵌入式系统/ARM技术中的对WinCE5.0的嵌入式设备休眠唤醒功能的研究
2020-10-21 21:06:11休眠和唤醒功能正是目前WINCW系统开发的研究热点之一。 嵌入式系统应用中降低设备功耗以提高续航能力是其设计的热点[1]。在休眠状态,系统处于最低电流消耗状态,同时仍维持存储区中的内容,为了减少能量消耗和... -
基于S3C2440和Windows CE5.0的嵌入式设备休眠唤醒技术研究
2020-10-25 16:56:31就休眠唤醒技术实现过程中的难点进行了深入研究,并针对S3C2440开发板提出了两种可行的低功耗休眠模式唤醒实现方法:外部中断唤醒和RTC中断唤醒。将这两种方法应用于一款基于S3C2440和WindowsCE 5.0的嵌入式智能巡检... -
定时休眠唤醒代码接口
2014-06-13 11:18:10定时休眠唤醒代码接口,主要用于android定时休眠,唤醒,部分代码片段,以及是实现的文档说明 -
AM410E休眠唤醒功能使用说明__v1.0.pdf
2020-02-25 15:38:194G模组,低功耗,PCIE,CAT1,多通道,精简AT指令,物联网,esim,多模4G模组,低功耗,PCIE,CAT1,多通道,精简AT指令,物联网,esim,多模 -
android休眠与唤醒机制.zip
2019-05-21 10:38:57android休眠与唤醒驱动流程分析 android wakelock 休眠 唤醒 -
电脑休眠唤醒快捷键
2021-06-20 02:41:20设置电脑休眠唤醒快捷键的方法1、在电脑桌面空白处点击右键。2、在新建列表中选择新建快捷方式。3、在键入对象的位置栏中,输入rundll32.exe? powrprof.dll,SetSuspendState Hibernate。创建一个休眠命令。4、把快捷...设置电脑休眠唤醒快捷键的方法
1、在电脑桌面空白处点击右键。
2、在新建列表中选择新建快捷方式。
3、在键入对象的位置栏中,输入rundll32.exe? powrprof.dll,SetSuspendState Hibernate。创建一个休眠命令。
4、把快捷方式的名字改为休眠即可。
设置电脑休眠键的方法
1、打开控制面板,然后选择电源选项。
2、然后点击左边的【选择电源按钮】功能,进入到系统设置界面。
3、点击中间位置的更改当前不可用的设置,然后把休眠选中打【√】。
4、回到桌面点击关机按钮,就可以看到休眠唤醒快捷键了。
电脑休眠是指进入到休眠状态后,电脑会完全停止供电,然后将正在运行的数据保存在硬盘中。进入到休眠状态可以直接切断电脑的电源,电脑需要有一块可以存储当前运行数据的硬盘来存储数据。
如果休眠状态下切断电源,下次开机后卡在蓝屏界面,说明系统文件有丢失或损坏。重新开机的时候按住F8,进入到安全模式,选择最后一次正确配置进入即可。
声明:该文观点仅代表作者本人,天晴滚动网系信息发布平台,仅提供信息存储空间服务。
-
基于MSP430的休眠唤醒装置设计
2020-05-22 04:09:23针对矿用救灾指挥装置网络视频服务器采用电池供电工作时间短的缺点,采用MSP430低功耗单片机设计了一种休眠唤醒装置,实现了网络视频服务器的休眠唤醒功能,延长了网络视频服务器电池的使用时间,使得多次救援、持续作业... -
17.Android休眠唤醒机制简介(一)
2021-06-11 04:35:091、背景介绍:睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的...1、背景介绍:
睡眠/唤醒是嵌入式Linux非常重要的组成部分,因为优秀的睡眠唤醒机制可以是嵌入式设备尽可能的进入休眠状态,来延长电池的续航时间(这在移动终端消费类电子设备中是非常重要和有意义的!!)。但标准的Linux睡眠唤醒机制有其自身的一些缺陷(所有模块必须同时睡下或者唤醒),在某些情况下,这会导致能耗的白白浪费。因此Android在标准Linux睡眠唤醒的机制上作了新的改动(wake_lock唤醒、early_suspend和late_resume机制),从而很好的解决上面的问题。本文将以Android2.3.1版本为例,详细介绍标准Linux睡眠/唤醒是如何工作的, 并且Android中是如何把其自身特有的机制和Linux中标准的联系起来的。
2、标准Linux睡眠唤醒机制简介:
在标准Linux中,休眠主要分三个主要的步骤:(1)冻结用户态进程和内核态任务;(2)调用注册的设备的suspend的回调函数,其调用顺序是按照驱动加载时的注册顺序。(3)休眠核心设备和使CPU进入休眠态冻结进程是内核把进程列表中所有的进程的状态都设置为停止,并且保存下所有进程的上下文。 当这些进程被解冻的时候,它们是不知道自己被冻结过的,只是简单的继续执行。
那么是如何让Linux进入休眠的呢?其实很简单,因为Android和kernel已经做了很多复杂的工作,所以用户只需可以通过读写sys文件/sys /power/state 就可以实现控制系统进入休眠。
比如: #echo mem > /sys/power/state /// 使系统进行睡眠
#echo on > /sys/power/state使系统从睡眠中唤醒过来
当然还有其它的状态操作,在下面的内容中将有介绍。
3、Android睡眠唤醒机制简介:
Android在Linux内核原有的睡眠唤醒模块上基础上,主要增加了下面三个机制:
Wake _Lock 唤醒锁机制;
Early _Suspend 预挂起机制;
Late _Resume 迟唤醒机制;
其基本原理如下:当启动一个应用程序的时候,它都可以申请一个wake_lock唤醒锁,每当申请成功之后都会在内核中注册一下(通知系统内核,现在已经有锁被申请),当应用程序在某种情况下释放wake_lock的时候,会注销之前所申请的wake_lock。特别要注意的是:只要是系统中有一个wake_lock的时候,系统此时都不能进行睡眠。但此时各个模块可以进行early_suspend。当系统中所有的wake_lock都被释放之后,系统就会进入真正的kernel的睡眠状态。在系统启动的时候会创建一个主唤醒锁main_wake_lock,该锁是内核初始化并持有的一个WAKE_LOCK_SUSPEND属性的非限时唤醒锁。因此,系统正常工作时,将始终因为该锁被内核持有而无法进入睡眠状态。也就是说在不添加新锁的情况下,只需将main_wake_lock 解锁,系统即可进入睡眠状态。
下面是Android睡眠唤醒模块框架
主要涉及到的目录文件:
android/frameworks/base/core/java/android/os/PowerManager.java
android/frameworks/base/services/java/com/android/server/PowerManagerService.java
android/frameworks/base/core/java/android/os/ Power.java
android/frameworks/base/core/jni/android_os_Power.cpp
android/hardware/libhardware_legacy/power/power.c
android/kernel/kernel/power/main.c
android/kernel/kernel/power/earlysuspend.c
android/kernel/kernel/power/suspend.c
android/kernel/kernel/power/wakelock.c
android/kernel/kernel/power/userwakelock.c
在应用程序框架层中,PowerManager类是面向上层应用程序的接口类,提供了Wake Lock机制(同时也是睡眠唤醒子系统)的基本接口(唤醒锁的获取和释放)。上层应用程序通过调用这些接口,实现对系统电源状态的监控。PowerManager类通过IBinder这种Android中特有的通信模式,与PowerManagerService 类进行通信。PowerManagerService 是PowerManager 类中定义的接口的具体实现,并进一步调用Power 类来与下一层进行通信。PowerManagerService 类是WakeLock 机制在应用程序框架层的核心,他们对应用程调用PowerManager类接口时所传递的参数进行初步的分析和对应的设置,并管理一个唤醒锁队列,然后配合其他模块(例如WatchDog、BatteryService、ShutdownThread 等)的状态信息,做出决策,调用Power类的对应接口,最终通过JNI 接口,调用到硬件抽象层中的函数,对sysfs 的用户接口进行操作,从而触发内核态实现的用。
PowerManager.java:提供上层应用程序的接口;
PowerManagerService.java:具体实现PowerManager类中的接口;
Power.java:被PowerManagerService类调用;
android_os_Power.cpp:实现Power类中的JNI接口;
power.c:进行sysfs用户接口的操作。
其余涉及到的都是内核kernel中的文件,它们的作用将在后续给予介绍。
-
Rockchip平台休眠唤醒慢问题排查方法
2022-03-01 21:32:10 -
对WinCE5.0的嵌入式设备休眠唤醒功能的研究
2021-01-19 17:56:16休眠和唤醒功能正是目前WINCW系统开发的研究热点之一。 嵌入式系统应用中降低设备功耗以提高续航能力是其设计的热点[1]。在休眠状态,系统处于电流消耗状态,同时仍维持存储区中的内容,为了减少能量消耗和延长... -
矿井应急救援指挥通信装置的休眠唤醒功能实现探讨
2020-05-26 01:51:27针对现有矿井应急救援通信指挥装置电池供电的局限,提出了休眠唤醒功能设计方案;在装置闲置时,可以在井下基地(或者地面指挥中心)对救援通信终端进行休眠操作,也可以远程唤醒装置,监测现场的图像、语音和环境数据;休眠... -
电脑休眠唤醒后无法使用USB键盘如何解决,教您解决电脑休眠唤醒后无法使用U
2021-07-05 10:03:32电脑的奇特的现象有很多,给我们带来了很多小麻烦,而最近又有用户发现一些情况:电脑休眠唤醒后无法使用USB键盘,需要重新拔插后才可恢复正常。那么如何去操作才能够给电脑真正解决电脑休眠唤醒后无法使用USB键盘呢... -
电脑休眠唤醒后无法使用USB键盘如何解决,小编教你解决电脑休眠唤醒后无法使用USB键盘
2021-07-11 02:25:24为此,小编就给大家带来了解决电脑休眠唤醒后无法使用USB键盘的操作教程。很多的电脑用户都会让自己的电脑进入休眠模式的情况,因为,这样在下次打开时,就会直接恢复到上一次的工作状态使得不花费时间,但是这样也... -
android 休眠和唤醒
2017-11-01 14:44:49利用PowerManager中 goToSleep和wakeUp方法实现手机强制休眠和唤醒,demo已测试通过 -
嵌入式系统休眠唤醒自动运行程序的方法设计
2020-07-30 08:49:09本文运用一种新方法,实现了基于休眠的嵌入式操作系统启动后,可自动运行任何形式的目标脚本和应用程序。 -
1.11.3、低功耗-休眠唤醒基本概念
2021-09-23 11:14:50一、休眠唤醒基本概念PM相关的代码路径如下: .linux_soruce/kernel/power/main.c . linux_soruce/kernel/power/suspend.c .linux_source/driver/base/power/main.c 可以看到linux中,休眠主要分为以下三个主要... -
嵌入式系统休眠唤醒自动运行程序的方法设计-嵌入式系统-与非网
2021-05-15 06:59:08为了提高系统的启动速度,通常采用基于休眠技术的方式来实现嵌入式系统的快速启动[1]。例如,在一些数字电视中,采用休眠技术以后的启动时间要比原来的启动时间约快1/3[2]。但基于休眠技术的启动方法有其不足之处:... -
Android休眠唤醒和wakeup_source机制的使用(1)
2021-06-02 19:32:20首先看看休眠唤醒过程的内核打印信息:由于信息太多,只贴内核信息。Android的log这里没贴出来。 add device 7: /dev/input/event0 /dev/input/event0: 0001 0074 00000001 /dev/input/event0: 0000 0000 00000000 /... -
iTop-4412实现一键开关机休眠唤醒.zip
2021-03-13 00:05:09iTop-4412实现一键开关机休眠唤醒 -
rk3399【休眠唤醒】调试笔记(一)
2021-05-22 17:10:47各个平台基本上都实现了自己额休眠唤醒功能,接下来记录一下自己的调试过程 分析之前,肯定先要了解一下内核 的suspend 机制 发现绝大部分都是参考: Linux电源管理(6)_Generic PM之Suspend功能. 了解了一些背景知识... -
Android消息推送关键技术之休眠唤醒
2021-06-07 13:01:43为了节省电量,Android系统在一段时间不操作后,会进入休眠状态,Android6.0之后更是引入了Doze和Standby两种省电模式,达到进一步省电的目的。在这些省电模式下,会挂起一些设备的电源,限制网络访问和一些其它的... -
Linux Power休眠唤醒流程-框架图
2019-11-02 17:46:26休眠唤醒的内容讲解 1. PMS整体框架 2.kernel层suspend/resume结构图 3.linux内核中休眠唤醒的流程图 4.idle进程中调用cpuidle休眠过程 附件: 图一:PowerManagerService框架 图二:kernel层suspend/... -
基于休眠唤醒策略的无线照明节能机制
2020-08-05 03:37:37本文结合ZigBee技术特点,提出一种休眠节能策略,使无线设备在不执行任何操作的情况下进入极低功耗的状态,提高能源的利用率。