SoC 底層軟件低功耗系統設計與實現

李曉杰著

  • 出版商: 機械工業
  • 出版日期: 2023-06-01
  • 售價: $654
  • 貴賓價: 9.5$621
  • 語言: 簡體中文
  • 頁數: 311
  • 裝訂: 平裝
  • ISBN: 7111728149
  • ISBN-13: 9787111728146
  • 相關分類: LinuxOperating-system半導體
  • 立即出貨

買這商品的人也買了...

商品描述

這是一本系統剖析SoC底層軟件低功耗系統設計、實現與定制化的著作,
同時它還全面講解了低功耗的知識點以及各種低功耗問題的定位與優化。
作者在華為海思等半導體企業深耕低功耗領域10餘年,
本書內容基於作者的實際商用經驗撰寫而成,讀完本書後,我們至少能掌握以下知識:
(1)Linux內核中所有與低功耗相關的17個模塊的設計與實現原理,
以及這些模塊的自定義實現和二次開發,這部分內容能讓讀者對低功耗相關的問題知其然並知其所以然。
(2)Linux內核中關於低功耗的設計思想,既同時適用於宏內核、微內核和精簡內核,又可以給其他的操作系統提供思路和啟發。
(3)低功耗的20餘個擴展知識點,讓讀者對低功耗有更全面、更深入地了解。
(4)各種低功耗問題的定位方法和通用優化手段。

目錄大綱

