沉浸式剖析 OpenHarmony 源代碼:基於 LTS 3.0 版本

梁開祝

  • 出版商: 人民郵電
  • 出版日期: 2022-12-01
  • 定價: $833
  • 售價: 8.5$708
  • 語言: 簡體中文
  • 頁數: 544
  • ISBN: 7115601380
  • ISBN-13: 9787115601384
  • 相關分類: Operating-system
  • 立即出貨 (庫存 < 3)

  • 沉浸式剖析 OpenHarmony 源代碼:基於 LTS 3.0 版本-preview-1
  • 沉浸式剖析 OpenHarmony 源代碼:基於 LTS 3.0 版本-preview-2
沉浸式剖析 OpenHarmony 源代碼:基於 LTS 3.0 版本-preview-1

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

商品描述

OpenHarmony是由開放原子開源基金會孵化及運營的一個開源項目,是一款由全球開發者共建的開源分佈式操作系統。從推出之日至今,OpenHarmony的發展愈加迅速,生態建設愈加成熟,已經成為全球智能終端操作系統領域不可忽視的新生開源力量。

《沉浸式剖析OpenHarmony源代碼:基於LTS 3.0版本》以OpenHarmony LTS 3.0版本的代碼為基礎,從OpenHarmony的系統簡介、開發環境搭建、編譯流程、系統啟動流程等開始講解,然後逐漸深入到代碼層面,對OpenHarmony中的各個子系統(主要是分佈式任務調度子系統、分佈式通信子系統、驅動子系統)的核心模塊和框架的實現展開細致入微的分析與解讀。本書還提供了相應的示例程序、詳盡的日誌、相關的流程圖和數據結構關系圖等,旨在為開發者深入地理解OpenHarmony中的關鍵技術和驅動框架,提供良好的幫助和參考。

《沉浸式剖析OpenHarmony源代碼:基於LTS 3.0版本》適合系統開發工程師、設備驅動開發工程師閱讀,也適合對OpenHarmony系統底層運行機制感興趣的開發者閱讀。

 

作者簡介

梁开祝,毕业于四川大学计算机学院计算机科学与技术专业,擅长Linux底层驱动开发、音视频处理芯片驱动开发、HDMI/HDCP领域的驱动开发等技术。曾在OPPO公司蓝光事业部担任高级驱动开发工程师,并全程参与了OPPO全系列蓝光播放器的研发工作。后来因工作调整,在内部转岗到手机研发部门,负责手机摄像头的驱动开发工作。

目錄大綱

第 1章 系統簡介 1

1.1 發展歷史 1

1.2 技術特性 2

1.3 前景展望 3

第 2章 搭建開發環境 8

2.1 Windows開發環境的搭建 9

2.2 拿來即用的Ubuntu開發環境 12

2.3 Ubuntu開發環境的搭建 12

2.3.1 準備工作 12

2.3.2 修改默認shell 14

2.3.3 安裝依賴工具 15

2.3.4 安裝和配置Python 15

2.3.5 安裝代碼管理工具 17

2.3.6 安裝構建編譯工具鏈 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 遠程登錄Linux虛擬機 25

2.5 獲取代碼 26

2.5.1 代碼分支和版本管理簡介 26

2.5.2 獲取代碼前的準備工作 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 編譯代碼前的準備工作 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 燒錄開發板 51

2.7.1 開發板相關說明 51

2.7.2 燒錄Hi3861開發板 52

2.7.3 燒錄Hi3516開發板 55

2.7.4 燒錄u-boot後的處理 63

第3章 系統架構 67

3.1 系統架構圖 67

3.2 系統目錄結構 70

第4章 構建子系統 74

4.1 GN和Ninja的構建流程 75

4.2 系統的裁剪和配置 81

4.2.1 系統裁剪 81

4.2.2 增刪子系統 86

4.2.3 增刪組件 87

4.2.4 增刪特性 88

4.3 編譯流程分析 89

4.3.1 全編譯流程 89

4.3.2 增量編譯 93

4.3.3 單獨編譯組件和目標 94

4.4 編譯LiteOS_M內核和SDK 95

4.5 編譯LiteOS_A內核和shell 97

4.6 編譯相關的目錄結構 101

4.6.1 小型系統build相關的文件和目錄結構 101

4.6.2 小型系統out相關的文件和目錄結構 102

4.6.3 小型系統rootfs相關的文件和目錄結構 104

4.7 標準系統的編譯流程 105

4.7.1 build和out相關的文件和目錄結構 105

4.7.2 標準系統的編譯流程 108

4.7.3 Linux內核編譯流程 114

4.7.4 單獨編譯部件和模塊 119

第5章 啟動流程 120

5.1 輕量系統(LiteOS_M)的啟動流程 120

5.1.1 第 一階段:BootLoader階段 120

5.1.2 第二階段:匯編語言代碼階段 121

5.1.3 第三階段:C語言代碼階段 122

5.1.4 第四階段:LiteOS SDK啟動階段 123

5.1.5 第五階段:系統框架層啟動階段 124

5.1.6 系統服務的啟動方式 128

5.2 小型系統(LiteOS_A)的啟動流程 132

5.2.1 第 一階段:BootLoader階段 132

5.2.2 第二階段:匯編語言代碼階段 132

