OpenHarmony 从过去的 1.0 版本,演变到了现在的 3.1 版本。针对 3.0 以上的版本,我写一系列的文章。希望对刚入门想学习 OpenHarmony 轻量系统的同学有所帮助。
初识 OpenHarmony
本节简单介绍 OpenHarmony、轻量系统、小型系统、标准系统的差异,以及相关的官方资料和文档。
适合群体:第一次接触 OpenHarmony 或者想要对 OpenHarmony 有一个全面的认知的。
①系统类型
OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
https://gitee.com/openharmony
复制
关于系统的特性,这里不再过多赘述,开发者可以直接在官方 gitee 仓库中查看。特别是内核层的多内核设计、HDF 驱动框架、分布式能力等。
②系统类型
OpenHarmony 是一个面向全场景,支持各类设备的系统。这里的设备就包括像 MCU 单片机这样资源较少的芯片,也支持像 RK3568 这样的多核 CPU。
为了能适应各种硬件,OpenHarmony 提供了像 LiteOS、Linux 这样的不同内核,并基于这些内核形成了不同的系统类型,同时又在这些系统中构建了一套统一的系统能力。
总体来说,目前 OpenHarmony 主要有 3 种系统类型:
L0(又称轻量系统)
L1(小型系统)
L2(标准系统)
轻量系统(mini system):面向 MCU 类处理器例如 Arm Cortex-M、RISC-V 32 位的设备,硬件资源极其有限,支持的设备最小内存为 128KiB,可以提供多种轻量级网络协议,轻量级的图形框架,以及丰富的 IOT 总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。

小型系统(small system):面向应用处理器例如 Arm Cortex-A 的设备,支持的设备最小内存为 1MiB,可以提供更高的安全能力、标准的图形框架、视频编解码的多媒体能力。可支撑的产品如智能家居领域的 IP Camera、电子猫眼、路由器以及智慧出行域的行车记录仪等。
典型的开发板有 AI Camera 开发板,如下:

标准系统(standard system):面向应用处理器例如 Arm Cortex-A 的设备,支持的设备最小内存为 128MiB,可以提供增强的交互能力、3D GPU 以及硬件合成能力、更多控件以及动效更丰富的图形能力、完整的应用框架。可支撑的产品如高端的冰箱显示屏。
典型的设备有大禹 200 开发板,如下:
③内核类型
OpenHarmony 支持多种内核,目前已适配的内核有 liteos-m、liteos-a、Linux(有 4.19 和 5.10 版本)。

轻量系统目前适配了 liteos-m 内核,该内核对硬件资源较少,适用于单片机。
小型系统目前适配了 liteos-a 和 Linux 2 种内核,开发者可以选择合适的内核进行产品开发。标准系统目前适配了 Linux 内核,开发者可以基于 linux kernel 演进。
④系统差异
源码下载和开发环境
本节简单介绍 OpenHarmony 开发环境,代码下载、版本更新日志等。
适合群体:想要上手开发 OpenHarmony 设备。
①源码下载
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-sourcecode-acquire.md
复制
本文这里做下总结:
注册码云 gitee 账号。
注册码云 SSH 公钥,具体可以百度
安装 git 客户端和 git-lfs 并配置用户信息。
git config --global user.name "yourname"
git config --global user.email "your-email-address"
git config --global credential.helper store 复制
安装码云 repo 工具,可以执行如下命令。
curl -s https://gitee.com/oschina/repo/raw/fork_flow/repo-py3 > /usr/local/bin/repo
复制
注意:如果没有权限,可下载至其他目录,并将其配置到环境变量中。
chmod a+x /usr/local/bin/repo
pip3 install -i https://repo.huaweicloud.com/repository/pypi/simple requests复制
方式一:通过 repo + ssh 下载(需注册公钥,请参考码云帮助中心)。
repo init -u git@gitee.com:openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'复制
方式二(个人推荐这个):通过 repo + https 下载。
repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify
repo sync -c
repo forall -c 'git lfs pull'复制
②Release 版本下载
OpenHarmony 3.x Releases
OpenHarmony Release Notes
https://gitee.com/openharmony/docs/blob/master/zh-cn/release-notes/Readme.md
复制
目前已经到了 3.1 版本,即将更新 3.3 版本。

③开发环境
Ubuntu 的开发环境可以参考官网:
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md
复制
OpenHarmony 代码所需的公共部分:这里主要是安装 python、hb 等,这些都是必须的。
具体开发板所需的开发环境:这个跟具体芯片、开发板相关,例如对应的交叉编译器、或者制作文件系统相关的脚本组件等。这些看自己所需的芯片环境是哪些。
(1)OpenHarmony 开发环境:将 Ubuntu Shell 环境修改为 bash。
ls -l /bin/sh
复制
打开终端工具,执行如下命令,然后选择 No,将 Ubuntu shell 由 dash 修改为 bash。
sudo dpkg-reconfigure dash
复制

