IMX8休眠唤醒

2024-04-24 18:58
文章标签 唤醒 休眠 imx8

本文主要是介绍IMX8休眠唤醒,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

电源状态:

root@OpenWrt:/# cat /sys/power/state 
freeze mem

设置调试串口唤醒源

root@OpenWrt:/# echo enabled > /sys/class/tty/ttymxc1/power/wakeup	【12V 210MA】

设置休眠:M4也会被休眠

root@OpenWrt:/# echo mem > /sys/power/state 	【12V 58mA】
[  739.503091] PM: suspend entry (deep)
[  739.508249] PM: Syncing filesystems ... done.
[  739.513189] Freezing user space processes ... (elapsed 0.001 seconds) done.
[  739.521337] OOM killer disabled.
[  739.524578] Freezing remaining freezable tasks ... (elapsed 0.379 seconds) done.
[  739.911532] Suspending conzsole(s) (use no_console_suspend to debug)root@OpenWrt:/# echo mem > /sys/power/state 
[  273.782435] PM: suspend entry (deep)
[  273.786085] PM: Syncing filesystems ... done.
[  273.791414] Freezing user space processes ... (elapsed 0.001 seconds) done.
[  273.800408] OOM killer disabled.
[  273.803640] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[  273.812246] Suspending console(s) (use no_console_suspend to debug)

串口回车唤醒: 

[  273.952998] PM: suspend devices took 0.136 seconds
[  273.958099] Disabling non-boot CPUs ...
[  273.972436] CPU1: shutdown
[  273.991712] psci: Retrying again to check for CPU kill
[  273.991716] psci: CPU1 killed.
[  274.016351] CPU2: shutdown
[  274.035711] psci: Retrying again to check for CPU kill
[  274.035715] psci: CPU2 killed.
[  274.052287] CPU3: shutdown
[  274.071706] psci: Retrying again to check for CPU kill
[  274.071710] psci: CPU3 killed.
[  274.073794] Enabling non-boot CPUs ...
[  274.074211] Detected VIPT I-cache on CPU1
[  274.074238] GICv3: CPU1: found redistributor 1 region 0:0x0000000051b20000
[  274.074276] CPU1: Booted secondary processor [410fd042]
[  274.074759]  cache: parent cpu1 should not be sleeping
[  274.074962] CPU1 is up
[  274.075306] Detected VIPT I-cache on CPU2
[  274.075324] GICv3: CPU2: found redistributor 2 region 0:0x0000000051b40000
[  274.075344] CPU2: Booted secondary processor [410fd042]
[  274.075632]  cache: parent cpu2 should not be sleeping
[  274.075846] CPU2 is up
[  274.076189] Detected VIPT I-cache on CPU3
[  274.076207] GICv3: CPU3: found redistributor 3 region 0:0x0000000051b60000
[  274.076228] CPU3: Booted secondary processor [410fd042]
[  274.076528]  cache: parent cpu3 should not be sleeping
[  274.076729] CPU3 is up
[  274.115719] PM: resume devices took 0.020 seconds
[  274.117705] imx-lpi2c 37230000.i2c: can't get irq number
[  274.120557] OOM killer enabled.
[  274.245039] Restarting tasks ... done.
[  274.249687] PM: suspend exit

M4不会被休眠,但过一段时间会重启,为何?

root@OpenWrt:/# echo freeze > /sys/power/state 	【12V 124mA】
[ 8330.945402] PM: suspend entry (s2idle)
[ 8330.949255] PM: Syncing filesystems ... done.
[ 8330.954073] Freezing user space processes ... (elapsed 0.001 seconds) done.
[ 8330.962238] OOM killer disabled.
[ 8330.965465] Freezing remaining freezable tasks ... (elapsed 0.423 seconds) done.
[ 8331.396049] Suspending console(s) (use no_console_suspend to debug)root@OpenWrt:/#  echo freeze > /sys/power/state
[  380.385262] PM: suspend entry (s2idle)
[  380.389094] PM: Syncing filesystems ... done.
[  380.394123] Freezing user space processes ... (elapsed 0.001 seconds) done.
[  380.403106] OOM killer disabled.
[  380.406348] Freezing remaining freezable tasks ... (elapsed 0.001 seconds) done.
[  380.414946] Suspending console(s) (use no_console_suspend to debug)
[  380.433761] PM: suspend devices took 0.012 seconds
[  384.616786] imx-lpi2c 37230000.i2c: can't get irq number
[  384.618081] PM: resume devices took 0.020 seconds
[  384.633008] OOM killer enabled.
[  384.636159] Restarting tasks ... done.
[  384.642229] PM: suspend exit

suspend entry打印位置:./kernel/power/suspend.c +606

电源通用控制GPC:《IMX8MMRM.PDF》5.2 General Power Controller (GPC)

模式:

