沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本 版權(quán)信息
- ISBN:9787115601384
- 條形碼:9787115601384 ; 978-7-115-60138-4
- 裝幀:平裝-膠訂
- 冊(cè)數(shù):暫無(wú)
- 重量:暫無(wú)
- 所屬分類(lèi):>
沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本 本書(shū)特色
1)深度解析,了解更深入:
本書(shū)與市面上已有的HarmonyOS/OpenHarmony應(yīng)用開(kāi)發(fā)的圖書(shū)不同,本書(shū)側(cè)重于OpenHarmony系統(tǒng)分析和設(shè)備驅(qū)動(dòng)開(kāi)發(fā),是一本深度剖析OpenHarmony運(yùn)行機(jī)制的技術(shù)圖書(shū)。
2)內(nèi)容豐富,多方位講解:
以O(shè)penHarmony 3.0版本為基礎(chǔ),從OpenHarmony的開(kāi)發(fā)環(huán)境搭建、編譯流程、系統(tǒng)啟動(dòng)流程等基礎(chǔ)部分開(kāi)始介紹,逐步深入到源代碼層面,對(duì)OpenHarmony的核心模塊和框架實(shí)現(xiàn)展開(kāi)細(xì)致入微的分析和解讀。
3)多種資源,學(xué)習(xí)更簡(jiǎn)單:
為了降低讀者的學(xué)習(xí)難度,本書(shū)以在線(xiàn)資源的方式,幫助讀者快速了解相關(guān)內(nèi)容
本書(shū)適合系統(tǒng)開(kāi)發(fā)工程師、設(shè)備驅(qū)動(dòng)開(kāi)發(fā)工程師和希望深入了解OpenHarmony內(nèi)部運(yùn)行機(jī)制的技術(shù)從業(yè)人員閱讀。
隨書(shū)贈(zèng)送資源:
1)碼云資源倉(cāng)庫(kù)
與本書(shū)相關(guān)的示例代碼、日志文檔、流程圖、表和說(shuō)明文檔等資源
2)博客專(zhuān)欄文章
51CTO與華為HarmonyOS官方共建的開(kāi)源基礎(chǔ)軟件社區(qū),是開(kāi)發(fā)者學(xué)習(xí)和討OpenHarmony的一個(gè)很好的平臺(tái)。我在社區(qū)上開(kāi)設(shè)了“鴻蒙系統(tǒng)學(xué)習(xí)筆記”技術(shù)專(zhuān)欄
本書(shū)的勘誤或未來(lái)作者對(duì)OpenHarmony的學(xué)習(xí)總結(jié),會(huì)在這個(gè)專(zhuān)欄上持續(xù)更新
作為一種新興的開(kāi)源操作系統(tǒng),OpenHarmony在技術(shù)上具有前瞻性,但同時(shí)也存在生態(tài)不健全的問(wèn)題。這一點(diǎn)對(duì)早期的開(kāi)發(fā)者來(lái)說(shuō)并不友好,他們?cè)谔剿餮芯縊penHarmony時(shí),需要面對(duì)技術(shù)架構(gòu)變化、基礎(chǔ)能力不完善等一系列問(wèn)題。當(dāng)我看到有開(kāi)發(fā)者將其研究成果集結(jié)成冊(cè),且內(nèi)容形成了較為完整的體系時(shí),忍不住要推薦一下,并希望這本書(shū)能夠掃清廣大OpenHarmony開(kāi)發(fā)者的障礙。開(kāi)祝編寫(xiě)的這本OpenHarmony源代碼剖析的圖書(shū),對(duì)OpenHarmony的技術(shù)架構(gòu)和運(yùn)行機(jī)制進(jìn)行了透徹的分析與介紹,相信這本書(shū)能夠?yàn)閺V大的開(kāi)發(fā)者掃清OpenHarmony的學(xué)習(xí)障礙。
——51CTO VP & 鴻蒙技術(shù)社區(qū)創(chuàng)始人 宋佳宸
梁開(kāi)祝老師是51CTO OpenHarmony技術(shù)社區(qū)的寶藏男孩,他在社區(qū)發(fā)布的OpenHarmony系統(tǒng)解析的文章常常占據(jù)社區(qū)榜首。梁老師寫(xiě)作的這本書(shū)很好地體現(xiàn)了他深厚的技術(shù)功底和良好的文筆表達(dá)。本書(shū)不但抽絲剝繭般地清晰闡釋了OpenHarmony的技術(shù),而且行文質(zhì)量也無(wú)可挑剔。相信本書(shū)一定能夠給讀者帶來(lái)深度的技術(shù)啟發(fā)和優(yōu)秀的閱讀體驗(yàn)。強(qiáng)烈推薦!
——51CTO OpenHarmony技術(shù)社區(qū)內(nèi)容主管 楊文浩
本書(shū)是梁開(kāi)祝老師花費(fèi)一年多的時(shí)間和精力,深度剖析OpenHarmony開(kāi)源代碼的智慧結(jié)晶。本書(shū)對(duì)OpenHarmony的源碼實(shí)現(xiàn)進(jìn)行了深度分析,值得廣大開(kāi)發(fā)者參考學(xué)習(xí)。OpenHarmony從2020年9月開(kāi)源以來(lái),社區(qū)已累計(jì)19.1K Star,24.5K Fork,并有20+開(kāi)發(fā)板通過(guò)兼容性認(rèn)證。未來(lái)希望能有更多像梁老師這樣的開(kāi)發(fā)者參與到OpenHarmony社區(qū)中,一起打造良好的開(kāi)發(fā)生態(tài),讓OpenHarmony能成為萬(wàn)物互聯(lián)時(shí)代的新數(shù)字基座。
——開(kāi)放原子OpenHarmony項(xiàng)目導(dǎo)師 劉果
學(xué)習(xí)鴻蒙的推薦方式就是把自己的經(jīng)驗(yàn)和鴻蒙的知識(shí)融合在一起,并有所升華。梁開(kāi)祝是有豐富經(jīng)驗(yàn)的資深開(kāi)發(fā)者,他眼中的鴻蒙一定能讓很多開(kāi)發(fā)者有更深入的理解。
——深鴻會(huì)發(fā)起人 李傳釗
沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本 內(nèi)容簡(jiǎn)介
OpenHarmony是由開(kāi)放原子開(kāi)源基金會(huì)孵化及運(yùn)營(yíng)的一個(gè)開(kāi)源項(xiàng)目,是一款由全球開(kāi)發(fā)者共建的開(kāi)源分布式操作系統(tǒng)。從推出之日至今,OpenHarmony的發(fā)展愈加迅速,生態(tài)建設(shè)愈加成熟,已經(jīng)成為全球智能終端操作系統(tǒng)領(lǐng)域不可忽視的新生開(kāi)源力量。
《沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本》以O(shè)penHarmony LTS 3.0版本的代碼為基礎(chǔ),從OpenHarmony的系統(tǒng)簡(jiǎn)介、開(kāi)發(fā)環(huán)境搭建、編譯流程、系統(tǒng)啟動(dòng)流程等開(kāi)始講解,然后逐漸深入到代碼層面,對(duì)OpenHarmony中的各個(gè)子系統(tǒng)(主要是分布式任務(wù)調(diào)度子系統(tǒng)、分布式通信子系統(tǒng)、驅(qū)動(dòng)子系統(tǒng))的核心模塊和框架的實(shí)現(xiàn)展開(kāi)細(xì)致入微的分析與解讀。本書(shū)還提供了相應(yīng)的示例程序、詳盡的日志、相關(guān)的流程圖和數(shù)據(jù)結(jié)構(gòu)關(guān)系圖等,旨在為開(kāi)發(fā)者深入地理解OpenHarmony中的關(guān)鍵技術(shù)和驅(qū)動(dòng)框架,提供良好的幫助和參考。
《沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本》適合系統(tǒng)開(kāi)發(fā)工程師、設(shè)備驅(qū)動(dòng)開(kāi)發(fā)工程師閱讀,也適合對(duì)OpenHarmony系統(tǒng)底層運(yùn)行機(jī)制感興趣的開(kāi)發(fā)者閱讀。
沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本 目錄
第 1章 系統(tǒng)簡(jiǎn)介 1
1.1 發(fā)展歷史 1
1.2 技術(shù)特性 2
1.3 前景展望 3
第 2章 搭建開(kāi)發(fā)環(huán)境 8
2.1 Windows開(kāi)發(fā)環(huán)境的搭建 9
2.2 拿來(lái)即用的Ubuntu開(kāi)發(fā)環(huán)境 12
2.3 Ubuntu開(kāi)發(fā)環(huán)境的搭建 12
2.3.1 準(zhǔn)備工作 12
2.3.2 修改默認(rèn)shell 14
2.3.3 安裝依賴(lài)工具 15
2.3.4 安裝和配置Python 15
2.3.5 安裝代碼管理工具 17
2.3.6 安裝構(gòu)建編譯工具鏈 17
2.3.7 安裝VSCode及DevEco插件 21
2.4 Linux與Windows之間的文件共享 22
2.4.1 將Windows目錄共享至Linux 22
2.4.2 將Linux目錄共享至Windows 24
2.4.3 遠(yuǎn)程登錄Linux虛擬機(jī) 25
2.5 獲取代碼 26
2.5.1 代碼分支和版本管理簡(jiǎn)介 26
2.5.2 獲取代碼前的準(zhǔn)備工作 31
2.5.3 獲取Master分支代碼 33
2.5.4 獲取Release分支代碼 34
2.5.5 獲取Hi3516工程代碼 35
2.5.6 獲取Hi3861工程代碼 38
2.6 編譯代碼 40
2.6.1 編譯代碼前的準(zhǔn)備工作 40
2.6.2 編譯Master分支代碼 41
2.6.3 編譯Release分支代碼 44
2.6.4 編譯Hi3516工程代碼 45
2.6.5 編譯Hi3861工程代碼 47
2.6.6 編譯u-boot源代碼 49
2.7 燒錄開(kāi)發(fā)板 51
2.7.1 開(kāi)發(fā)板相關(guān)說(shuō)明 51
2.7.2 燒錄Hi3861開(kāi)發(fā)板 52
2.7.3 燒錄Hi3516開(kāi)發(fā)板 55
2.7.4 燒錄u-boot后的處理 63
第3章 系統(tǒng)架構(gòu) 67
3.1 系統(tǒng)架構(gòu)圖 67
3.2 系統(tǒng)目錄結(jié)構(gòu) 70
第4章 構(gòu)建子系統(tǒng) 74
4.1 GN和Ninja的構(gòu)建流程 75
4.2 系統(tǒng)的裁剪和配置 81
4.2.1 系統(tǒng)裁剪 81
4.2.2 增刪子系統(tǒng) 86
4.2.3 增刪組件 87
4.2.4 增刪特性 88
4.3 編譯流程分析 89
4.3.1 全編譯流程 89
4.3.2 增量編譯 93
4.3.3 單獨(dú)編譯組件和目標(biāo) 94
4.4 編譯LiteOS_M內(nèi)核和SDK 95
4.5 編譯LiteOS_A內(nèi)核和shell 97
4.6 編譯相關(guān)的目錄結(jié)構(gòu) 101
4.6.1 小型系統(tǒng)build相關(guān)的文件和目錄結(jié)構(gòu) 101
4.6.2 小型系統(tǒng)out相關(guān)的文件和目錄結(jié)構(gòu) 102
4.6.3 小型系統(tǒng)rootfs相關(guān)的文件和目錄結(jié)構(gòu) 104
4.7 標(biāo)準(zhǔn)系統(tǒng)的編譯流程 105
4.7.1 build和out相關(guān)的文件和目錄結(jié)構(gòu) 105
4.7.2 標(biāo)準(zhǔn)系統(tǒng)的編譯流程 108
4.7.3 Linux內(nèi)核編譯流程 114
4.7.4 單獨(dú)編譯部件和模塊 119
第5章 啟動(dòng)流程 120
5.1 輕量系統(tǒng)(LiteOS_M)的啟動(dòng)流程 120
5.1.1 第 一階段:BootLoader階段 120
5.1.2 第二階段:匯編語(yǔ)言代碼階段 121
5.1.3 第三階段:C語(yǔ)言代碼階段 122
5.1.4 第四階段:LiteOS SDK啟動(dòng)階段 123
5.1.5 第五階段:系統(tǒng)框架層啟動(dòng)階段 124
5.1.6 系統(tǒng)服務(wù)的啟動(dòng)方式 128
5.2 小型系統(tǒng)(LiteOS_A)的啟動(dòng)流程 132
5.2.1 第 一階段:BootLoader階段 132
5.2.2 第二階段:匯編語(yǔ)言代碼階段 132
5.2.3 第三階段:C語(yǔ)言代碼階段 133
5.2.4 第四階段:系統(tǒng)框架層啟動(dòng)階段 140
5.2.5 系統(tǒng)服務(wù)的啟動(dòng)方式 142
5.2.6 用戶(hù)態(tài)根進(jìn)程的來(lái)歷 143
5.3 Linux內(nèi)核系統(tǒng)的啟動(dòng)流程 145
第6章 子系統(tǒng) 146
6.1 內(nèi)核子系統(tǒng)概述 146
6.1.1 LiteOS_M內(nèi)核概述 146
6.1.2 LiteOS_A內(nèi)核概述 148
6.1.3 Linux內(nèi)核概述 149
6.1.4 KAL和OSAL概述 149
6.2 啟動(dòng)恢復(fù)子系統(tǒng) 150
6.2.1 啟動(dòng)引導(dǎo)組件 152
6.2.2 應(yīng)用孵化組件 153
6.2.3 服務(wù)啟動(dòng)組件 155
6.2.4 系統(tǒng)屬性組件 155
6.3 公共基礎(chǔ)庫(kù)子系統(tǒng) 158
6.4 DFX子系統(tǒng) 162
6.4.1 輕量系統(tǒng)的日志組件 162
6.4.2 小型系統(tǒng)的日志組件 174
6.4.3 標(biāo)準(zhǔn)系統(tǒng)的日志組件 182
6.4.4 日志組件的比較 188
6.4.5 init進(jìn)程的日志 189
6.4.6 驅(qū)動(dòng)框架的日志 190
6.5 IoT硬件子系統(tǒng) 196
6.5.1 概述和目錄結(jié)構(gòu) 196
6.5.2 設(shè)備驅(qū)動(dòng)開(kāi)發(fā)路徑 201
第7章 分布式任務(wù)調(diào)度子系統(tǒng) 208
7.1 系統(tǒng)服務(wù)框架概述 208
7.2 輕量系統(tǒng)的系統(tǒng)服務(wù)框架 214
7.2.1 關(guān)鍵結(jié)構(gòu)體的解析 214
7.2.2 系統(tǒng)服務(wù)的啟動(dòng)流程 235
7.2.3 面向服務(wù)架構(gòu)的實(shí)現(xiàn) 245
7.3 小型系統(tǒng)的系統(tǒng)服務(wù)框架 248
7.3.1 線(xiàn)程/進(jìn)程及其通信模型 249
7.3.2 系統(tǒng)服務(wù)的啟動(dòng)流程 257
7.3.3 系統(tǒng)服務(wù)注冊(cè)EP的流程 264
7.3.4 服務(wù)管理者的啟動(dòng)流程 279
7.3.5 客戶(hù)端EP與samgr EP的IPC交互 287
7.3.6 客戶(hù)端EP與客戶(hù)端EP的IPC交互 303
第8章 分布式通信子系統(tǒng) 315
8.1 分布式通信子系統(tǒng)概述 315
8.1.1 概念簡(jiǎn)介 315
8.1.2 依賴(lài)關(guān)系 316
8.2 WiFi模塊概述 318
8.2.1 輕量系統(tǒng)的WiFi模塊 318
8.2.2 小型系統(tǒng)的WiFi模塊 323
8.2.3 標(biāo)準(zhǔn)系統(tǒng)的WiFi模塊 327
8.2.4 編譯和部署WiFi驅(qū)動(dòng) 327
8.3 軟總線(xiàn)組件的目錄結(jié)構(gòu) 332
8.3.1 根目錄概述 332
8.3.2 interfaces子目錄 338
8.3.3 adapter子目錄 340
8.3.4 components子目錄 343
8.3.5 sdk子目錄和core子目錄 343
8.4 軟總線(xiàn)組件的適配模塊 344
8.5 軟總線(xiàn)組件的通用模塊 344
8.6 軟總線(xiàn)組件的sdk模塊 347
8.6.1 sdk的編譯和使用 348
8.6.2 sdk的框架模塊:frame 350
8.6.3 sdk的組網(wǎng)模塊:bus_center 354
8.6.4 sdk的發(fā)現(xiàn)模塊:discovery 355
8.6.5 sdk的傳輸模塊:transmission 356
8.7 軟總線(xiàn)組件的核心模塊 359
8.7.1 softbus_server的啟動(dòng)流程 360
8.7.2 核心的框架模塊:frame 366
第9章 驅(qū)動(dòng)子系統(tǒng) 371
9.1 驅(qū)動(dòng)框架概述 371
9.2 通用的驅(qū)動(dòng)示例程序 374
9.2.1 硬件平臺(tái)和原理圖 375
9.2.2 代碼結(jié)構(gòu)和編譯配置 377
9.2.3 通過(guò)執(zhí)行程序來(lái)驗(yàn)證效果 385
9.3 驅(qū)動(dòng)程序的開(kāi)發(fā)要點(diǎn) 386
9.3.1 用戶(hù)態(tài)程序與內(nèi)核態(tài)驅(qū)動(dòng)的交互 386
9.3.2 驅(qū)動(dòng)配置信息的管理 386
9.3.3 驅(qū)動(dòng)程序的實(shí)現(xiàn) 399
9.4 驅(qū)動(dòng)框架的代碼結(jié)構(gòu) 404
9.5 驅(qū)動(dòng)框架的編譯流程 409
9.5.1 在LiteOS_A內(nèi)核部署驅(qū)動(dòng)框架 409
9.5.2 在Linux內(nèi)核部署驅(qū)動(dòng)框架 411
9.5.3 在小型系統(tǒng)的用戶(hù)空間部署驅(qū)動(dòng)框架 414
9.5.4 在標(biāo)準(zhǔn)系統(tǒng)的用戶(hù)空間部署驅(qū)動(dòng)框架 417
9.6 驅(qū)動(dòng)框架的關(guān)鍵結(jié)構(gòu)體 419
9.6.1 DevmgrService和DevmgrServiceClnt 419
9.6.2 DevSvcManager和DevSvcManagerClnt 421
9.6.3 Host的HdfHostInfo和HostList 423
9.6.4 Host的DevHostService和DevHostServiceClnt 424
9.6.5 Host的DriverInstaller 426
9.6.6 Device的HdfDriverLoader 426
9.6.7 Device的HdfDevice 427
9.6.8 Device的HdfDeviceInfo和HdfDeviceNode 429
9.6.9 HdfServiceObserver和HdfServiceObserverRecord 431
9.6.10 HdfObjectCreator 432
9.7 驅(qū)動(dòng)框架的啟動(dòng)流程 435
9.7.1 驅(qū)動(dòng)框架的啟動(dòng)入口 436
9.7.2 啟動(dòng)DeviceManager 443
9.7.3 啟動(dòng)HostList的每個(gè)Host 448
9.7.4 啟動(dòng)DevHostService 451
9.7.5 啟動(dòng)Host的每個(gè)Device 454
9.7.6 Device的Bind子流程 457
9.7.7 Device的Init子流程 461
9.7.8 Device的PublishService子流程 463
9.7.9 Device的AttachDevice子流程 468
9.8 用戶(hù)態(tài)程序與內(nèi)核態(tài)驅(qū)動(dòng)的交互 470
9.8.1 代碼部署和編譯配置 470
9.8.2 序列化數(shù)據(jù)的交互 473
9.8.3 HdfIoService接口 476
9.8.4 消息機(jī)制的實(shí)現(xiàn) 477
9.9 在用戶(hù)空間部署驅(qū)動(dòng)框架 488
9.9.1 開(kāi)源許可證的影響 488
9.9.2 小型系統(tǒng)的用戶(hù)態(tài)基礎(chǔ)驅(qū)動(dòng)能力 490
9.9.3 標(biāo)準(zhǔn)系統(tǒng)的用戶(hù)態(tài)驅(qū)動(dòng)框架概述 493
9.10 用戶(hù)態(tài)驅(qū)動(dòng)框架的hdf_devmgr進(jìn)程 496
9.10.1 啟動(dòng)hdf_devmgr進(jìn)程 497
9.10.2 啟動(dòng)DevmgrServiceStub服務(wù) 501
9.10.3 啟動(dòng)HostList的每個(gè)Host 506
9.10.4 SA5001的IPC消息處理函數(shù) 509
9.10.5 SA5002的IPC消息處理函數(shù) 511
9.11 用戶(hù)態(tài)驅(qū)動(dòng)框架的hdf_devhost進(jìn)程 515
9.11.1 啟動(dòng)hdf_devhost進(jìn)程 515
9.11.2 Host的IPC消息處理函數(shù) 521
9.11.3 Host的進(jìn)程內(nèi)消息處理函數(shù) 522
9.11.4 Device的Bind子流程 524
9.11.5 Device的Init子流程 527
9.11.6 Device的PublishService子流程 530
9.11.7 Device的AttachDevice子流程 531
9.11.8 Device的IPC消息處理函數(shù) 532
9.12 HDI和驅(qū)動(dòng)模型 533
9.12.1 HDI概述 533
9.12.2 HDI的聲明和定義 534
9.12.3 HDI的WLAN驅(qū)動(dòng)實(shí)現(xiàn) 535
9.12.4 驅(qū)動(dòng)模型概述 539
后記 542
展開(kāi)全部
沉浸式剖析OpenHarmony源代碼:基于LTS 3.0版本 作者簡(jiǎn)介
梁開(kāi)祝,畢業(yè)于四川大學(xué)計(jì)算機(jī)學(xué)院計(jì)算機(jī)科學(xué)與技術(shù)專(zhuān)業(yè),擅長(zhǎng)Linux底層驅(qū)動(dòng)開(kāi)發(fā)、音視頻處理芯片驅(qū)動(dòng)開(kāi)發(fā)、HDMI/HDCP領(lǐng)域的驅(qū)動(dòng)開(kāi)發(fā)等技術(shù)。曾在OPPO公司藍(lán)光事業(yè)部擔(dān)任高級(jí)驅(qū)動(dòng)開(kāi)發(fā)工程師,并全程參與了OPPO全系列藍(lán)光播放器的研發(fā)工作。后來(lái)因工作調(diào)整,在內(nèi)部轉(zhuǎn)崗到手機(jī)研發(fā)部門(mén),負(fù)責(zé)手機(jī)攝像頭的驅(qū)動(dòng)開(kāi)發(fā)工作。