sudo apt-get install build-essential gcc g++ make zlib* libffi-dev e2fsprogs pkg-config flex bison perl bc openssl libssl-dev libelf-dev libc6-dev-amd64 binutils binutils-dev libdwarf-dev u-boot-tools mtd-utils gcc-arm-linux-gnueabi cpio device-tree-compiler
复制
安装 hb:在源码根目录下载运行如下命令安装 hb。
python3 -m pip install build/lite
复制
设置环境变量:
vim ~/.bashrc
复制
将以下命令拷贝到 .bashrc 文件的最后一行,保存并退出。
export PATH=~/.local/bin:$PATH
复制
执行如下命令更新环境变量。
source ~/.bashrc
复制
执行"hb -h",界面打印以下信息即表示安装成功:
usage: hb
OHOS build system
positional arguments:
{build,set,env,clean}
build Build source code
set OHOS build settings
env Show OHOS build env
clean Clean output
optional arguments:
-h, --help show this help message and exit复制
(2)Hi3861 开发环境:最好参考官方文档如下,这里做下记录。
https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-steps-hi3861-setting.md
复制
安装编译依赖基础软件(仅 Ubuntu 20+ 需要),执行以下命令进行安装:
sudo apt-get install build-essential gcc g++ make zlib* libffi-dev
复制
安装 Scons:运行如下命令,安装 SCons 安装包。
python3 -m pip install scons
复制
运行如下命令,查看是否安装成功。
scons -v
复制
如果安装成功,查询结果下图所示。
安装 python 模块:运行如下命令,安装 python 模块 setuptools。
pip3 install setuptools
复制
命令行方式:
sudo pip3 install kconfiglib
复制
sudo pip3 install pycryptodome
复制
命令行方式:
sudo pip3 install six --upgrade --ignore-installed six
复制
命令行方式:
sudo pip3 install ecdsa
复制
安装 gcc_riscv32(WLAN 模组类编译工具链),下载以下交叉编译工具链:
https://gitee.com/link?target=https%3A%2F%2Frepo.huaweicloud.com%2Fharmonyos%2Fcompiler%2Fgcc_riscv32%2F7.3.0%2Flinux%2Fgcc_riscv32-linux-7.3.0.tar.gz
复制
请先执行以下命令将压缩包解压到根目录:
tar -xvf gcc_riscv32-linux-7.3.0.tar.gz -C ~
vim ~/.bashrc复制
将以下命令拷贝到 .bashrc 文件的最后一行,保存并退出。
export PATH=~/gcc_riscv32/bin:$PATH
复制
生效环境变量。
source ~/.bashrc
复制
Shell 命令行中输入如下命令,如果能正确显示编译器版本号,表明编译器安装成功。
riscv32-unknown-elf-gcc -v
复制
代码编译和烧录
①源码目录
下载完代码后,大家可以进入代码目录:
vendor 文件夹:该文件夹存放的是厂商相关的配置,包括组件配置、HDF 相关配置,代码目录如下:

device 文件夹:该文件夹存放的是具体开发板、芯片相关的源码。这里 OpenHarmony 又分为 SoC 和 Board 两大块。
其中 SoC 里面是具体芯片相关的代码、包括该芯片相关的驱动;board 是开发板相关的代码,具体跟开发板相关。

arch 文件夹:该文件夹存放具体芯片架构的代码,文件夹路径:
kernel/liteos_m/arch
复制
代码路径如下:

applications 文件夹:该文件夹存放应用相关代码,后续我们编写代码需要在该文件夹下添加。
②编译
轻量系统采用 hb 编译,在代码根目录下执行:
hb set
复制
首次输入可以会提示需要输入路径,直接输入 . (英文的点号)即可:

这里我们选择 wifiiot_hispark_pegasus。之后输入:
hb build -f
复制
开始编译,看到如下即表示编译成功:
编译出来的固件位于:out/hispark_pegasus/wifiiot_hispark_pegasus/。
③烧录
基于 vscode 方式烧录:OpenHarmony 可以基于 vscode 的方式进行烧录,但是该方式比较复杂,这里暂时不推荐。
如果读者感兴趣可以参考:
https://device.harmonyos.com/cn/docs/documentation/guide/quickstart-lite-steps-hi3861-burn-0000001190053075
复制
基于 hiburn 工具烧录:推荐读者采用此方式,比较简单便捷。
首先下载 HiBurn 工具,下载链接:
https://harmonyos.51cto.com/resource/29
复制

打开 HiBurn 工具
点击 select file 选择要下载的 Hi3861_wifiiot_app_allinone.bin 文件
勾选上 Auto burn 选项
单击 Connect 按钮

此时按下开发板上面的 RST 复位按钮,即可看到程序已经开始下载:

注意下载后,我们点击 disconnect 按钮,不然我们再次复位会重新烧录。我们也可以关闭掉 HiBurn 程序。
④运行效果
烧录完后,我们可以打开串口工具,查看串口打印:
这是因为默认打开了 xts 测试,开发板跑起来系统后会做 xts 测试。看到如下提示,则表示 xts 测试通过。
👇扫码报名下周三的鸿蒙直播课👇


求分享

求点赞

求在看