RUN mode
Low power modeWAIT modeSTOP mod
Deep Sleep Mode

流程:

LPM Sleep Process
LPM Wake Up ProcessExample Code

这篇关于IMX8休眠唤醒的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/932565

相关文章

java 注意线程下的 异常捕获,会跳过sleep(10000)休眠,可能会出现死循环

线程 (1)在catch(){} 中的语句要保证不会出现异常,或者catch中的语句再次捕获了异常,    (2) 线程中try中的语句出现异常,会直接跳过try中的sleep,导致不停地循环   (3)线程的while循环中如果不适用try catch 会导致当出现异常时,线程直接挂掉, package com.hlzt.wx.thread;import java.util.Date

【C#编程技术总结】魔法包唤醒同一局域网设备

目录 一、原理 Wake-on-LAN (WOL) 的工作原理 典型应用场景 配置要求 注意事项 二、代码 一、原理 魔术包(Magic Packet)是Wake-on-LAN(WOL)技术的一部分,它允许远程唤醒网络设备,如计算机或服务器。这个功能通常用于节能和远程管理,当设备处于待机或休眠状态时,可以通过网络将其唤醒,而无需物理操作。 Wake-on-LAN (WOL

随时随地远程启动家里设备,极空间部署一键网络唤醒工具『UpSnap』

随时随地远程启动家里设备,极空间部署一键网络唤醒工具『UpSnap』 哈喽小伙伴们好,我是Stark-C~ 现在信息社会,大家家里的网络设备一定都不会少吧~。不知道大家都知不知道,其实很多网络设备,比如大家常用的台式机,笔记本,打印机,以及和我一样使用的NAS,甚至是一些智能电视和媒体播放器等,很多设备都具备网络唤醒功能。 网络唤醒: 网络唤醒(Wake-on-LAN,简称WOL)是一种网

条件变量:为什么要与互斥锁配套使用?为什么要使用while来避免虚假唤醒?

首先关于条件变量的引入: 假想在这样的情况下,多个线程需要等待某个条件才能继续工作(如生产者消费者模型中,消费者需要等待流水线上有产品后才能消费),如果只使用互拆锁,则多个线程要不停的查询流水线是否为空这个状态,并且查询这个操作需要加入临界区,因为流水线不仅同时有多个消费者,还有生产者在生产,不加锁的话可能出现两个甚至多个消费者对同一个产品动手的情况。这种不停查询的操作是很蠢的,因此引入了条件变

touch的双击唤醒如何实现

现在很多手机具有双击唤醒屏幕功能,那么这个功能是如何实现的呢,在ft5x06这款touchscreen上的实现方式如下 首先在touch的driver里会针对屏幕关闭时做特殊处理 在static irqreturn_t ftxxxx_ts_interrupt(int irq, void *dev_id) { u8 state;        i2c_smbus_read_i2c_

解决android系统唤醒时间偏长------healthd里的epoll以及socket

在healthd中,有一个很好的例子,特地截取下来作为参考: 首先是 static int uevent_fd; static int eventct; static int epollfd; int uevent_open_socket(int buf_sz, bool passcred) {     struct sockaddr_nl addr;     int on = pas

解决android系统唤醒时间偏长------healthd里的一些调用

目前定位到healthd的调用过程耗时太长,于是去看看power相关的一些东西 healthd里一共调用了如下的节点获取数据 openat(AT_FDCWD, "/sys/class/power_supply/battery/present", 1    ******* openat(AT_FDCWD, "/sys/class/power_supply/battery/capacity",10

解决android系统唤醒时间偏长------如何在android的linux kernel中获取系统时间

如果想要优化一些唤醒系统的时间,就必须知道某段程序花了多少时间,今天我就找到了一些获取时间的函数以及应用 struct timespec ts; ts=current_kernel_time();  tv_nsecold=ts.tv_nsec;  printk("matt-psy-name=%s\n",psy->name); current_kernel_time这个函数在kernel/t

解决android系统唤醒时间偏长------看log找可疑的地方

最近发现我们的手机的双击唤醒时间偏长,那么就需要去看是什么导致的。于是首先看唤醒的log [  252.830937] [ASDF] enter do_write_event_worker      //这个是打印log的service [  252.838638] [SENSOR] : inv_ak09911_pm_suspend [  252.838647] CM32683:  CM3

为什么中断上下文不可以休眠

不了解2.6,但是在2.4中,中断“不能”睡眠。如果你非要在中断中睡眠,则有可能造成各种各样的问题,也可能什么事也没有。这个问题讨论了很多次,你可以在论坛中搜索“睡眠”关键字。  我这里再多说一些自己的理解:  2.4内核是非抢占式的,除非自己原意,一个进程进入内核态后不会被意外替换为另一个进程。大家都默认这样的规则,很多内核函数就可以简化设计。“在中断中睡眠”打破了这一假定,因此可能会引起不