沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本 版权信息
- ISBN:9787115601384
- 条形码:9787115601384 ; 978-7-115-60138-4
- 装帧:平装-胶订
- 册数:暂无
- 重量:暂无
- 所属分类:>
沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本 本书特色
1)深度解析,了解更深入:
本书与市面上已有的HarmonyOS/OpenHarmony应用开发的图书不同,本书侧重于OpenHarmony系统分析和设备驱动开发,是一本深度剖析OpenHarmony运行机制的技术图书。
2)内容丰富,多方位讲解:
以OpenHarmony 3.0版本为基础,从OpenHarmony的开发环境搭建、编译流程、系统启动流程等基础部分开始介绍,逐步深入到源代码层面,对OpenHarmony的核心模块和框架实现展开细致入微的分析和解读。
3)多种资源,学习更简单:
为了降低读者的学习难度,本书以在线资源的方式,帮助读者快速了解相关内容
本书适合系统开发工程师、设备驱动开发工程师和希望深入了解OpenHarmony内部运行机制的技术从业人员阅读。
随书赠送资源:
1)码云资源仓库
与本书相关的示例代码、日志文档、流程图、表和说明文档等资源
2)博客专栏文章
51CTO与华为HarmonyOS官方共建的开源基础软件社区,是开发者学习和讨OpenHarmony的一个很好的平台。我在社区上开设了“鸿蒙系统学习笔记”技术专栏
本书的勘误或未来作者对OpenHarmony的学习总结,会在这个专栏上持续更新
作为一种新兴的开源操作系统,OpenHarmony在技术上具有前瞻性,但同时也存在生态不健全的问题。这一点对早期的开发者来说并不友好,他们在探索研究OpenHarmony时,需要面对技术架构变化、基础能力不完善等一系列问题。当我看到有开发者将其研究成果集结成册,且内容形成了较为完整的体系时,忍不住要推荐一下,并希望这本书能够扫清广大OpenHarmony开发者的障碍。开祝编写的这本OpenHarmony源代码剖析的图书,对OpenHarmony的技术架构和运行机制进行了透彻的分析与介绍,相信这本书能够为广大的开发者扫清OpenHarmony的学习障碍。
——51CTO VP & 鸿蒙技术社区创始人 宋佳宸
梁开祝老师是51CTO OpenHarmony技术社区的宝藏男孩,他在社区发布的OpenHarmony系统解析的文章常常占据社区榜首。梁老师写作的这本书很好地体现了他深厚的技术功底和良好的文笔表达。本书不但抽丝剥茧般地清晰阐释了OpenHarmony的技术,而且行文质量也无可挑剔。相信本书一定能够给读者带来深度的技术启发和优秀的阅读体验。强烈推荐!
——51CTO OpenHarmony技术社区内容主管 杨文浩
本书是梁开祝老师花费一年多的时间和精力,深度剖析OpenHarmony开源代码的智慧结晶。本书对OpenHarmony的源码实现进行了深度分析,值得广大开发者参考学习。OpenHarmony从2020年9月开源以来,社区已累计19.1K Star,24.5K Fork,并有20+开发板通过兼容性认证。未来希望能有更多像梁老师这样的开发者参与到OpenHarmony社区中,一起打造良好的开发生态,让OpenHarmony能成为万物互联时代的新数字基座。
——开放原子OpenHarmony项目导师 刘果
学习鸿蒙的推荐方式就是把自己的经验和鸿蒙的知识融合在一起,并有所升华。梁开祝是有丰富经验的资深开发者,他眼中的鸿蒙一定能让很多开发者有更深入的理解。
——深鸿会发起人 李传钊
沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本 内容简介
OpenHarmony是由开放原子开源基金会孵化及运营的一个开源项目,是一款由全球开发者共建的开源分布式操作系统。从推出之日至今,OpenHarmony的发展愈加迅速,生态建设愈加成熟,已经成为全球智能终端操作系统领域不可忽视的新生开源力量。
《沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本》以OpenHarmony LTS 3.0版本的代码为基础,从OpenHarmony的系统简介、开发环境搭建、编译流程、系统启动流程等开始讲解,然后逐渐深入到代码层面,对OpenHarmony中的各个子系统(主要是分布式任务调度子系统、分布式通信子系统、驱动子系统)的核心模块和框架的实现展开细致入微的分析与解读。本书还提供了相应的示例程序、详尽的日志、相关的流程图和数据结构关系图等,旨在为开发者深入地理解OpenHarmony中的关键技术和驱动框架,提供良好的帮助和参考。
《沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本》适合系统开发工程师、设备驱动开发工程师阅读,也适合对OpenHarmony系统底层运行机制感兴趣的开发者阅读。
沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本 目录
第 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
展开全部
沉浸式剖析OpenHarmony源代码:基于LTS 3.0版本 作者简介
梁开祝,毕业于四川大学计算机学院计算机科学与技术专业,擅长Linux底层驱动开发、音视频处理芯片驱动开发、HDMI/HDCP领域的驱动开发等技术。曾在OPPO公司蓝光事业部担任高级驱动开发工程师,并全程参与了OPPO全系列蓝光播放器的研发工作。后来因工作调整,在内部转岗到手机研发部门,负责手机摄像头的驱动开发工作。