拓冰建站拓冰建站
首页 / 资讯中心 / 正文

OpenHarmony 标准系统到底是什么?—【万物智能之开源鸿蒙 OpenHarmony 系统实战开发系列教程】

开篇把「为什么做开源鸿蒙、这块板适不适合你」说完了。今天把四个字拆开标准系统到底是什么。后面所有命令默认你在这一档上——有窗口、有 hap不是 MCU 那套轻量内核。把板子插上串口波特率调到 1500000内核打出来的版本是 Linux 5.10。很多人在这一步就会下结论开源鸿蒙就是套了壳的 Linux。这个结论对了一半。标准系统的内核确实是 Linux设备树、dmesg、/sys都还在。错的那一半是你接下来要装的应用、要调的显示、要写的驱动很大一部分已经不在「发行版 Linux」那套习惯里了。OpenHarmony 是开放原子开源基金会下面的开源项目。官方的说法比较克制面向全场景搭一个智能终端操作系统的框架。落到 RK3568 这种能跑桌面的芯片上它给的是标准系统——有窗口、有 GPU 合成、有 ArkTS 应用不是 MCU 上那种轻量内核。官方分层图是下面这一张。建议先看图再往下读否则后面的目录名会飘在空中。从上往下四层应用层是桌面、设置、以及你自己编的 hap。框架层是 Ability、ArkUI还有相机、音频这些 Kit。系统服务层是包管理、图形合成、网络、电源。最底是内核Linux 加上一套叫 HDF 的驱动框架。在 RK3568 上可以立刻验证你跑的是不是这一档hdc shell uname -a hdc shell ls -l /system/lib/ld-musl-arm.so.1 hdc shell param get ohos.boot.hardware第一行会看到 aarch64 的 Linux。第二行必须存在——用户态是 32 位 musl没有这份 loader你自己编的 64 位程序根本 exec 不了。第三行在这块 BSP 上常常是rk30boardinit 和 fstab 只认带这个后缀的文件。三个结果对得上你才和后文的路径在同一套系统里。为啥会有轻量、小型、标准三个词因为同一套名字要覆盖差两个数量级的硬件。MCU 上 128 KB 内存和 RK3568 上 2 GB 内存不可能跑同一份桌面。轻量系统给 Cortex-M、RISC-V内存可以从一百多 KB 起做连接和简单控制。小型系统到了 Cortex-A能做一点图形和编解码比如猫眼。标准系统还是 Cortex-A但按完整应用框架来窗口、3D、hap。RK3568 属于最后这一档。官方给标准系统写过 128 MB 内存的下限。那是「能起来」不是「能拿来做相机预览和 ArkTS 界面」。实际买板2 GB 才像能干活4 GB 更从容。选板的细节在上一篇。档选错的典型症状是你拿着标准系统的build.sh、hdc、hap 去对一块 MCU 板或者反过来在 RK3568 上找 LiteOS 的烧录文档。两边的快速入门都在官方树里入口不同。RK3568 的说明在他们的 开发板介绍。标准系统在这种芯片上实际在干什么别把「全场景」当成要一次做完的功能清单。按 RK3568 的接口常见就这几类。带屏的设备。产线操作界面、门口机、仓储终端。VOP2 能出很多种屏但同一时刻通常只能把一路当主显示。HDMI 还 okay 的时候去点 MIPI 屏背光可能亮桌面不会来。这是显示那几篇的核心约束不是驱动没编进去。网关。双千兆USB 上再挂 Wi-Fi 或蜂窝模组。4G 有的枚举成wwan0走 QMI5G 有的枚举成usb0走 NCM不能拿同一套拨号程序去套。采集和执行。I2C 上的温度、光感UART 上的定位模块GPIO 上的继电器。应用往往不是通过一套完整的 Kit 就能读到所有芯片而是 NAPI 打开/dev或/sys。权限、节点是否 0666、SELinux 是否还在开发期的宽松模式都会让「驱动已经 probe 成功、应用还是读失败」发生。相机。MIPI CSI 走 ISPUSB 走 UVC。预览花了优先查缓冲区格式和写到了哪块内存而不是先怀疑传感器没起来。传感器起来、/dev/video也在、画面仍然错是 HAL 那一层的事。这些场景决定了后面文章的顺序先把桌面和调试口做稳再按总线把芯片一篇一篇写。分布式软总线、跨设备调度官方有专门章节。单机屏都不稳的时候去做组网只会得到两块都不稳的板。HDF 是什么为啥不能当没看见Linux 上加一个 GPIO 灯设备树加节点、内核开CONFIG_LEDS_GPIO就结束了。OpenHarmony 里触摸、音频、显示、一部分相机走的是 HDF配置文件叫 HCS编进内核或放进 vendor上层通过 HDI 来用。官方对 HDF 的概述在 驱动框架。架构可以看成上面是统一的设备接口中间是加载和消息下面用 OSAL 挡住不同内核的差异。RK3568 标准系统上的现实更土一些。灯、超声波、RFID 仍然是 Linux 原生驱动加/dev。触摸却常常把设备树里的 goodix 关掉让 HDF 独占 I2C。于是你会看到一种很怪的现象i2cdetect有地址Linux 的goodix没 bind应用却能点——因为另一套驱动在干活。后文每碰到一个外设会写它走哪条腿。两条腿同时踩同一颗芯片是抢总线的常见原因。应用为啥不是一个 ELF传统板上你丢一个arm-linux-gnueabihf-gcc编出来的程序到/usr/bin。这里用户态是 musl、32 位。交叉编译器要换成开源鸿蒙那套动态链接器路径要写成/system/lib/ld-musl-arm.so.1。带界面的程序是 hap。DevEco 编出来先是 unsigned直接安装会失败。签名用 Java 工具和一套 p12/p7b不是 Android 那套密钥。系统预装还要过包管理里的指纹列表和权限级别错误码不同门也不同。所以「我在 Linux 上会写 C」只覆盖了内核模块和一部分 NAPI。应用那一层有自己的包格式和规则后面会单独写这里先建立预期编过 Qt 的经验不能直接搬。版本和以后这组文章钉在 OpenHarmony 4.1、API 11。升到更新的 APIArkTS、包结构和签名材料都会变hap 不要假设能直接装上去。芯片侧RK3568 / 更强的同系列会继续当标准系统的常见平台。南向工作的内容比较稳定设备树、HCS、init、fstab、显示时序、外设兼容。这些不会因为换一个桌面主题就消失。端侧模型、NPU、把相机帧送进推理我打算在相机画面稳定之后另写。现在预览如果是花的模型输入就是花的。路径上可以先记住三件事帧存在哪、格式是什么、应用有没有权限拿到。那三件事清楚了后面接模型只是多一个用户态库。下一篇写同一颗 RK3568 上从普通嵌入式 Linux 换过来以后哪些习惯要改。里面会有具体命令对照着跑比看架构图有用。系列第 1 篇 · 芯片瑞芯微 RK3568 · OpenHarmony 4.1API 11 · Linux 5.10
分享:

看完干货,该让你的企业上线了

免费需求沟通 · 48 小时内出具建站方案 · 河南本地可上门