SoC底層軟件低功耗系統(tǒng)設(shè)計與實現(xiàn)
定 價:109 元
- 作者:李曉杰著
- 出版時間:2023/6/1
- ISBN:9787111728146
- 出 版 社:機(jī)械工業(yè)出版社
- 中圖法分類:TN402
- 頁碼:
- 紙張:膠版紙
- 版次:
- 開本:16開
這是一本系統(tǒng)剖析SoC底層軟件低功耗系統(tǒng)設(shè)計、實現(xiàn)與定制化的著作,同時它還全面講解了低功耗的知識點以及各種低功耗問題的定位與優(yōu)化。作者在華為海思等半導(dǎo)體企業(yè)深耕低功耗領(lǐng)域10余年,本書內(nèi)容基于作者的實際商用經(jīng)驗撰寫而成,讀完本書后,我們至少能掌握以下知識:(1)Linux內(nèi)核中所有與低功耗相關(guān)的17個模塊的設(shè)計與實現(xiàn)原理,以及這些模塊的自定義實現(xiàn)和二次開發(fā),這部分內(nèi)容能讓讀者對低功耗相關(guān)的問題知其然并知其所以然。(2)Linux內(nèi)核中關(guān)于低功耗的設(shè)計思想,既同時適用于宏內(nèi)核、微內(nèi)核和精簡內(nèi)核,又可以給其他的操作系統(tǒng)提供思路和啟發(fā)。(3)低功耗的20余個擴(kuò)展知識點,讓讀者對低功耗有更全面、更深入地了解。(4)各種低功耗問題的定位方法和通用優(yōu)化手段。
(1)作者背景權(quán)威:作者是資深的SoC低功耗專家,曾在華為海思半導(dǎo)體擔(dān)任高級工程師,現(xiàn)為國內(nèi)某頭部手機(jī)廠商的高級工程師。(2)作者經(jīng)驗豐富:作者在驅(qū)動開發(fā)、低功耗、性能優(yōu)化、系統(tǒng)穩(wěn)定性等多個領(lǐng)域有豐富經(jīng)驗,相關(guān)工作支撐各類終端產(chǎn)品累計近十億級發(fā)貨總量。(3)內(nèi)容實操性強(qiáng):內(nèi)容聚焦于SoC底層軟件的低功耗問題,既有Linux內(nèi)核的低功耗模塊的設(shè)計、實現(xiàn)與定制化,又有各種常見低功耗問題的定位與優(yōu)化。(4)表達(dá)通俗易懂:圖文并茂、抽絲剝繭,對Linux內(nèi)核中低功耗模塊的源碼進(jìn)行分析和介紹時,繪制了大量的流程圖、時序圖,層層展開,便于讀者理解。
Preface 前 言
在SoC芯片的整個交付過程中,低功耗的芯片設(shè)計、軟件設(shè)計、功耗優(yōu)化是非常重要的細(xì)分領(lǐng)域,而低功耗軟件領(lǐng)域的書卻相對匱乏,已有的相關(guān)圖書也更多集中在芯片設(shè)計領(lǐng)域。一些想要從事低功耗領(lǐng)域相關(guān)工作的研發(fā)人員需要工作很長一段時間才能對低功耗軟件框架及其問題分析和優(yōu)化有一個全局的認(rèn)識。這是我想要出版這本書的主要原因,此外,我也想讓更多的人熟悉低功耗特性及軟件設(shè)計。
綜合來說,本書主要講了四點:
一是分析Linux 內(nèi)核的實現(xiàn)機(jī)制和方法,希望能給初次涉足低功耗領(lǐng)域的軟件開發(fā)人員一些幫助。這一內(nèi)容分布在各章中。
二是學(xué)習(xí)優(yōu)秀的設(shè)計思想,從而以其為參考將我們自己對應(yīng)的機(jī)制應(yīng)用到其他操作系統(tǒng)中。這一內(nèi)容同樣分布在各章中。
三是對低功耗領(lǐng)域涉及的一些擴(kuò)展知識點做了補(bǔ)充說明。這一內(nèi)容主要在第18章中體現(xiàn)。
四是針對低功耗問題定位和優(yōu)化手段做了一些簡單說明。這一內(nèi)容在第19章中闡述。這一部分與各芯片廠商關(guān)系很大,因此這里只能介紹一些通用的優(yōu)化手段。
特別需要說明的是,本書的第12~15章是在本領(lǐng)域資深專家楊強(qiáng)的指導(dǎo)下完成的,在此特別表示感謝。
內(nèi)核版本
本書基于Linux 內(nèi)核 5.10.111撰寫,并對基于該版本的相關(guān)實現(xiàn)進(jìn)行了代碼分析,大家可以到內(nèi)核官方網(wǎng)站(https://kernel.org/)中下載、查閱相關(guān)實現(xiàn)。不過對于低功耗機(jī)制來講,不同版本的相關(guān)實現(xiàn)基本不會有太大變化。
讀者對象
本書適合有志于在低功耗領(lǐng)域發(fā)展的開發(fā)者閱讀,包括但不限于BSP工程師、內(nèi)核開發(fā)工程師、RTOS開發(fā)工程師、系統(tǒng)軟件工程師、固件工程師、低功耗測試工程師等。我們會假定閱讀本書的開發(fā)者都有一定的技術(shù)基礎(chǔ)。
錯誤或建議反饋
由于作者水平有限,書中難免會有不準(zhǔn)確的地方,歡迎大家積極反饋,也歡迎大家提出改進(jìn)建議。讀者可通過郵件與我聯(lián)系:2118216214@qq.com。
Contents 目 錄
前言
第1章 低功耗系統(tǒng)設(shè)計思路1
1.1 低功耗系統(tǒng)設(shè)計面臨的挑戰(zhàn)1
1.2 降低功耗的3種主要設(shè)計思路2
1.3 低功耗系統(tǒng)的架構(gòu)設(shè)計3
1.4 術(shù)語介紹6
1.5 本章小結(jié)8
第2章 wakeup source 框架設(shè)計與實現(xiàn)9
2.1 Linux wakeup source的設(shè)計與實現(xiàn)9
2.1.1 架構(gòu)設(shè)計概覽9
2.1.2 模塊功能詳解9
2.1.3 配置信息解析10
2.1.4 主要數(shù)據(jù)結(jié)構(gòu)10
2.1.5 主要函數(shù)分析12
2.1.6 函數(shù)工作時序17
2.2 實現(xiàn)自己的wakeup source 框架18
2.2.1 動手前的思考18
2.2.2 設(shè)計與實現(xiàn)19
2.3 本章小結(jié)22
第3章 autosleep 框架設(shè)計與實現(xiàn)23
3.1 Linux autosleep的設(shè)計與實現(xiàn)23
3.1.1 架構(gòu)設(shè)計概覽23
3.1.2 模塊功能詳解23
3.1.3 配置信息解析24
3.1.4 主要函數(shù)實現(xiàn)24
3.1.5 函數(shù)工作時序27
3.2 實現(xiàn)自己的autosleep 框架28
3.2.1 動手前的思考28
3.2.2 設(shè)計與實現(xiàn)29
3.3 本章小結(jié)30
第4章 PM Core框架設(shè)計與實現(xiàn)31
4.1 Linux PM Core的設(shè)計與實現(xiàn)31
4.1.1 架構(gòu)設(shè)計概覽31
4.1.2 模塊功能詳解31
4.1.3 配置信息解析32
4.1.4 主要數(shù)據(jù)結(jié)構(gòu)32
4.1.5 主要函數(shù)實現(xiàn)35
4.1.6 軟件處理流程41
4.2 實現(xiàn)自己的PM Core 框架43
4.2.1 動手前的思考43
4.2.2 運行時序設(shè)計44
4.2.3 設(shè)計與實現(xiàn)44
4.3 本章小結(jié)47
第5章 notifier 框架設(shè)計與實現(xiàn)48
5.1 Linux notifier的設(shè)計與實現(xiàn)48
5.1.1 架構(gòu)設(shè)計概覽48
5.1.2 模塊功能詳解48
5.1.3 配置信息解析49
5.1.4 主要數(shù)據(jù)結(jié)構(gòu)49
5.1.5 主要接口介紹50
5.1.6 內(nèi)核使用場景54
5.2 實現(xiàn)自己的notifier 框架57
5.2.1 動手前的思考57
5.2.2 設(shè)計與實現(xiàn)57
5.3 本章小結(jié)59
第6章 DPM 框架設(shè)計與實現(xiàn)60
6.1 Linux DPM的設(shè)計與實現(xiàn)60
6.1.1 架構(gòu)設(shè)計概覽60
6.1.2 模塊功能詳解60
6.1.3 配置信息解析61
6.1.4 主要數(shù)據(jù)結(jié)構(gòu)61
6.1.5 主要函數(shù)介紹63
6.1.6 函數(shù)工作時序67
6.2 實現(xiàn)自己的DPM框架75
6.2.1 動手前的思考75
6.2.2 設(shè)計與實現(xiàn)75
6.3 補(bǔ)充說明79
6.4 本章小結(jié)81
第7章 syscore 框架設(shè)計與實現(xiàn)82
7.1 Linux syscore的設(shè)計與實現(xiàn)82
7.1.1 架構(gòu)設(shè)計概覽82
7.1.2 模塊功能詳解82
7.1.3 配置信息解析82
7.1.4 主要結(jié)構(gòu)體介紹83
7.1.5 主要函數(shù)介紹84
7.2 實現(xiàn)自己的syscore 框架87
7.2.1 動手前的思考88
7.2.2 設(shè)計與實現(xiàn)88
7.3 本章小結(jié)90
第8章 RPM框架設(shè)計與實現(xiàn)91
8.1 Linux RPM的設(shè)計與實現(xiàn)91
8.1.1 架構(gòu)設(shè)計概覽91
8.1.2 模塊功能詳解91
8.1.3 RPM與system sleep的關(guān)系94
8.1.4 No-Callback設(shè)備解析95
8.1.5 autosuspend與automatically-
delayed suspends分析95
8.1.6 配置信息解析96
8.1.7 主要結(jié)構(gòu)體介紹96
8.1.8 主要函數(shù)介紹99
8.1.9 RPM與PM Core工作時間段
對比108
8.1.10 RPM的函數(shù)工作時序108
8.2 實現(xiàn)自己的RPM 框架112
8.2.1 動手前的思考112
8.2.2 設(shè)計與實現(xiàn)112
8.2.3 實現(xiàn)進(jìn)階步114
8.2.4 實現(xiàn)進(jìn)階第二步116
8.2.5 實現(xiàn)進(jìn)階第三步118
8.3 本章小結(jié)120
第9章 thermal框架設(shè)計與實現(xiàn)121
9.1 Linux thermal的設(shè)計與實現(xiàn)121
9.1.1 架構(gòu)設(shè)計概覽121
9.1.2 模塊功能詳解121
9.1.3 基本術(shù)語概念123
9.1.4 配置信息解析123
9.1.5 thermal_core解析123
9.1.6 關(guān)于critical事件和非critical
事件的處理流程133
9.1.7 governor實現(xiàn)介紹134
9.2 實現(xiàn)自己的thermal框架135
9.2.1 動手前的思考136
9.2.2 設(shè)計與實現(xiàn)136
9.3 本章小結(jié)143
第10章 CPU Hotplug框架設(shè)計
與實現(xiàn)144
10.1 Linux CPU Hotplug的設(shè)計與實現(xiàn)144
10.1.1 架構(gòu)設(shè)計概覽144
10.1.2 模塊功能詳解144
10.1.3 配置信息解析145
10.1.4 主要數(shù)據(jù)結(jié)構(gòu)介紹146
10.1.5 如何使用CPU Hotplug148
10.1.6 CPU Hotplug?狀態(tài)機(jī)149
10.1.7 CPU online/offline運行流程
示意150
10.1.8 state申請及使用152
10.1.9 CPU Hotplug工作時序153
10.2 實現(xiàn)自己的Hotplug 框架157
10.2.1 動手前的思考157
10.2.2 設(shè)計與實現(xiàn)157
10.3 本章小結(jié)160
第11章 CPUIdle 框架設(shè)計與實現(xiàn)161
11.1 Linux CPUIdle的設(shè)計與實現(xiàn)161
11.1.1 架構(gòu)設(shè)計概覽161
11.1.2 背景介紹161
11.1.3 配置信息解析162
11.1.4 設(shè)計與實現(xiàn)163
11.2 實