首页>参考读物>公共基础课>心理生活

SoC底层软件低功耗系统设计与实现
作者 : 李晓杰 著
出版日期 : 2023-06-12
ISBN : 978-7-111-72814-6
定价 : 109.00元
扩展资源下载
扩展信息
语种 : 简体中文
页数 :
开本 : 16
原书名 :
原出版社:
属性分类: 店面
包含CD : 无CD
绝版 : 未绝版
图书简介

这是一本系统剖析SoC底层软件低功耗系统设计、实现与定制化的著作,同时它还全面讲解了低功耗的知识点以及各种低功耗问题的定位与优化。
作者在华为海思等半导体企业深耕低功耗领域10余年,本书内容基于作者的实际商用经验撰写而成,读完本书后,我们至少能掌握以下知识:
(1)Linux内核中所有与低功耗相关的17个模块的设计与实现原理,以及这些模块的自定义实现和二次开发,这部分内容能让读者对低功耗相关的问题知其然并知其所以然。
(2)Linux内核中关于低功耗的设计思想,既同时适用于宏内核、微内核和精简内核,又可以给其他的操作系统提供思路和启发。
(3)低功耗的20余个扩展知识点,让读者对低功耗有更全面、更深入地了解。
(4)各种低功耗问题的定位方法和通用优化手段。

图书特色

作者简介
李晓杰
SoC低功耗领域专家,曾就职于华为海思,现为国内某头部手机厂商的高级软件研发工程师。在底层软件领域工作10余年。工作内容涉及驱动开发、低功耗、性能优化、系统稳定性等多个领域,相关工作支撑各类终端产品累计数亿级发货总量,拥有丰富的研发和交付经验。
曾参与世界首款单芯片多模5G基带芯片相关软件研发工作,以及其他多款世界领先的通信和终端芯片底层软件研发和交付工作。参与研发的部分产品被中国国家博物馆收藏,见证了相关产业从起步到巅峰的完整过程。

上架指导

计算机\程序设计

封底文字

芯片是人类智慧的工程结晶,底层软件则是连接芯片与业务的桥梁。底层软件中的低功耗特性是一个极为重要的子特性,经常出现在大家的视野里,几乎每个芯片厂商或者终端厂商都无法忽略,是其核心业务模块。作者在本书中分享了自己多年的研发经验,相关内容同时适用于宏内核、微内核及精简内核,能够帮助读者举一反三,有所收获。
 ——孟庆洋 博士/谦川科技创始人

随着技术的发展,各手机厂商及芯片设计厂商的低功耗特性做得越来越出色,续航时间也越来越长,所有这些都离不开底层软件低功耗特性的完美支撑。本书作为底层软件低功耗领域的第一本书,对Linux内核低功耗源码做了比较详细的剖析,同时借鉴其设计思想实现了定制化的低功耗功能,可以应用到其他操作系统中,为个人、企业提供新的思路和启发。
——李国洪 百度前主任架构师/多模搜索策略负责人

低功耗几乎是每一家终端产品厂商及嵌入式系统厂商追求的目标,对低功耗的追求和优化是无止境的,同时也是各家公司重点投入研发资源的领域。这个特性本身并不简单,尤其是商用后会遇到各类各样的疑难杂症,需要有经验的工程师来解决问题。本书除了阐述低功耗的实现原理之外,还从实战角度给出了问题定位和性能优化的通用方法,可以说是一本充满干货的图书。
——杨天光 北京微分航宇科技有限公司创始人兼董事长

本书是一本介绍底层软件低功耗特性的图书,由浅入深地介绍了低功耗的概念、功能实现原理、案例等内容。针对低功耗领域的初学者,本书从数据结构设计、函数设计等多个维度全面阐述了低功耗框架的设计思想,包括对DPM、Running PM等子模块的剖析,可以帮助你快速了解该特性的实现及组织结构;针对低功耗领域的高级从业者及RTOS等非Linux的从业者,本书可以为你提供不同的低功耗优化和实现视角。
——张成远 京东云高级总监/专家架构师

作者简介

李晓杰 著:李晓杰
SoC低功耗领域专家,曾就职于华为海思,现为国内某头部手机厂商的高级软件研发工程师。在底层软件领域工作10余年。工作内容涉及驱动开发、低功耗、性能优化、系统稳定性等多个领域,相关工作支撑各类终端产品累计近十亿级发货总量,拥有丰富的研发和交付经验。
曾参与世界首款单芯片多模5G基带芯片相关软件研发工作,以及其他多款世界领先的通信和终端芯片底层软件研发和交付工作。参与研发的部分产品被中国国家博物馆收藏,见证了相关产业从起步到巅峰的完整过程。

图书目录