5.2.3 第三階段:C語言代碼階段 133

5.2.4 第四階段:系統框架層啟動階段 140

5.2.5 系統服務的啟動方式 142

5.2.6 用戶態根進程的來歷 143

5.3 Linux內核系統的啟動流程 145

第6章 子系統 146

6.1 內核子系統概述 146

6.1.1 LiteOS_M內核概述 146

6.1.2 LiteOS_A內核概述 148

6.1.3 Linux內核概述 149

6.1.4 KAL和OSAL概述 149

6.2 啟動恢復子系統 150

6.2.1 啟動引導組件 152

6.2.2 應用孵化組件 153

6.2.3 服務啟動組件 155

6.2.4 系統屬性組件 155

6.3 公共基礎庫子系統 158

6.4 DFX子系統 162

6.4.1 輕量系統的日誌組件 162

6.4.2 小型系統的日誌組件 174

6.4.3 標準系統的日誌組件 182

6.4.4 日誌組件的比較 188

6.4.5 init進程的日誌 189

6.4.6 驅動框架的日誌 190

6.5 IoT硬件子系統 196

6.5.1 概述和目錄結構 196

6.5.2 設備驅動開發路徑 201

第7章 分佈式任務調度子系統 208

7.1 系統服務框架概述 208

7.2 輕量系統的系統服務框架 214

7.2.1 關鍵結構體的解析 214

7.2.2 系統服務的啟動流程 235

7.2.3 面向服務架構的實現 245

7.3 小型系統的系統服務框架 248

7.3.1 線程/進程及其通信模型 249

7.3.2 系統服務的啟動流程 257

7.3.3 系統服務註冊EP的流程 264

7.3.4 服務管理者的啟動流程 279

7.3.5 客戶端EP與samgr EP的IPC交互 287

7.3.6 客戶端EP與客戶端EP的IPC交互 303

第8章 分佈式通信子系統 315

8.1 分佈式通信子系統概述 315

8.1.1 概念簡介 315

8.1.2 依賴關系 316

8.2 WiFi模塊概述 318

8.2.1 輕量系統的WiFi模塊 318

8.2.2 小型系統的WiFi模塊 323

8.2.3 標準系統的WiFi模塊 327

8.2.4 編譯和部署WiFi驅動 327

8.3 軟總線組件的目錄結構 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 軟總線組件的適配模塊 344

8.5 軟總線組件的通用模塊 344

8.6 軟總線組件的sdk模塊 347

8.6.1 sdk的編譯和使用 348

8.6.2 sdk的框架模塊:frame 350

8.6.3 sdk的組網模塊:bus_center 354

8.6.4 sdk的發現模塊:discovery 355

8.6.5 sdk的傳輸模塊:transmission 356

8.7 軟總線組件的核心模塊 359

8.7.1 softbus_server的啟動流程 360

8.7.2 核心的框架模塊:frame 366

第9章 驅動子系統 371

9.1 驅動框架概述 371

9.2 通用的驅動示例程序 374

9.2.1 硬件平臺和原理圖 375

9.2.2 代碼結構和編譯配置 377

9.2.3 通過執行程序來驗證效果 385

9.3 驅動程序的開發要點 386

9.3.1 用戶態程序與內核態驅動的交互 386

9.3.2 驅動配置信息的管理 386

9.3.3 驅動程序的實現 399

9.4 驅動框架的代碼結構 404

9.5 驅動框架的編譯流程 409

9.5.1 在LiteOS_A內核部署驅動框架 409

9.5.2 在Linux內核部署驅動框架 411

9.5.3 在小型系統的用戶空間部署驅動框架 414

9.5.4 在標準系統的用戶空間部署驅動框架 417

9.6 驅動框架的關鍵結構體 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 驅動框架的啟動流程 435

9.7.1 驅動框架的啟動入口 436

9.7.2 啟動DeviceManager 443

9.7.3 啟動HostList的每個Host 448

9.7.4 啟動DevHostService 451

9.7.5 啟動Host的每個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 用戶態程序與內核態驅動的交互 470

9.8.1 代碼部署和編譯配置 470

9.8.2 序列化數據的交互 473

9.8.3 HdfIoService接口 476

9.8.4 消息機制的實現 477

9.9 在用戶空間部署驅動框架 488

9.9.1 開源許可證的影響 488

9.9.2 小型系統的用戶態基礎驅動能力 490

9.9.3 標準系統的用戶態驅動框架概述 493

9.10 用戶態驅動框架的hdf_devmgr進程 496

9.10.1 啟動hdf_devmgr進程 497

9.10.2 啟動DevmgrServiceStub服務 501

9.10.3 啟動HostList的每個Host 506

9.10.4 SA5001的IPC消息處理函數 509

9.10.5 SA5002的IPC消息處理函數 511

9.11 用戶態驅動框架的hdf_devhost進程 515

9.11.1 啟動hdf_devhost進程 515

9.11.2 Host的IPC消息處理函數 521

9.11.3 Host的進程內消息處理函數 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消息處理函數 532

9.12 HDI和驅動模型 533

9.12.1 HDI概述 533

9.12.2 HDI的聲明和定義 534

9.12.3 HDI的WLAN驅動實現 535

9.12.4 驅動模型概述 539

後記 542