鸿蒙造物者之路 01 · 鸿蒙初开
续写章节|沿用「造物者」系列的武侠讲解体,面向电子信息 / 嵌入式方向的新手
=================前情提要===============
实训楼三楼最里面那间实验室,门牌上写着「嵌入式联合实验室」,但里面常年只有一排落灰的 51 开发板和一台风扇嗡嗡响的老台式机。
我叫阿粽,电子信息工程技术专业,专升本上来的。上专科那会儿跟着老师焊过电路板、点过流水灯、调过智能小车的循迹,能用 C 语言让一块 STM32 把舵机转起来。我一直觉得自己算"会点东西"的人。
直到九月的某天下午,我在这间实验室里,第一次听见"鸿蒙"这两个字。
========================================
这一章你会得到什么
🎯 学完这一章,你应该能:
- ☐ 分清 OpenHarmony / HarmonyOS / HarmonyOS NEXT 这三个名字,以后不再混淆
- ☐ 能画出鸿蒙的四层架构,说出每一层负责什么
- ☐ 记住轻量 / 小型 / 标准三种系统形态各对应什么设备和内核
- ☐ 判断自己该走南向(硬件)还是北向(应用),或者两条都走
- ☐ 能向别人解释:鸿蒙到底解决了什么问题
**🧰 需要准备:**什么都不用准备。纸和笔就够了,这一章不动手。
**⏱ 预计用时:**约 40 分钟,纯理解
📊 难度:★☆☆☆☆ 入门,像读小说
一、一个让我愣住的问题
⚠️ 先吃颗定心丸:这一章是全书"名词密度"最高的一章。
好消息是——这一章不要求你记住任何细节,只要建立一个大概的印象就行。 后面每一章都会把这里的东西重新展开讲一遍。
如果一次读着累,分两口吃:
- 第一口:第一到第三节(鸿蒙是什么、为什么需要有它)
- 第二口:第四到第六节(南北向分工、架构四层、三种形态)
读完这一章,你只需要能回答一个问题:我要学的这个东西,到底是个啥。
那天我在焊一块转接板,烙铁刚沾上焊盘,身后有人说话。
“同学,你这块板子,要是想让它连上手机,你会怎么做?”
我回头。一个五十岁上下的男人站在门口,手里拎着一个帆布工具包,包上印着某个我认不出来的芯片 logo。他穿着件洗得发白的工装外套,袖口卷到手肘,露出一截被烙铁烫过的小臂。
后来我知道他姓陈,实验室的常驻老师都叫他老陈。早年在深圳做路由器固件,后来做 IoT 模组,再后来不知道为什么回了学校,在这间落灰的实验室里待着。
我老实回答:“加个蓝牙模块,手机写个 App 连上去。”
“那要是你还想让它跟宿舍的台灯联动呢?灯是另一个厂家的,协议不开放。”
“……那就逆向它的协议?或者换个能配网的灯。”
“要是你还有个手环,想让手环靠近时灯自己亮呢?”
我卡住了。烙铁停在半空,锡球滚到了桌面上。
"三个设备,三个厂家,三种协议,三个 App。"老陈走进来,拉了把椅子坐下,“你现在做的,是二十年前的做法——每个设备一个 App,每个 App 一个孤岛。”
他把我的转接板拨到一边,从包里掏出一块巴掌大的开发板放在桌上。板子上印着一行小字,我看清了:Hi3861。
“如果我说,有一种系统,可以让这三个东西说同一种语言,让开发板能直接调用手机的屏幕、让手机能直接用开发板的传感器、让手环靠近时灯自己就亮——你会不会觉得省事很多?”
我看着那块板子:“那得所有厂家都用同一套东西吧。”
"对。"老陈点头,“所以它不是某一个 App 的技术,是一套系统。”
“什么系统?”
“鸿蒙。”
我愣了两秒,然后脱口而出:“那个……不是手机系统吗?跟我这块板子有什么关系?”
老陈笑了。
“这就是我今天要跟你讲的第一件事——你听到的’鸿蒙’,和你以为的’鸿蒙’,大概率不是同一个东西。”
二、三个名字,先分清楚
老陈从包里抽出一支记号笔,在那块白板的正中间画了一条竖线,把板面分成两半。
“市面上你听到’鸿蒙’,其实混着三个名字。分不清这三个,后面学的全是糊涂账。”
他在左边写下三个词:
OpenHarmony ← 开源项目(根)
HarmonyOS ← 华为的商业发行版(果)
HarmonyOS NEXT ← 纯血版本(新的果)
2.1 OpenHarmony:树根
“OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目。”
老陈敲了敲这个词:“记住’开放原子开源基金会’这几个字。2020 年,华为把自己那套系统的基础能力代码捐给了这个基金会,从此这套代码不姓华,姓’开源’。任何人、任何公司都可以拿它去做产品,不用给华为付钱,也不用华为点头。”
“所以……它是个像 Linux 那样的东西?”
"比 Linux 更狠一点。"老陈说,“Linux 只是个内核,你拿到 Linux 还得自己拼上桌面环境、网络协议栈、图形库,才能做出一个能用的系统。而 OpenHarmony 拿到手,是一整套——内核、驱动框架、系统服务、图形框架、应用框架,从几 KB 内存的门锁到几个 G 内存的手机,它都给你配齐了。”
他在白板上画了一棵树:“你现在能买到的那些写着’搭载 OpenHarmony’的门禁机、温控面板、工控屏,跑的都是它。它们跟华为手机没有半毛钱关系,厂商自己拿源码编译的。”
2.2 HarmonyOS:果子
“那 HarmonyOS 呢?”
"HarmonyOS 是华为在 OpenHarmony 之上做的商业发行版。"老陈在右边画了一个圈,用箭头连到左边的根上,“根是开源的,但华为在根上头,加了一大堆自己的东西——HMS 服务、华为帐号、应用市场、推送、地图、支付……这些是闭源的,是华为的商业资产。”
“所以华为手机上的鸿蒙,不等于 OpenHarmony?”
"是’基于’,不是’等于’。"老陈强调,“就像 Android 和 AOSP 的关系。AOSP 是开源的,小米拿到 AOSP 加上 MIUI 是 MIUI 系统;华为拿到 OpenHarmony 加上 HMS 和一堆闭源能力,才是你在手机上看到的 HarmonyOS。”
我记下这句话。
2.3 HarmonyOS NEXT:断了奶的那个
"第三个最狠。"老陈把"HarmonyOS NEXT"圈了个红框。
“HarmonyOS NEXT,现在正式叫 HarmonyOS 5,也就是大家嘴里的’纯血鸿蒙’。它把 AOSP 的代码全删了。”
“全删了?”
"一个不剩。"老陈说,“以前的 HarmonyOS 为了能跑安卓 App,底层还留着 AOSP 那一套代码,所以你说它是’安卓套壳’虽然难听,但技术上不算全错——它确实能跑 APK。NEXT 不一样,它不支持 APK,只跑自己的 HAP 包。”
“那微信怎么办?”
"所以从 2023 年到 2025 年,华为一直在干一件事:拉着全国的 App 厂商重写鸿蒙原生应用。"老陈放下笔,“现在微信、支付宝、抖音、淘宝都有自己的鸿蒙原生版,是重新写的,不是转译的。”
他顿了顿:“你知道这件事对你们这行意味着什么吗?”
我想了想:“……意味着会鸿蒙的人变值钱了?”
"意味着现在这个时间点,是这十年里学鸿蒙性价比最高的时候。"老陈说,“一个新生态刚断奶、原生应用还没写全、会的人还不多——这个窗口期就这两三年。等哪天满大街都是鸿蒙程序员,你再进来,就是红海了。”
2.4 三者关系速查
| 名字 | 性质 | 谁在维护 | 能不能免费用 | 关键特征 |
|---|---|---|---|---|
| OpenHarmony | 开源操作系统项目 | 开放原子开源基金会 | 能,完全开源 | 不含华为私有服务,可自行商用 |
| HarmonyOS | 商业发行版 | 华为 | 手机预装 | 基于 OpenHarmony + HMS 等闭源能力 |
| HarmonyOS NEXT(5) | 纯血商业发行版 | 华为 | 手机 / 平板 / 车机 | 移除 AOSP,不兼容 APK,只跑 HAP |
一句话记住:OpenHarmony 是教材,HarmonyOS 是华为按教材写的作业,NEXT 是华为把抄别人那段全撕了重写的一版。
三、为什么非得有鸿蒙
"老师,"我有点不服,“安卓和 Linux 用得好好的,干嘛非要另起炉灶做一个系统?这不折腾吗?”
老陈没直接回答,他问我:“你宿舍有几台需要联网的东西?”
“手机、电脑、台灯、音箱、还有个蓝牙耳机。”
“几个 App 控制?”
我想了想:“……五个。台灯一个,音箱一个,耳机不用 App。”
"五个设备五个 App,每个 App 都要注册、都要配网、都要更新。"老陈说,“这就是现在物联网最真实的样子——碎片化到了荒唐的地步。”
他在白板上写下数字:
全球 IoT 设备数量: 数百亿级
主流 IoT 操作系统: 几十种
常见 IoT 通信协议: Wi-Fi / 蓝牙 / ZigBee / Thread / Matter / 私有 2.4G ...
结果: 一个设备一套系统、一套协议、一个 App
3.1 安卓扛不动这件事
“有人说,那把安卓塞进这些小设备不就行了?”
"塞不进去,也塞不起。"老陈说,“安卓是为手机设计的,它有几斤几两你猜猜——一个最小的 Android 系统镜像,几百 MB 起步,运行时要吃掉几百 MB 内存。你让一个内存只有 128 KB 的温感器跑安卓?它连开机动画都放不完就没电了。”
“那用 RTOS 呢?FreeRTOS、RT-Thread 那些?”
"能跑,但它们是单机思维。"老陈说,“RTOS 解决的是’这个设备自己怎么把活干好’,它压根没想过’这个设备怎么跟别的设备协作’。你想让门锁告诉空调’主人回来了’,对不起,RTOS 不提供这套能力,你自己写网络协议、自己搞设备发现、自己做安全认证——写到最后你会发现,你在重复造轮子。”
他转过身看着我:
“鸿蒙想解决的问题,不是’怎么让一个设备跑起来’,而是’怎么让一堆设备像一个设备那样工作’。”
3.2 鸿蒙的三板斧
“具体怎么做?三招。”
老陈竖起三根手指。
第一招:一套系统,弹性部署。
“同一套代码,编译的时候你挑一挑部件,能编出跑在 128 KB 内存 MCU 上的迷你版,也能编出跑在 8 GB 内存手机上的完整版。不是写两套系统,是一套系统按需伸缩。”
第二招:一次开发,多端部署。
“你写一个应用,框架层自动帮你适配手机、平板、车机、智慧屏、手表。不用每个端写一遍。”
第三招:硬件互助,资源共享(这条最狠)。
"这是鸿蒙真正区别于别的系统的地方。"老陈眼睛亮了一下,“简单说——设备之间能互相’借’硬件。”
他举了个例子:
“你的手表要扫码,摄像头太小拍不清。鸿蒙可以让手表直接调用手机的摄像头,拍完照片传回来。对手表上的应用来说,它就是在调自己的摄像头,一行代码都不用改。”
“……这怎么做到的?”
"分布式软总线。"老陈在白板上重重写下这五个字,“后面我会花一整章跟你讲。这是鸿蒙的命根子,也是你以后面试最值钱的那部分知识。”
四、一体两面:南向和北向
"好了,现在说跟你最相关的部分。"老陈把白板翻过来,“鸿蒙这个东西,学习路线是劈成两半的。”
他在白板上画了一道横线,上半部分写"北",下半部分写"南"。
┌─────────────────────────────┐
│ 北向 · 应用开发 │
│ ArkTS / ArkUI / Ability │
│ 面向:手机、平板、车机 App │
└─────────────────────────────┘
┌─────────────────────────────┐
│ 南向 · 设备开发 │
│ C/C++ / 驱动 / HDF │
│ 面向:开发板、模组、终端 │
└─────────────────────────────┘
“南向,指的是往硬件那边走。写驱动、配外设、调传感器、搞编译烧录。用的是 C/C++,跟你现在玩的单片机是一个路数,只是系统换成 OpenHarmony。”
“北向,指的是往用户那边走。写界面、写业务、写 App。用的是 ArkTS,华为自己搞的语言。”
我本能地想选一个:“那我是不是该选一头?”
"你要是想在这行混得好,两头都得会。"老陈的话很直接。
“为什么?”
"因为纯北向的人,满大街都是——培训班三个月能出一堆会写 ArkTS 页面的。但既懂硬件又懂鸿蒙的人,市场上一将难求。"他敲了敲桌子,“你想想,一家做智能门锁的公司,要招一个能给他们的鸿蒙模组写驱动、又能顺手把配套 App 写出来的人——这种人他愿意开多少钱?”
我咽了口唾沫。
"所以这本书的路子,是先南后北,最后打通。"老陈说,“先让你用最熟悉的方式入手——点亮一盏灯;等你明白了系统是怎么跟硬件说话的,再往上走写界面;最后把两头接起来,做一个真正的软硬结合项目。”
他看着我:“你这个专业背景,走这条路是最顺的。别浪费了你会焊板子的手。”
五、鸿蒙的身体:技术架构四层
"在动手之前,你得先看清它的骨架。"老陈把白板擦干净,从下往上画了四个大框。
┌──────────────────────────────────────────────┐
│ 第四层 · 应用层 │
│ 系统应用 | 桌面 | 设置 | 第三方应用 │
├──────────────────────────────────────────────┤
│ 第三层 · 框架层 │
│ Ability 框架 | ArkUI 框架 | 方舟运行时 │
├──────────────────────────────────────────────┤
│ 第二层 · 系统服务层 │
│ 分布式软总线 | 分布式数据 | 分布式任务调度 │
│ 图形 | 多媒体 | 安全 | AI | 电源 | 位置 ... │
├──────────────────────────────────────────────┤
│ 第一层 · 内核层 │
│ LiteOS-M | LiteOS-A | Linux | HDF 驱动框架 │
└──────────────────────────────────────────────┘
↑
硬件(芯片 / 开发板 / 模组)
5.1 内核层:地基
“最底下这层,是内核层,分两半。”
“一半是内核子系统——LiteOS-M、LiteOS-A、Linux,三选一或者组合,看你设备多大。”
"另一半是驱动子系统,核心是 HDF(Hardware Driver Foundation,硬件驱动框架)。"老陈特意把 HDF 三个字母写大,“这是鸿蒙南向最要紧的东西,后面一整章讲它。先记一句:HDF 让驱动可以一次开发、跨内核复用。”
“跨内核复用?”
"对。你写的一个驱动,跑在 LiteOS-M 上能用,换到 Linux 内核上也能用。"老陈说,“传统做法里,不同内核驱动是完全不同的写法,换内核等于重写。HDF 把它们统一了。”
5.2 系统服务层:五脏六腑
“往上一层是系统服务层,这是鸿蒙最’重’的一层,分成四组:”
| 子系统集 | 干什么 | 关键成员 |
|---|---|---|
| 系统基本能力 | 分布式底座与运行时 | 分布式软总线、分布式数据管理、分布式任务调度、方舟多语言运行时、公共基础库、多模输入、图形、安全、AI |
| 基础软件服务 | 通用基础能力 | 事件通知、电话、多媒体、DFX(可观测性)、MSDP 等 |
| 增强软件服务 | 面向特定设备的增强能力 | 智慧屏专有业务、穿戴专有业务、IoT 专有业务等 |
| 硬件服务 | 硬件能力抽象 | 位置服务、生物特征识别、穿戴专有硬件服务、IoT 专有硬件服务 |
“这些名字你现在不用背,混个眼熟就行。但有三样东西,你必须现在就记住它们在这一层——”
老陈圈出三个:
分布式软总线、分布式数据管理、分布式任务调度。
“这仨是鸿蒙’硬件互助’的技术底座。第 09 章整章都是它们。”
5.3 框架层:舞台
“再往上是框架层,你写 App 打交道的就是这层。”
- Ability 框架:应用的基本组成单元与生命周期管理
- ArkUI 框架:声明式 UI 的开发框架(ArkTS 写界面就靠它)
- 方舟多语言运行时(Ark Compiler / ArkTS Runtime):执行 ArkTS、C/C++、JS 代码的运行时
- 多语言框架 API:把系统能力暴露成各种语言能调的接口
"ArkTS 你听过的吧?"老陈问。
“课上讲过一点,说是 TypeScript 改的。”
"ArkTS 是 TypeScript 的超集,但不是自由的 TypeScript——它加了很多静态类型限制。"老陈说,“目的很明确:让编译器在编译期就能确定类型,好直接生成高效的机器码,跳过运行时的类型推演。”
“所以 ArkTS 比 TS 更’死板’?”
“对,死板换性能。这点在第 06 章会让你刻骨铭心。”
5.4 应用层:台前的戏
“最上面是应用层,分系统应用和第三方应用。你写的就是第三方应用。”
“鸿蒙的应用包叫 HAP(Harmony Ability Package)——记住这个名字,它和安卓的 APK 完全不是一回事,第 11 章会细说。”
六、三种身法:系统的三种形态
"最后一件,也是最能体现鸿蒙’弹性部署’的地方。"老陈把白板分成三栏。
“同一套 OpenHarmony 代码,根据设备资源的不同,能编译出三种形态的系统:”
| 系统形态 | 面向处理器 | 内存要求 | 使用内核 | 典型设备 |
|---|---|---|---|---|
| 轻量系统(mini) | MCU,如 Cortex-M、RISC-V 32 位 | 128 KiB 起 | LiteOS-M | 门锁、温感、开关面板、纽扣电池设备 |
| 小型系统(small) | 应用处理器,如 Cortex-A | 1 MiB ~ 128 MiB | LiteOS-A 或 Linux | 摄像头、路由器、智能音箱、车载 T-Box |
| 标准系统(standard) | 应用处理器,如 Cortex-A | 128 MiB 以上 | Linux | 手机、平板、智慧屏、车机 |
"128 KB 到几个 GB,同一套系统。"老陈强调,“你手里那块 Hi3861,跑的就是轻量系统 + LiteOS-M,内存只有 352 KB,但它是完整的 OpenHarmony。”
我有点震惊:“352 KB 能跑操作系统?”
"能跑,还能跑多线程、跑网络协议栈、跑图形框架。"老陈笑了,“这就是 LiteOS-M 的本事——一个极小的实时操作系统内核(RTOS)。”
“那我以前玩的 FreeRTOS……”
"本质是同一类东西。"老陈说,“LiteOS-M 也是 RTOS,支持任务调度、信号量、互斥锁、消息队列、定时器,这些你在 FreeRTOS 里见过的它都有。区别是——LiteOS-M 上面接着一整套鸿蒙的系统能力,而 FreeRTOS 上面什么都没有。”
这句话让我心里一亮。
“所以你不是从零开始学,“老陈看穿了我的想法,”**你是有基础的。**你玩过单片机、写过 C、调过时序图,这些经验在南向开发里全都能直接用上。你比那些只会写 JS 的人,起点高得多。”
七、小剧场 · 三个名字
=================小剧场模式=================
我:(举手)老师,我再确认一遍——OpenHarmony 是开源的,HarmonyOS 是华为的,NEXT 是不兼容安卓的那个?
老陈:对。
我:那我以后要是去一家做智能门锁的公司,他们用的是哪个?
老陈:多半是 OpenHarmony。他们自己拿源码编译,不依赖华为。
我:那我学 HarmonyOS 那套,是不是白学了?
老陈:(摇头)不白学。ArkTS、ArkUI、Ability 这些上层的东西,两边是通用的——因为 HarmonyOS 本来就是从 OpenHarmony 长出来的。你学会北向那套,两边都能写。
我:只有南向不一样?
老陈:南向的驱动框架 HDF 也是通用的,不一样的主要是芯片厂商提供的闭源 SDK 和工具链。核心能力是共通的。
我:那岂不是……学一套能打两份工?
老陈:(笑)聪明。这就是为什么我说现在学它性价比高。
========================================
八、你的第一件装备
老陈把桌上那块 Hi3861 推到我面前。
“拿着。”
我接过来,板子很小,比银行卡还窄一半。正面一颗主控芯片,背面一排邮票孔,边上有个 MicroUSB 口和一颗蓝色 LED。
"Hi3861,华为海思的 Wi-Fi SoC,2.4G Wi-Fi + BLE,主频 160 MHz,SRAM 352 KB,Flash 2 MB。"老陈报参数跟报菜名一样顺,“OpenHarmony 轻量系统的经典入门板,一块几十块钱,坏了不心疼。”
“我拿它做什么?”
“第一件事——点亮那颗蓝灯。”
我愣住了:“……就点个灯?我大一就会点灯了。”
"你现在用 51 点灯,是让一个芯片的一根引脚输出高电平。"老陈说,“我要你用鸿蒙点灯,是让一个操作系统,通过它的驱动框架,去管理一个 GPIO 设备。”
他一字一句地说:
“前者是操作寄存器,后者是让系统替你操作寄存器。这两件事之间的差距,就是你从一个’会写单片机的人’变成一个’会做系统的人’的距离。”
我低头看着板子上那颗小小的蓝色 LED,忽然觉得它比刚才顺眼多了。
“什么时候开始?”
"明天晚上八点,带上你的笔记本电脑。"老陈站起来,把记号笔盖好,“先把环境搭起来。记住,环境搭建是所有新手的第一道鬼门关——倒在这一步的人,比倒在写代码上的多得多。”
他走到门口,回头补了一句:
“哦对了,你那台笔记本内存多大?”
“16 G。”
“够用。硬盘呢?”
“还剩……两百多 G?”
老陈沉默了两秒。
“明天之前,给我清出 100 G。”
“啊?一个点灯要 100 G?!”
"点灯不要。"老陈头也不回地走了,“编译 OpenHarmony 源码要。”
本章自检
过一遍下面的问题。答不上来的,回去翻对应小节——那些就是你这个章的欠账。
- ☐ 有人问你「鸿蒙是不是安卓套壳」,你能讲清楚吗?
- ☐ 不看资料,能在纸上画出四层架构吗?
- ☐ 三种系统形态分别用什么内核?各举一个典型设备。
- ☐ 南向和北向各自干什么?分别用什么语言?
- ☐ 说出你打算走哪条路,为什么。
**➡️ 下一站:**第 02 章 · 三种身法 —— 搞明白同一套系统,凭什么能大能小。
=================剧情片段=================
导演:卡。开篇讲完了,观众应该对鸿蒙是什么有个概念了吧?
助理:(翻稿子)讲了三个名字的区别、架构四层、三种系统形态、南北向分工……信息量挺大的。
导演:够不够?会不会太干?
助理:还好,都套在故事里了。不过有观众会问——为什么非得先讲清楚 OpenHarmony 和 HarmonyOS 的区别?
导演:因为这个分不清,后面选开发板、选 SDK、看文档全会走错路。有人明明要做 IoT 模组,却去下 HarmonyOS 的 SDK,折腾一周才发现方向错了。
助理:那下一章讲什么?
导演:主角要开始搭环境了,但在这之前——
助理:先让他知道他要编译的那个东西,里面到底装了什么?
导演:对。内核。三种系统形态对应三种内核,不搞清楚内核,你连自己写的代码跑在谁头上都不知道。
助理:所以下一章叫——
导演:《三种身法》。 讲 LiteOS-M、LiteOS-A 和 Linux 是怎么被塞进同一套系统里的。
========================================
未完待续。。。