前言 6
第1章 低功耗系统设计思路 8
1.1 低功耗系统设计的挑战 8
1.2 降低功耗的3种设计思路 9
1.2.1 升级生产工艺 9
1.2.2 降低工作电压/频率 9
1.2.3 多电源域设计 9
1.3 低功耗系统的架构设计 10
1.4 术语介绍 13
第2章 Wakeup Source Framework的设计与实现 18
2.1 Linux Wakeup Source的设计与实现 18
2.1.1 架构设计概览 18
2.1.2?模块功能详解 20
2.1.3?配置信息解析 20
2.1.4?主要结构体/变量介绍 21
2.1.5?主要函数分析 23
2.1.6?函数工作时序 30
2.2?实现自己的Wakeup Source Framework 32
2.2.1?动手前的思考 32
2.2.2?设计与实现 33
2.3?本章小结 36
第3章 Autosleep Framework的设计与实现 37
3.1 Linux Autosleep的设计与实现 37
3.1.1 架构设计概览 37
3.1.2?模块功能详解 38
3.1.3?配置信息解析 38
3.1.4?主要函数实现 39
3.1.5?函数工作时序 43
3.2实现自己的Autosleep Framework 45
3.2.1?动手前的思考 45
3.2.2?设计与实现 46
3.3?本章小结 48
第4章 PM Core Framework设计与实现 49
4.1 Linux PM Core的设计与实现 49
4.1.1 架构设计概览 49
4.1.2?模块功能详解 49
4.1.3?配置信息解析 50
4.1.4主要结构体/变量介绍 50
4.1.5主要函数实现 54
4.1.6?补充说明 63
4.1.7软件处理流程 64
4.2实现自己的PM Core Framework 66
4.2.1动手前的思考 66
4.2.2运行时序设计 67
4.2.3设计与实现 69
4.3?本章小结 72
第5章 Notifier Framework设计与实现 74
5.1 Linux Notifier设计与实现 74
5.1.1 架构设计概览 75
5.1.2模块功能详解 75
5.1.3配置信息解析 75
5.1.4主要结构体介绍 76
5.1.5主要接口介绍 77
5.1.6?内核使用场景 84
5.2 实现自己的Notifier Framework 90
5.2.1动手前的思考 90
5.2.2?设计与实现 90
5.3?本章小结 92
第6章 Device Power Management Framework的设计与实现 93
6.1 Linux Device Power Management的设计与实现 93
6.1.1 架构设计概览 93
6.1.2?模块功能 94
6.1.3?配置信息 94
6.1.4?主要结构体/变量介绍 94
6.1.5?主要函数介绍 97
6.1.6?函数工作时序 104
6.2?实现自己的Device Power Management Framework 114
6.2.1动手前的思考 114
6.2.2设计与实现 114
6.3?补充说明 119
6.4?本章小结 122
第7章 Syscore Framework的设计与实现 123
7.1 Linux Syscore的设计与实现 123
7.1.1 架构设计概览 123
7.1.2 模块功能详解 123
7.1.3 配置信息解析 124
7.1.4 主要结构体介绍 124
7.1.5 主要接口介绍 125
7.2?实现自己的Syscore Framework 130
7.2.1?动手前的思考 131
7.2.2?设计与实现 131
7.3?本章小结 134
第8章 Runtime PM Framework的设计与实现 135
8.1 Linux Runtime PM的设计与实现 135
8.1.1 架构设计概览 135
8.1.2?模块功能详解 136
8.1.3 Runtime PM?和?system sleep的关系 139
8.1.4 “No-Callback”设备解析 141
8.1.5 Autosuspend和automatically-delayed suspends分析 141
8.1.6?配置信息解析 142
8.1.7?主要结构体介绍 143
8.1.8主要函数介绍 146
8.1.9 Runtime PM与PM Core工作时间段 162
8.1.10 Runtime PM的函数工作时序 162
8.2?实现自己的Runtime PM Framework 167
8.2.1动手前的思考 167
8.2.2?设计与实现 168
8.2.3?实现进阶-1 170
8.2.4?实现进阶-2 172
8.2.5?实现进阶-3 175
8.3?本章小结 178
第9章 Thermal Framework的设计与实现 180
9.1 Linux Thermal设计与实现 180
9.1.1 架构设计概览 180
9.1.2?模块功能详解 181
9.1.3?基本术语概念 182
9.1.4?配置信息解析 183
9.1.5 thermal_core解析 183
9.1.6?关于critical事件和非critical事件的处理流程 195
9.1.7 Governor实现介绍 196
9.2?实现自己的Thermal Framework 198
9.2.1?动手前的思考 198
9.2.2?设计与实现 199
9.3?本章小结 207
第10章 CPU Hotplug Framework的设计与实现 208
10.1 Linux CPU Hotplug的设计与实现 208
10.1.1 架构设计概览 208
10.1.2?模块功能详解 209
10.1.3?配置信息解析 210
10.1.4主要数据结构介绍 211
10.1.5 如何使用CPU hotplug 214
10.1.6 CPU hotplug?状态机 216
10.1.7 CPU online/offline运行流程示意 218
10.1.8 state申请及使用 221
10.1.9 CPU Hotplug工作时序 223
10.2实现自己的Hotplug Framework 228
10.2.1?动手前的思考 228
10.2.2?设计与实现 229
10.3?本章小结 232
第11章 CPU Idle Framework的设计与实现 233
11.1 Linux CPU Idle设计与实现 233
11.1.1 架构设计概览 233
11.1.2 背景介绍 233
11.1.3?配置信息 234
11.1.4?设计与实现 237
11.2?实现自己的CPU Idle Framework 247
11.2.1动手前的思考 247
11.2.2设计与实现 247
11.3?本章小结 251
第12章 CLK Framework的设计与实现 252
12.1 Linux CLK的设计与实现 252
12.1.1 架构设计概览 252
12.1.2背景介绍 252
12.1.3?配置信息 252
12.1.4?设计与实现 252
12.2实现自己的CLK Framework 253
12.3 本章小结 253
第13章 DVFS Framework的设计与实现 254
13.1 Linux DVFS设计与实现 254
13.1.1 架构设计概览 254
13.1.2背景介绍 254
13.1.3?配置信息 254
13.1.4?设计与实现 254
13.2?实现自己的DVFS框架 255
13.3 本章小结 255
第14章 Regulator Framework的设计与实现 256
14.1 Linux Regulator的设计与实现 256
14.1.1 架构设计概览 256
14.1.2背景介绍 257
14.1.3?配置信息 257
14.1.4?设计与实现 257
14.2?实现自己的Regulator Framework 257
14.3 本章小结 257
第15章 AVS Framework的设计与实现 258
15.1?AVS设计与实现 258
15.1.1 架构设计概览 258
15.1.2 模块功能详解 258
15.1.3 结构体设计 258
15.1.4 函数实现设计 258
15.1.5 工作时序 258
15.2 本章小结 258
第16章 PSCI Framework的设计与实现 260
16.1背景 260
16.2假设和建议 262
16.2.1 PSCI目的 262
16.2.2?异常级别、Armv7权限级别和最高权限 263
16.2.3?基于ARM系统的软件栈 264
16.2.4?安全世界软件和电源管理 265
16.3 PSCI使用场景及要求 265
16.3.1?Idle management 265
16.3.2?Power state?系统拓扑与协作 266
16.3.3?CPU hotplug?和secondary CPU boot 269
16.3.4?System shutdown, reset?和?suspend 270
16.4?函数功能解析 271
16.4.1?函数原型 271
16.5 PSCI调用流程 324
16.5.1 CPU_SUSPEND、CPU_DEFAULT_SUSPEND、SYSTEM_SUSPEND调用流程 324
16.5.2 CPU_OFF?调用流程 325
16.5.3 CPU_ON调用流程 326
16.6 Cores State的操作系统和实现视图 327
16.7推荐的StateID编码 328
16.8 PSCI规范实现选项 330
16.9 内核PSCI关系梳理 331
16.10本章小结 332
第17章 ARM Trusted Firmware 334
17.1背景 335
17.2?配置信息 335
17.3?工作时序 337
17.4?本章小结 338
第18章 扩展知识点 339
18.1?链表 339
18.2?信号量 346
18.3?自旋锁 352
18.4? GIC 354
18.5? SMP CALL 357
18.6?锁中断 360
18.7?看门狗 361
18.8? task freeze 362
18.9?定时器 364
18.10? volatile 368
18.11? WFE/SEV/WFI 370
18.12 write through/write back/write allocate/ read allocate 371
18.13 mutex、semaphore、spinlock的区别 371
18.14?小结 372
第19章 低功耗问题定位及优化思路 374
19.1 多子系统配置 374
19.2 并行处理 376
19.3 增加打点信息 378
19.4 增加suspend流程状态检查返回点 380
19.5 设置提前唤醒量 382
19.6 减少(合并)唤醒中断次数 383
19.7 慎用阻塞型接口 386
19.8 踩内存 387
19.9 压力测试 390
19.9.1 思路梳理 390
19.9.2 压力测试框架实现 391
19.10 其他优化手段 394
1、 多电源域划分 394
2、 CLK的非用即关 394
3、 做好维测记录 394
4、 编码时使用likely和unlikely 394
5、 多核数据使用percpu变量定义 394
6、 根据负载调整电压和频率 395
19.11 本章小结 395
附录 参考资料推荐? 396
后记 397

教学资源推荐
作者: (美)斯坦伯格(Steinberg, L.)
作者: (美)韦恩·韦登(Wayne Weiten)等著
作者: 主编 李春华 贾楠
作者: (美)利迪(Leedy,P.D.),(美)奥姆罗德(Ormrod,J.E.)
参考读物推荐
作者: [美]埃德·特罗尼克(Ed Tronick),[美]克劳迪娅·M.戈尔德(Claudia M.Gold) 著