热门关键字:  听力密码  单词密码  新概念美语  巧用听写练听力  零起点

深入浅出OpenHarmony——架构、内核、驱动及应用开发全栈

中国水利水电出版社
    【作 者】李传钊 著 【I S B N 】978-7-5170-9747-1 【责任编辑】王开云 【适用读者群】科技 【出版时间】2021-07-10 【开 本】16开 【装帧信息】平装(光膜) 【版 次】第1版第1次印刷 【页 数】304 【千字数】455 【印 张】19 【定 价】88 【丛 书】暂无分类 【备注信息】
图书详情

    本书是由华为资深高级软件工程师、首位HarmonyOS HDE(Huawei Developer Expert)李传钊老师亲自编写的OpenHarmony操作系统技术图书。

    本书从OpenHarmony操作系统的设计目标与设计思路开始,由表及里、深入浅出地讲解了OpenHarmony操作系统的架构、内核、驱动及应用开发基础与实战的全栈技术内容。在实战部分,从开发环境的安装配置开始,分别讲解了南向开发、北向开发的基本过程及实战案例。本书的英文版已在翻译之中,华为已将其作为面向全球推荐的OpenHarmony操作系统的官方技术教程之一。

    本书可作为OpenHarmony操作系统开发人员、技术爱好者的自学或参考资料,也可作为高校相关专业的教材。

    从架构到内核,从驱动到应用深入浅出

    从基础到实战,从示例到综合,无缝衔接

    致敬华为

    本书是一部关于OpenHarmony操作系统的技术类书籍,但是在全书的开始,笔者希望加入一些与技术关系不那么直接的内容,这些内容对我们理解OpenHarmony所采用的技术方案以及发展方向至关重要。

    1.大时代

    当前,世界正经历着第四次产业革命。与以往三次产业革命不同,这次革命以信息技术为主导,但又渗入生产生活的方方面面,进一步重构社会生产力和生产关系。

    在这次产业革命当中,以5G为主的通信技术,将终端通信速度从M时代过渡到G时代,连接时延缩短到毫秒级。在这次产业革命当中,AI将起到无可替代的作用,人与机器的关系将被重塑,人与机器的编程接口将彻底改变。在这次产业革命当中,以云和大数据为主要特征的数据存储技术将得到全面普及,数据将成为全社会的生产要素之一。在这次产业革命当中,以区块链为代表的交易技术,可能会对商业逻辑进行彻底的颠覆,人们将拥有新的建立信任的方式。

    这些深刻的变化是同时发生的,国与国,政府与政府,大型机构与大型机构之间的关系,可能会因此发生根本性的变化。在某种意义上,我们正生活在人类历史上少有的大时代。

    2.中国面临的挑战

    对于中国而言,深入参与甚至是主导这次产业革命已经是定局。我们不再是旁观者,这是第四次产业革命对于我们来说最大的不同。

    从技术实力上讲,经过长时间的高速发展,我们国家在很多领域已经做到了世界先进水平,甚至在部分领域做到了领先。我们拥有了非常庞大的IT技术队伍,人员的数量和质量都是全世界首屈一指的。硬件领域,我们国家已经是全世界电子产品的设计和制造中心,我国已经是全世界最大的智能手机和个人电脑生产国。但在一些核心部件如CPU、内存、闪存等方面,还与世界最高水平存在明显的差距,甚至有些差距并没有逐年缩小。软件领域,我们的移动支付以及即时消息系统,都是全世界使用人数最多的,体验也是最优的。但一直以来,软件技术皇冠上的四颗明珠——操作系统、数据库、编译器和编程语言,还一直没有完成突破。通信领域,以华为为首的中国通信制造企业大军,已经横扫了整个世界。尤其是在5G领域,我们已经成为标准的核心贡献者,缺少中国企业参与的5G标准已经不可想象。

    以美国为首的西方社会已经意识到这一现实,因此采取了各种手段进行贸易及技术保护,如利用控制技术输出、政府干预、散布中国企业信息安全谣言等非正常手段对中国企业进行打压。

    3.发展之路

    借助第四次工业革命,实现对世界领先水平的整体追赶至是超越,应该是所有IT从业人员的使命和机遇。往前走,已经不能再满足于模仿与集成,必须实现独立自主研发。而且单个器件或者单个系统的自主研发也不足够,经常存在被卡脖子的风险。所以如何打造一整套的、完整的国产自研产业链,已经不是一个选择题,而是一个必答题。

    自研也并非闭门造车的研发,技术永远要与市场接轨才具有现实生命力。因此,如何整合国内所有的研发资源,包括大学、企业、民间资源,打造优秀的软、硬件产品,面向国内日益成长的庞大消费市场,推出用户体验优秀的产品,形成繁荣的产业链,是一个值得深入探讨的话题。

    4.向华为致敬

    华为一直是一家以技术立命的企业,公司研发投入持续超过年收入的10%。华为的研发经过多年的积累,已经在一些领域达到了世界领先的水平,进入了无人区,开始引领发展潮流,比如在5G领域,绕开华为发展5G在事实上是不可能的。华为于2010年前后开始发展智能手机产品,是第一批采用Android的手机厂商。从2012年起,华为开始逐步建立完整的技术平台,包括海思麒麟系列芯片。至2019年,华为手机历史性地占据了全球出货量第二的市场地位。

    就在此时,华为遭到了美国政府的制裁。尽管华为并不愿意,但她成了贸易战的焦点,也成了全世界的焦点。其中对华为手机打击最大的,就是谷歌公司拒绝对华为授权GMS,没有GMS支持的华为手机,无法再为国外用户提供常用的一系列应用,其他非GMS应用也因为无法采用谷歌登录而无法用在华为手机上,这直接导致华为手机在海外的销售陷入了彻底的困境。更为严重的是,2020年5月16日,美国政府商务部对华为实施了更为严格的禁令,禁止一切使用美国技术和美国软件的芯片加工企业,如台积电向华为供货,这直接导致了华为手机无芯片可用。美国对华为所实施的制裁可以用下面一张图来汇总:

    毫不夸张地说,同样的制裁换到其他的企业身上,可能会导致企业一蹶不振,但华为顽强地面对制裁,奋发图强,补齐自己的短板、漏洞,一个个备胎计划都逐步启用,确保了业务的连续性。

    5.OpenHarmony与HarmonyOS

    本书所要介绍的OpenHarmony及其华为发行版HarmonyOS操作系统,就是华为面对谷歌的GMS禁用,以及潜在的操作系统“断供”所推出的至关重要的一个平台。

    OpenHarmony由华为主导研发,后来作为开源代码捐赠给了开放原子基金会。OpenHarmony包含了华为十余年来对手机操作系统的研究与开发积累;包含了华为对未来的万物互联的新时代的思考;包含了华为对操作系统相关的新技术的探索。而华为基于OpenHarmony开发的HarmonyOS,作为一个企业发行版,将成为华为手机等产品从今以后的唯一操作系统,可以说是华为在消费者产品领域未来十到二十年内的核心平台。

    OpenHarmony不仅对于华为有着重要的意义,也是华为对中国软件产业的杰出贡献。OpenHarmony可能很快就是现网装机量最大的国产操作系统。华为的手机、电脑、电视、可穿戴等消费产品,为OpenHarmony提供了天生的生态圈;OpenHarmony的百万代码级开源毫无疑问是中国开源软件史上的一件大事;围绕OpenHarmony将聚集起中国一大批优秀的开发人员,为中国软件业培养大量的人才。

    6.本书的局限

    编写本书最大的挑战在于,OpenHarmony是一个不断发展变化的系统,可能每个月都有新的特性开发出来,每个月都有新的发展动向。而一本书只能根据下笔之时的状态来写作,这是一个无法回避的现实问题。因此,当您拿到这本书时会发现,OpenHarmony的最新版本可能包含了一些本书尚未涉及的部分内容,尽管这对已有内容的学习基本不会有影响,但在此我还是需向您表示歉意。

    后续当OpenHarmony进一步开源或HarmonyOS手机版本进一步演进之时,我们将以合适的形式对相关内容进行补充并分享给大家。

    7.特别感谢

    本书在编写过程中,得到了深鸿会社区的广泛支持,尤其是候鹏飞和杨泽霖两位。本书的LiteOS-m模拟器章节参考了候鹏飞的相关分享内容,HDF章节中的温湿度传感器驱动参考了杨泽霖的代码库。在此向二位表示特别的感谢。

    作者

    2021年3月

    致敬华为
    第1篇 OpenHarmony操作系统基础

    第1章 OpenHarmony的设计目标 2
    1.1 为5G而准备 2
    1.2 覆盖广泛的硬件产品 2
    1.3 必须要解决的问题 3
    1.4 竞争对手 4
    第2章 整体设计思路及技术特点 5
    2.1 可裁剪 5
    2.2 虚拟超级终端 6
    2.3 易开发 7
    第3章 OpenHarmony的功能框架 9
    3.1 芯片适配 10
    3.2 内核层 10
    3.3 驱动程序框架 10
    3.4 OpenHarmony系统服务 10
    3.5 框架层 10
    3.6 编译构建与IDE系统 11
    第4章 上手OpenHarmony 12
    4.1 OpenHarmony系统的基本构成 12
    4.2 OpenHarmony Shell 15
    4.3 启动图形界面 28
    4.4 开源代码项目 29
    4.5 编译构建体系 31
    4.5.1 所用到的工具 31
    4.5.2 系列Python脚本的作用 32
    4.5.3 编译器 34
    第5章 内核介绍 36
    5.1 多内核架构 36
    5.2 LiteOS-m 37
    5.3 LiteOS-a 38
    5.4 LiteOS-m和LiteOS-a的对比 38
    第6章 OpenHarmony内核详细解读 40
    6.1 硬件与处理器架构 40
    6.1.1 处理器架构 40
    6.1.2 异常 41
    6.1.3 中断 42
    6.1.4 多核处理 43
    6.2 基础数据结构 44
    6.2.1 双向链表 44
    6.2.2 排序双向链表 46
    6.3 启动流程 46
    6.4 时间管理 47
    6.4.1 系统Tick 47
    6.4.2 软件定时器 48
    6.5 任务调度 49
    6.5.1 LiteOS-m与LiteOS-a的调度对比 49
    6.5.2 TCB/PCB结构定义 50
    6.5.3 进程及Task创建 54
    6.5.4 Task状态机 64
    6.5.5 调度策略 65
    6.5.6 调度的时机 68
    6.5.7 Task切换的实现 69
    6.6 进程间通信 74
    6.6.1 事件(event) 74
    6.6.2 互斥量(mutex) 76
    6.6.3 队列(queue) 79
    6.6.4 信号灯(semaphore) 79
    6.6.5 快速锁(futex) 81
    6.6.6 自旋锁(spinlock) 81
    6.6.7 信号(signal) 83
    6.6.8 LiteIPC 85
    6.7 内存管理 89
    6.7.1 LiteOS-m的内存管理 90
    6.7.2 LiteOS-a的内存管理 91
    6.7.3 虚拟内存 92
    6.7.4 地址规划 97
    6.8 内核态与用户态 98
    6.8.1 内核态与用户态的区别 98
    6.8.2 用户态切换到内核态 99
    6.8.3 内核态访问用户态数据 102
    6.9 标准库 103
    6.9.1 CMSIS标准库 103
    6.9.2 Libc标准库 106
    6.10 文件系统 110
    6.10.1 VFS 110
    6.10.2 NFS 118
    6.10.3 RAMFS 118
    6.11 网络连接 119
    6.12 OTA 120
    6.12.1 OpenHarmony升级包制作工具 121
    6.12.2 OTA函数 121
    第7章 HDF驱动程序框架 123
    7.1 基本概念 124
    7.2 HDF编程特点 125
    7.2.1 HdfObject 135
    7.2.2 IDeviceIoService 136
    7.2.3 HdfDriverEntry 136
    7.3 驱动代码编译链接 136
    7.4 驱动程序配置文件HCS 137
    7.4.1 树型结构 138
    7.4.2 保留字与操作符 139
    7.4.3 数值类型 139
    7.4.4 重载操作 140
    7.4.5 文件引用 142
    7.4.6 HC-GEN编译器 142
    7.5 加载驱动程序 143
    7.6 注册驱动服务 145
    7.7 内核抽象层OSAL 146
    7.8 注册VFS 147
    7.9 用户态使用驱动程序HDI 147
    第8章 服务框架 151
    8.1 基础数据结构 152
    8.1.1 向量(Vector) 152
    8.1.2 服务(Service) 153
    8.1.3 特性(Feature) 154
    8.1.4 IUnknown接口 154
    8.1.5 标识(Identity) 156
    8.2 服务框架启动过程 156
    8.3 服务/特性注册与发现 158
    8.3.1 服务/特性注册 159
    8.3.2 服务/特性发现 164
    8.4 异步调用 164
    8.5 跨进程服务/特性调用 165
    8.5.1 跨进程调用的使用 165
    8.5.2 跨进程调用的实现 167
    第9章 用户程序框架 170
    9.1 Ability 170
    9.2 Ability与Task 171
    9.3 Ability与UI 174
    9.4 Ability加载器 175
    9.5 AppSpawn 176
    9.6 Ability管理服务 177
    9.6.1 启动Ability 180
    9.6.2 终止Ability 181
    9.6.3 连接Ability 182
    9.7 Ability管理命令行工具 183
    9.7.1 嵌入式设备的aa命令 183
    9.7.2 大内核设备的aa命令 183
    第10章 轻量化UI图形栈 185
    10.1 轻量化UI图形子系统的架构 185
    10.2 模块介绍 186
    10.3 图形组件 187
    10.4 配置文件 188
    10.5 图形子系统初始化流程 188
    10.6 输入事件处理 190
    10.7 屏幕设备处理 192
    10.8 窗口管理器 194
    第11章 包管理 195
    11.1 包管理系统架构 195
    11.2 包管理命令行工具 196
    11.2.1 嵌入式设备的bm命令 196
    11.2.2 大内核设备的bm命令 197
    第12章 ACE编程框架 198
    12.1 ACE的整体架构 198
    12.2 如何使用ACE 200
    第13章 OpenHarmony分布式 201
    13.1 分布式操作系统基础概念 201
    13.2 OpenHarmony分布式总体设计思想 203
    13.3 分布式软总线 203
    13.4 分布式文件系统 204
    13.5 分布式数据库 206
    13.6 分布式调度 209
    第14章 OpenHarmony与其他操作系统的对比 212
    14.1 与iOS和安卓的对比 212
    14.2 与其他嵌入式操作系统的对比 213

    第2篇 OpenHarmony编程实践

    第15章 可裁剪的OpenHarmony 216
    15.1 OpenHarmony的可裁剪设计 216
    15.2 内核与驱动 217
    15.3 系统基础服务裁剪 220
    15.4 应用程序框架裁剪 220
    15.5 hpm软件包管理工具 220
    15.5.1 安装hpm 221
    15.5.2 使用hpm 221
    15.5.3 包配置文件 222
    第16章 北向应用开发 226
    16.1 北向IDE 226
    16.1.1 安装DevEco Studio 226
    16.1.2 主界面介绍 229
    16.1.3 工程管理 230
    16.1.4 代码编辑 237
    16.1.5 编译 239
    16.1.6 调试 245
    16.1.7 发布 248
    16.2 JS框架的编程 248
    16.2.1 JS框架的.hml文件编程 248
    16.2.2 JS框架的.css文件编程 250
    16.2.3 JS框架的.js文件编程 250
    16.3 基于Java的编程 251
    16.4 混合编程 251
    16.4.1 ServiceAbility需要完成的工作 253
    16.4.2 JS PageAbility调用的过程 255
    16.5 北向编程实例 256
    第17章 L0-L1南向驱动程序及设备开发 257
    17.1 南向IDE介绍 257
    17.1.1 安装DevEco Device Tool 257
    17.1.2 主界面介绍 258
    17.1.3 工程管理 259
    17.1.4 获取代码 259
    17.1.5 编译构建 260
    17.1.6 烧录 261
    17.1.7 Virtual Box环境配置 262
    17.1.8 HDF驱动代码生成 264
    17.2 南向开发环境搭建 265
    17.3 南向编程实例——驱动程序开发 270
    17.3.1 实现驱动程序 270
    17.3.2 注册驱动 273
    17.3.3 修改HCS配置 273
    17.3.4 加入编译体系 274
    第18章 分布式应用开发 275
    18.1 分布式应用开发的基本概念 275
    18.1.1 面向虚拟超级终端编程 275
    18.1.2 分布式体验设计的基本原则 276
    18.2 手机上的分布式应用开发 276
    18.2.1 应用背景介绍 277
    18.2.2 整体设计 277
    18.2.3 详细代码 277
    第19章 OpenHarmony生态 288
    19.1 OpenHarmony产业链概览 288
    19.2 开源基金组织 291
    19.3 OpenHarmony与HMS的关系 292
    19.3.1 华为生态与OpenHarmony生态 292
    19.3.2 操作系统与SDK 293
    19.4 OpenHarmony设备测试与认证 293






最新评论共有 0 位网友发表了评论
发表评论
评论内容:不能超过250字,需审核,请自觉遵守互联网相关政策法规。
用户名: 密码:
匿名?
注册