Contents 目錄
前言
第1章低功耗系統設計思路1
1.1 低功耗系統設計面臨的挑戰1
1.2 降低功耗的3種主要設計思路2
1.3 低功耗系統的架構設計3
1.4 術語介紹6
1.5 本章小結8
第2章wakeup source 框架設計與實現9
2.1 Linux wakeup source的設計與實現9
2.1.1 架構設計概覽9
2.1.2 模塊功能詳解9
2.1.3 配置信息解析10
2.1.4 主要數據結構10
2.1.5 主要函數分析12
2.1.6 函數工作時序17
2.2 實現自己的wakeup source 框架18
2.2.1 動手前的思考18
2.2.2 設計與實現19
2.3 本章小結22
第3章autosleep 框架設計與實現23
3.1 Linux autosleep的設計與實現23
3.1.1 架構設計概覽23
3.1.2 模塊功能詳解23
3.1.3 配置信息解析24
3.1.4 主要函數實現24
3.1.5 函數工作時序27
3.2 實現自己的autosleep 框架28
3.2.1 動手前的思考28
3.2.2 設計與實現29
3.3 本章小結30
第4章PM Core框架設計與實現31
4.1 Linux PM Core的設計與實現31
4.1.1 架構設計概覽31
4.1.2 模塊功能詳解31
4.1.3 配置信息解析32
4.1.4 主要數據結構32
4.1.5 主要函數實現35
4.1.6 軟件處理流程41
4.2 實現自己的PM Core 框架43
4.2.1 動手前的思考43
4.2.2 運行時序設計44
4.2.3 設計與實現44
4.3 本章小結47
第5章notifier 框架設計與實現48
5.1 Linux notifier的設計與實現48
5.1.1 架構設計概覽48
5.1.2 模塊功能詳解48
5.1.3 配置信息解析49
5.1.4 主要數據結構49
5.1.5 主要接口介紹50
5.1.6 內核使用場景54
5.2 實現自己的notifier 框架57
5.2.1 動手前的思考57
5.2.2 設計與實現57
5.3 本章小結59
第6章DPM 框架設計與實現60
6.1 Linux DPM的設計與實現60
6.1.1 架構設計概覽60
6.1.2 模塊功能詳解60
6.1.3 配置信息解析61
6.1.4 主要數據結構61
6.1.5 主要函數介紹63
6.1.6 函數工作時序67
6.2 實現自己的DPM框架75
6.2.1 動手前的思考75
6.2.2 設計與實現75
6.3 補充說明79
6.4 本章小結81
第7章syscore 框架設計與實現82
7.1 Linux syscore的設計與實現82
7.1.1 架構設計概覽82
7.1.2 模塊功能詳解82
7.1.3 配置信息解析82
7.1.4 主要結構體介紹83
7.1.5 主要函數介紹84
7.2 實現自己的syscore 框架87
7.2.1 動手前的思考88
7.2.2 設計與實現88
7.3 本章小結90
第8章RPM框架設計與實現91
8.1 Linux RPM的設計與實現91
8.1.1 架構設計概覽91
8.1.2 模塊功能詳解91
8.1.3 RPM與system sleep的關係94
8.1.4 No-Callback設備解析95
8.1.5 autosuspend與automatically-delayed suspends分析95
8.1.6 配置信息解析96
8.1.7 主要結構體介紹96
8.1.8 主要函數介紹99
8.1.9 RPM與PM Core工作時間段對比108
8.1.10 RPM的函數工作時序108
8.2 實現自己的RPM 框架112
8.2.1 動手前的思考112
8.2.2 設計與實現112
8.2.3 實現進階第一步114
8.2.4 實現進階第二步116
8.2.5 實現進階第三步118
8.3 本章小結120
第9章thermal框架設計與實現121
9.1 Linux thermal的設計與實現121
9.1.1 架構設計概覽121
9.1.2 模塊功能詳解121
9.1.3 基本術語概念123
9.1.4 配置信息解析123
9.1.5 thermal_core解析123
9.1.6 關於critical事件和非critical事件的處理流程133
9.1.7 governor實現介紹134
9.2 實現自己的thermal框架135
9.2.1 動手前的思考136
9.2.2 設計與實現136
9.3 本章小結143
第10章CPU Hotplug框架設計與實現144
10.1 Linux CPU Hotplug的設計與實現144
10.1.1 架構設計概覽144
10.1.2 模塊功能詳解144
10.1.3 配置信息解析145
10.1.4 主要數據結構介紹146
10.1.5 如何使用CPU Hotplug148
10.1.6 CPU Hotplug?狀態機149
10.1.7 CPU online/offline運行流程示意150
10.1.8 state申請及使用152
10.1.9 CPU Hotplug工作時序153
10.2 實現自己的Hotplug 框架157
10.2.1 動手前的思考157
10.2.2 設計與實現157
10.3 本章小結160
第11章CPUIdle 框架設計與實現161
11.1 Linux CPUIdle的設計與實現161
11.1.1 架構設計概覽161
11.1.2 背景介紹161
11.1.3 配置信息解析162
11.1.4 設計與實現163
11.2 實現自己的CPUIdle 框架170
11.2.1 動手前的思考170
11.2.2 設計與實現171
11.3 本章小結174
第12章CLK框架設計與實現175
12.1 Linux CLK的設計與實現175
12.1.1 架構設計概覽175
12.1.2 背景介紹175
12.1.3 配置信息解析176
12.1.4 主要數據類型177
12.1.5 主要函數實現180
12.2 實現自己的CLK框架187
12.2.1 動手前的思考188
12.2.2 設計與實現188
12.3 本章小結192
第13章DVFS框架設計與實現193
13.1 Linux cpufreq的設計與實現193
13.1.1 架構設計概覽193
13.1.2 模塊功能詳解193
13.1.3 配置信息解析194
13.1.4 主要數據類型195
13.1.5 主要函數實現199
13.2 實現自己的DVFS框架205
13.2.1 動手前的思考205
13.2.2 設計與實現205
13.3 本章小結208
第14章regulator框架設計與實現209
14.1 Linux regulator的設計與實現209
14.1.1 架構設計概覽209
14.1.2 背景介紹209
14.1.3 配置信息解析210
14.1.4 主要模塊功能211
14.1.5 主要函數實現215
14.2 實現自己的regulator框架228
14.2.1 動手前的思考228
14.2.2 設計與實現228
14.3 本章小結231
第15章AVS框架設計與實現232
15.1 背景及原理233
15.2 AVS設計與實現234
15.2.1 AVS實現234
15.2.2 AVS接口236
15.2.3 AVS使用237
15.3 本章小結238
第16章PSCI框架設計與實現239
16.1 背景介紹240
16.1.1 空閒管理240
16.1.2 熱插拔240
16.2 假設和建議241
16.2.1 PSCI目的241
16.2.2 異常級別、ARMv7權限級別和最高權限241
16.2.3 基於ARM系統的軟件棧242
16.2.4 安全世界軟件和電源管理243
16.3 PSCI使用場景及要求244
16.3.1 空閒管理244
16.3.2 電源狀態系統拓撲與協作244
16.3.3 CPU熱插拔和從核啟動246
16.3.4 系統關閉、系統復位和系統掛起247
16.4 函數功能解析248
16.4.1 PSCI中的參數和返回值248
16.4.2 PSCI_VERSION函數249
16.4.3 CPU_SUSPEND函數249
16.4.4 CPU_OFF函數253
16.4.5 CPU_ON函數255
16.4.6 AFFINITY_INFO函數256
16.4.7 MIGRATE函數258
16.4.8 MIGRATE_INFO_TYPE/MIG-RATE_INFO_UP_CPU函數259
16.4.9 SYSTEM_OFF函數260
16.4.10 SYSTEM_RESET函數261
16.4.11 PSCI_FEATURES函數261
16.4.12 SYSTEM_SUSPEND函數262
16.5 PSCI調用流程263
16.5.1 CPU_SUSPEND、SYSTEM_SUSPEND調用流程263
16.5.2 CPU_OFF調用流程264
16.5.3 CPU_ON調用流程265
16.6 核狀態的操作系統和實現視圖266
16.7 推薦的StateID編碼267
16.8 PSCI規範實現選項268
16.9 內核PSCI關係梳理268
16.10 本章小結269
第17章ATF271
17.1 背景介紹272
17.2 配置信息272
17.3 工作時序272
17.4 本章小結274
第18章擴展知識點275
18.1 鍊錶275
18.2 信號量278
18.3 自旋鎖281
18.4 GIC283
18.5 SMP CALL285
18.6 鎖中斷287
18.7 看門狗287
18.8 凍結進程288
18.9 定時器290
18.10 volatile292
18.11 WFE、SEV、WFI293
18.12 write through、write back、write allocate、read allocate294
18.13 mutex、semaphore、spinlock的區別294
18.14 本章小結295
第19章低功耗問題定位及優化思路296
19.1 多子系統配置296
19.2 並行處理298
19.3 增加打點信息299
19.4 增加suspend流程狀態檢查返回點300
19.5 設置提前喚醒量302
19.6 減少(合併)喚醒中斷次數302
19.7 慎用阻塞型接口305
19.8 踩內存305
19.9 壓力測試307
19.9.1 思路梳理307
19.9.2 壓力測試框架實現308
19.10 其他優化手段310
19.11 本章小結310