![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
电源管理
文章平均质量分 71
小小小小小小小小熊
497403165@qq.com,欢迎交流
展开
-
一点点读懂regulator(四)
本章节我们主要介绍Regulator Consumer Driver Interface,因为发现把英文翻译成中文,有些词语的含义总是不能准确的表达出来,所以这个章节,还是建议大家直接阅读英文原版,这样可能才会收获更多。Regulator Consumer Driver Interface...原创 2022-04-08 20:34:47 · 372 阅读 · 0 评论 -
一点点读懂regulator(三)
本节我们主要介绍Regulator Machine Driver InterfaceThe regulator machine driver interface用于配置regulator subsystem的board/machine特定初始化代码。Consider the following machine:Regulator-1 -+-> Regulator-2 --> [Consumer A @ 1.8 - 2.0V] | ...原创 2022-04-08 15:32:42 · 565 阅读 · 0 评论 -
一点点读懂regulator(二)
目录1、Registration2、Regulator Events本章我们介绍Regulator Driver Interface相关接口使用。The regulator driver interface相对简单,旨在允许Regulator Driver向核心框架注册其服务。代码实现在regulator/core.c中1、Registration驱动程序可以通过调用以下接口注册调节器:struct regulator_dev *regulator_register(struc原创 2022-04-08 15:14:17 · 503 阅读 · 0 评论 -
一点点读懂regulator(一)
目录1、关于2、命名法2.1 Regulator2.2 PMIC2.3 Consumer2.4 Power Domain2.5 Constraints3、Design3.1 Consumer driver interface3.2 Regulator driver interface3.3 Machine interface3.4 Userspace ABI1、关于此框架旨在提供一个标准内核接口来控制电压和电流调节器。其目的是允许系统动态控制调翻译 2022-04-08 10:04:06 · 5719 阅读 · 0 评论 -
一点点读懂thermal(一)
目录1、thermal简介2、thermal_core分析2.1 zone_device注册相关接口2.1.1 关键结构体2.1.2 接口2.2 Cooling_device注册相关接口2.2.1关键结构体2.2.2 接口2.3 Governors注册相关接口2.4 关于critial事件和非critial事件的处理流程1、thermal简介 thermal模块主要负责温度控制,温度低时想办法升温,温度高时想办法降温,甚至复位系统。Linu...原创 2022-03-29 19:22:43 · 4980 阅读 · 0 评论 -
一点点读懂cpufreq(二)
在Cpufreq中提供了消息通知机制,在调频策略以及频率变化时来通知对该事件敏感的模块,各个模块可以通过注册和去注册接口来加入到通知链中。1、注册接口:/*** cpufreq_register_notifier - Register a notifier with cpufreq.* @nb: notifier function to register.* @list: CPUFREQ_TRANSITION_NOTIFIER or CPUFREQ_POLICY_NOTIFIER...原创 2022-03-25 18:21:12 · 1075 阅读 · 0 评论 -
一点点读懂cpufreq(一)
Linux针对CPU的DVFS,主要在cpufreq中实现,Linux内部共有6种对频率的管理策略userspace,conservative,ondemand,powersave,performance和Interactive1.performance:CPU会固定工作在其支持的最高运行频率上;2.powersave:CPU会固定工作在其支持的最低运行频率上。因此这两种governors都属于静态governor,即在使用它们时CPU的运行频率不会根据系统运行时负载的变化动态作出...原创 2022-03-25 18:14:24 · 3080 阅读 · 0 评论 -
linux电源管理--task freeze
在Linux kernel的睡眠主流程中,有一个关键动作就是冻结进程,为什么要冻结进程?假设没有冻结技术,进程可以在任意可调度的点暂停,而且直到cpu_down才会暂停并迁移。这会给系统带来很多问题:(1)有可能破坏文件系统。在系统创建hibernate image到cpu down之间,如果有进程还在修改文件系统的内容,这将会导致系统恢复之后无法完全恢复文件系统;(2)有可能导致创建hibernation image失败。创建hibernation image需要足够的内存空间,但是在这期间如原创 2022-03-18 20:12:29 · 444 阅读 · 0 评论 -
linux电源管理--psci
PSCI, 是Power State Coordination Interface的缩写,是由ARM定义的电源管理接口规范,通常由Firmware来实现,而Linux系统可以通过smc/hvc指令来进入不同的Exception Level,进而调用对应的实现。在ARMv8架构,引入了Virtualization,Security等概念,CPU boot、shutdown、suspend/resume等操作需要根据架构的演进来满足安全要求。代码目录部署:Arch/arm64/kernel/psci.c原创 2022-02-17 17:26:49 · 2661 阅读 · 0 评论 -
linux电源管理-pm core主流程
全流程涉及的交互时序:suspend流程:唤醒流程:suspend流程的逆流程既是,在此不做过多介绍,后边我们会对全流程的每个组成部分进行拆解介绍原创 2022-02-14 19:37:11 · 1651 阅读 · 0 评论 -
linux电源管理--wakesource
1、框架介绍实现所在文件:drivers\base\power\wakeup.c函数所在文件:include\linux\pm_wakeup.h该文件函数较多,主要实现了wakesource的功能,用于系统判断当前是否有事件阻止睡眠。整套框架基本上是围绕着combined_event_count这个变量在处理逻辑,在此变量中,高16位记录系统所有的wakeup event总数,低16位记录是否有wakeup events在处理中。在每次调用wakeup_source_activate时,wake原创 2021-12-08 19:47:02 · 4885 阅读 · 0 评论 -
linux电源管理--syscore
目录框架位置数据结构及接口原型实现解析使用场景框架位置相关实现在drivers\base\syscore.c中函数声明在include\linux\syscore_ops.h中。依赖宏CONFIG_PM_SLEEP的使能数据结构及接口在头文件中,声明了函数原型以及相关结构体:struct syscore_ops { struct list_head node; int (*suspend)(void); void (*resume)(void); v原创 2021-12-07 19:46:22 · 1578 阅读 · 0 评论 -
linux电源管理
linux电源管理--wakesourcelinux电源管理--autosleeplinux电源管理--task freezelinux电源管理--DPMlinux电源管理--suspendsecondary_cpuslinux电源管理--syscorelinux电源管理--pscilinux电源管理--cpu suspend原创 2021-12-07 19:26:43 · 440 阅读 · 0 评论 -
内核延时函数
1) msleep:实现毫秒级的延时,该延时保证至少延时所设置的延时时间,不会提前超时返回,会让出CPUvoid msleep(unsigned int msecs){ unsigned long timeout = msecs_to_jiffies(msecs) + 1; while (timeout) timeout = schedule_timeout_uninte原创 2015-03-12 23:09:13 · 2742 阅读 · 0 评论 -
wakelock锁
linaro 发布的内核版本中,提供了一套wakelock接口与google的wakelock接口实现了无缝对接,该套接口共有6个;struct wake_lock{ struct wakeup_source ws;};static inline void wake_lock_init(struct wake_lock *lock,int type,const char* name原创 2015-03-14 23:20:53 · 2653 阅读 · 0 评论 -
linux autosleep实现
autosleep.c这个文件代码量总共100行出头,但是其作为Linux低功耗的入口,在linux低功耗流程中却占据着举足轻重的作用。首先,代码一,在初始化函数里,会做两件事情,一件是创建一个wake source ,供本文件其他函数为防止进入低功耗时使用;另一件就是创建一个名字为autosleep的工作队列,用于低功耗work对象附着、调度进入低功耗。代码一:int __init原创 2015-01-10 21:40:49 · 2311 阅读 · 0 评论 -
仿照linux dpm机制,实现自己的dpm
前边我们讨论分析了linux 内核的dpm实现,分析原创 2014-04-15 22:14:37 · 1008 阅读 · 0 评论 -
如何记录并发现异常唤醒系统的中断源
无论是android系统还是VxWorks等实时系统,在开发调试过程中原创 2014-05-06 22:56:03 · 2716 阅读 · 0 评论 -
linux dpm机制分析(下)
1 设备注册到dpm_list路径(Platform_device->device->device_driver指向platform_driver->driver)2 低功耗接口dpm_suspend_start():调用注册到dpm_list的设备的回调函数,执行睡眠前的准备和保存工作;dpm_suspend_end():执行suspend原创 2014-04-14 21:46:35 · 2135 阅读 · 0 评论 -
linux dpm机制分析(上)
1 DPM介绍1.1 Dpm: 设备电源管理,device power management主要功能:系统在对外设下电前,需要做一些准备工作,保存一些设备的必要信息,以便在系统退出低功耗状态时能够恢复这些信息,使本设备在上电后能像睡眠前那样正常工作。驱动程序作为一部分,跟随系统级别的低功耗状态。1.2 系统睡眠模式System Sle原创 2014-04-14 21:44:18 · 4480 阅读 · 0 评论