作者简介
李晓杰
SoC低功耗领域
专家,曾就职于
华为海思,现为
国内某头部手机
厂商的高级软件研发工程师。在
底层软件领域工作10余年。工作内容涉及驱动开发、低功耗、性能优化、系统稳定性等多个领域,相关工作支撑各类终端产品累计数亿级发货总量,拥有丰富的研发和交付经验。
曾参与世界首款单芯片多模5G基带芯片相关软件研发工作,以及其他多款世界领先的通信和终端芯片底层软件研发和交付工作。参与研发的部分产品被中国国家博物馆收藏,见证了相关产业从起步到巅峰的完整过程。
目录
Contents 目 录<br />前言<br />第1章 低功耗系统设计思路1<br />1.1 低功耗系统设计面临的挑战1<br />1.2 降低功耗的3种主要设计思路2<br />1.3 低功耗系统的架构设计3<br />1.4 术语介绍6<br />1.5 本章小结8<br />第2章 wakeup source 框架设计与实现9<br />2.1 Linux wakeup source的设计与实现9<br />2.1.1 架构设计概览9<br />2.1.2 模块功能详解9<br />2.1.3 配置信息解析10<br />2.1.4 主要数据结构10<br />2.1.5 主要函数分析12<br />2.1.6 函数工作时序17<br />2.2 实现自己的wakeup source 框架18<br />2.2.1 动手前的思考18<br />2.2.2 设计与实现19<br />2.3 本章小结22<br />第3章 autosleep 框架设计与实现23<br />3.1 Linux autosleep的设计与实现23<br />3.1.1 架构设计概览23<br />3.1.2 模块功能详解23<br />3.1.3 配置信息解析24<br />3.1.4 主要函数实现24<br />3.1.5 函数工作时序27<br />3.2 实现自己的autosleep 框架28<br />3.2.1 动手前的思考28<br />3.2.2 设计与实现29<br />3.3 本章小结30<br />第4章 PM Core框架设计与实现31<br />4.1 Linux PM Core的设计与实现31<br />4.1.1 架构设计概览31<br />4.1.2 模块功能详解31<br />4.1.3 配置信息解析32<br />4.1.4 主要数据结构32<br />4.1.5 主要函数实现35<br />4.1.6 软件处理流程41<br />4.2 实现自己的PM Core 框架43<br />4.2.1 动手前的思考43<br />4.2.2 运行时序设计44<br />4.2.3 设计与实现44<br />4.3 本章小结47<br />第5章 notifier 框架设计与实现48<br />5.1 Linux notifier的设计与实现48<br />5.1.1 架构设计概览48<br />5.1.2 模块功能详解48<br />5.1.3 配置信息解析49<br />5.1.4 主要数据结构49<br />5.1.5 主要接口介绍50<br />5.1.6 内核使用场景54<br />5.2 实现自己的notifier 框架57<br />5.2.1 动手前的思考57<br />5.2.2 设计与实现57<br />5.3 本章小结59<br />第6章 DPM 框架设计与实现60<br />6.1 Linux DPM的设计与实现60<br />6.1.1 架构设计概览60<br />6.1.2 模块功能详解60<br />6.1.3 配置信息解析61<br />6.1.4 主要数据结构61<br />6.1.5 主要函数介绍63<br />6.1.6 函数工作时序67<br />6.2 实现自己的DPM框架75<br />6.2.1 动手前的思考75<br />6.2.2 设计与实现75<br />6.3 补充说明79<br />6.4 本章小结81<br />第7章 syscore 框架设计与实现82<br />7.1 Linux syscore的设计与实现82<br />7.1.1 架构设计概览82<br />7.1.2 模块功能详解82<br />7.1.3 配置信息解析82<br />7.1.4 主要结构体介绍83<br />7.1.5 主要函数介绍84<br />7.2 实现自己的syscore 框架87<br />7.2.1 动手前的思考88<br />7.2.2 设计与实现88<br />7.3 本章小结90<br />第8章 RPM框架设计与实现91<br />8.1 Linux RPM的设计与实现91<br />8.1.1 架构设计概览91<br />8.1.2 模块功能详解91<br />8.1.3 RPM与system sleep的关系94<br />8.1.4 No-Callback设备解析95<br />8.1.5 autosuspend与automatically-<br /> delayed suspends分析95<br />8.1.6 配置信息解析96<br />8.1.7 主要结构体介绍96<br />8.1.8 主要函数介绍99<br />8.1.9 RPM与PM Core工作时间段<br /> 对比108<br />8.1.10 RPM的函数工作时序108<br />8.2 实现自己的RPM 框架112<br />8.2.1 动手前的思考112<br />8.2.2 设计与实现112<br />8.2.3 实现进阶第一步114<br />8.2.4 实现进阶第二步116<br />8.2.5 实现进阶第三步118<br />8.3 本章小结120<br />第9章 thermal框架设计与实现121<br />9.1 Linux thermal的设计与实现121<br />9.1.1 架构设计概览121<br />9.1.2 模块功能详解121<br />9.1.3 基本术语概念123<br />9.1.4 配置信息解析123<br />9.1.5 thermal_core解析123<br />9.1.6 关于critical事件和非critical<br /> 事件的处理流程133<br />9.1.7 governor实现介绍134<br />9.2 实现自己的thermal框架135<br />9.2.1 动手前的思考136<br />9.2.2 设计与实现136<br />9.3 本章小结143<br />第10章 CPU Hotplug框架设计<br /> 与实现144<br />10.1 Linux CPU Hotplug的设计与实现144<br />10.1.1 架构设计概览144<br />10.1.2 模块功能详解144<br />10.1.3 配置信息解析145<br />10.1.4 主要数据结构介绍146<br />10.1.5 如何使用CPU Hotplug148<br />10.1.6 CPU Hotplug?状态机149<br />10.1.7 CPU online/offline运行流程<br /> 示意150<br />10.1.8 state申请及使用152<br />10.1.9 CPU Hotplug工作时序153<br />10.2 实现自己的Hotplug 框架157<br />10.2.1 动手前的思考157<br />10.2.2 设计与实现157<br />10.3 本章小结160<br />第11章 CPUIdle 框架设计与实现161<br />11.1 Linux CPUIdle的设计与实现161<br />11.1.1 架构设计概览161<br />11.1.2 背景介绍161<br />11.1.3 配置信息解析162<br />11.1.4 设计与实现163<br />11.2 实现自己的CPUIdle 框架170<br />11.2.1 动手前的思考170<br />11.2.2 设计与实现171<br />11.3 本章小结174<br />第12章 CLK框架设计与实现175<br />12.1 Linux CLK的设计与实现175<br />12.1.1 架构设计概览175<br />12.1.2 背景介绍175<br />12.1.3 配置信息解析176<br />12.1.4 主要数据类型177<br />12.1.5 主要函数实现180<br />12.2 实现自己的CLK框架187<br />12.2.1 动手前的思考188<br />12.2.2 设计与实现188<br />12.3 本章小结192<br />第13章 DVFS框架设计与实现193<br />13.1 Linux cpufreq的设计与实现193<br />13.1.1 架构设计概览193<br />13.1.2 模块功能详解193<br />13.1.3 配置信息解析194<br />13.1.4 主要数据类型195<br />13.1.5 主要函数实现199<br />13.2 实现自己的DVFS框架205<br />13.2.1 动手前的思考205<br />13.2.2 设计与实现205<br />13.3 本章小结208<br />第14章 regulator框架设计与实现209<br />14.1 Linux regulator的设计与实现209<br />14.1.1 架构设计概览209<br />14.1.2 背景介绍209<br />14.1.3 配置信息解析210<br />14.1.4 主要模块功能211<br />14.1.5 主要函数实现215<br />14.2 实现自己的regulator框架228<br />14.2.1 动手前的思考228<br />14.2.2 设计与实现228<br />14.3 本章小结231<br />第15章 AVS框架设计与实现232<br />15.1 背景及原理233<br />15.2 AVS设计与实现234<br />15.2.1 AVS实现234<br />15.2.2 AVS接口236<br />15.2.3 AVS使用237<br />15.3 本章小结238<br />第16章 PSCI框架设计与实现239<br />16.1 背景介绍240<br />16.1.1 空闲管理240<br />16.1.2 热插拔240<br />16.2 假设和建议241<br />16.2.1 PSCI目的241<br />16.2.2 异常级别、ARMv7权限级别<br /> 和优选权限241<br />16.2.3 基于ARM系统的软件栈242<br />16.2.4 安全世界软件和电源管理243<br />16.3 PSCI使用场景及要求244<br />16.3.1 空闲管理244<br />16.3.2 电源状态系统拓扑与协作244<br />16.3.3 CPU热插拔和从核启动246<br />16.3.4 系统关闭、系统复位和<br /> 系统挂起247<br />16.4 函数功能解析248<br />16.4.1 PSCI中的参数和返回值248<br />16.4.2 PSCI_VERSION函数249<br />16.4.3 CPU_SUSPEND函数249<br />16.4.4 CPU_OFF函数253<br />16.4.5 CPU_ON函数255<br />16.4.6 AFFINITY_INFO函数256<br />16.4.7 MIGRATE函数258<br />16.4.8 MIGRATE_INFO_TYPE/MIG-<br /> RATE_INFO_UP_CPU函数259<br />16.4.9 SYSTEM_OFF函数260<br />16.4.10 SYSTEM_RESET函数261<br />16.4.11 PSCI_FEATURES函数261<br />16.4.12 SYSTEM_SUSPEND函数262<br />16.5 PSCI调用流程263<br />16.5.1 CPU_SUSPEND、SYSTEM_<br /> SUSPEND调用流程263<br />16.5.2 CPU_OFF调用流程264<br />16.5.3 CPU_ON调用流程265<br />16.6 核状态的操作系统和实现视图266&
以下为对购买帮助不大的评价