暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

OpenHarmony新手入门必看教程!

鸿蒙技术社区 2022-01-21
1924

OpenHarmony 从过去的 1.0 版本,演变到了现在的 3.1 版本。针对 3.0 以上的版本,我写一系列的文章。希望对刚入门想学习 OpenHarmony 轻量系统的同学有所帮助。


初识 OpenHarmony


本节简单介绍 OpenHarmony、轻量系统、小型系统、标准系统的差异,以及相关的官方资料和文档。


适合群体:第一次接触 OpenHarmony 或者想要对 OpenHarmony 有一个全面的认知的。


①系统类型


OpenHarmony 是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。


官方 gitee 仓库:
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 总线读写部件等。可支撑的产品如智能家居领域的连接类模组、传感器设备、穿戴类设备等。


典型的设备、开发板有 HI3861 鸿蒙小车、Neptune 开发板,如下:

小型系统(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

复制


以下是主干代码的下载方式,但是主干代码可能会不稳定,不推荐大家使用,推荐大家使用 TLS 版本。


OpenHarmony 主干代码获取如下:


方式一:通过 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 版本。

③开发环境


OpenHarmony 的开发环境主要分为 windows、Linux 两个。其中 windows 环境用于编写代码、下载程序等。Linux 环境用于代码下载、编译等。


这里推荐大家只使用 Linux 环境即可,Linux 可以使用 Ubuntu 20.04 版本。关于 Windows 环境,大家可装可以不装,编写代码可以使用自己喜欢的 IDE、下载的话,不同开发板都会提供不同的下载工具。

Ubuntu 的开发环境可以参考官网:

https://gitee.com/openharmony/docs/blob/master/zh-cn/device-dev/quick-start/quickstart-lite-package-environment.md

复制


本文也会列出来,但是后面官方可能会更新,导致本文不一定适用。


需要注意的是,关于 Ubuntu 的环境主要分为两部分:
  • OpenHarmony 代码所需的公共部分:这里主要是安装 python、hb 等,这些都是必须的。

  • 具体开发板所需的开发环境:这个跟具体芯片、开发板相关,例如对应的交叉编译器、或者制作文件系统相关的脚本组件等。这些看自己所需的芯片环境是哪些。


(1)OpenHarmony 开发环境:将 Ubuntu Shell 环境修改为 bash。


执行如下命令,确认输出结果为 bash。如果输出结果不是 bash,请根据步骤 2,将 Ubuntu shell 修改为 bash。
ls -l /bin/sh

复制


打开终端工具,执行如下命令,然后选择 No,将 Ubuntu shell 由 dash 修改为 bash。

sudo dpkg-reconfigure dash

复制


使用如下 apt-get 命令安装编译所需的必要的库和工具。
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

复制


如果安装成功,查询结果下图所示。

SCons 安装成功界面,版本要求 3.0.4 以上。

安装 python 模块:运行如下命令,安装 python 模块 setuptools。

pip3 install setuptools

复制


安装 GUI menuconfig 工具(Kconfiglib),建议安装 Kconfiglib 13.2.0+ 版本,任选如下一种方式。

命令行方式:

sudo pip3 install kconfiglib

复制


安装 pycryptodome,任选如下一种方式。


安装升级文件签名依赖的 Python 组件包,包括:pycryptodome、six、ecdsa。安装 ecdsa 依赖 six,请先安装 six,再安装 ecdsa。

命令行方式:
sudo pip3 install pycryptodome

复制


安装 six,任选如下一种方式。

命令行方式:

sudo pip3 install six --upgrade --ignore-installed six

复制


安装 ecdsa,任选如下一种方式。


命令行方式:

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

复制


代码编译和烧录


本节简单介绍 OpenHarmony 最新版本代码目录简单解读、编译、烧录。


适合群体:适用于 Hi3861 开发板。

①源码目录


下载完代码后,大家可以进入代码目录:

这里重点介绍几个比较重要的文件夹:

vendor 文件夹:该文件夹存放的是厂商相关的配置,包括组件配置、HDF 相关配置,代码目录如下:

可以看到有 hisilicon 文件夹,下面有 Hi3516DV300、hispark_aries 等,其中 hi3861 开发板对应的是 hispark_pegasus。里面有如下文件:

其中比较重要的是 config.json 配置文件,里面定义了内核类型,和使用了哪些子系统。具体我们后再做具体解读。

device 文件夹:该文件夹存放的是具体开发板、芯片相关的源码。这里 OpenHarmony 又分为 SoC 和 Board 两大块。


其中 SoC 里面是具体芯片相关的代码、包括该芯片相关的驱动;board 是开发板相关的代码,具体跟开发板相关。

之所以这样设计,是为将 SoC 和 board 区分出来,实现 soc 相关代码可复用。因为后续可能存在一个 soc 多个 board 的情况。


其中,润和的 WiFi IoT 开发板对应的 soc 是 hi3861v100 文件夹,对应的 board 是 hispark_pegasus。

arch 文件夹:该文件夹存放具体芯片架构的代码,文件夹路径:

kernel/liteos_m/arch

复制

代码路径如下:

于是 OpenHarmony 实现了 ARCH(架构)、soc(芯片)、board(开发板)3 层隔离,降低了代码的耦合性。设计比较合理。

applications 文件夹:该文件夹存放应用相关代码,后续我们编写代码需要在该文件夹下添加。


②编译


轻量系统采用 hb 编译,在代码根目录下执行:

hb set

复制


首次输入可以会提示需要输入路径,直接输入 . (英文的点号)即可:

这里我们选择 wifiiot_hispark_pegasus。之后输入:

hb build -f

复制


开始编译,看到如下即表示编译成功:

编译出来的固件位于:out/hispark_pegasus/wifiiot_hispark_pegasus/。

其中,Hi3861_wifiiot_app_allinone.bin 是我们要烧录到开发板的。


③烧录


基于 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

复制

使用 USB 线连接到 3861 开发板,如上图:
  • 打开 HiBurn 工具

  • 点击 select file 选择要下载的 Hi3861_wifiiot_app_allinone.bin 文件

  • 勾选上 Auto burn 选项

  • 单击 Connect 按钮

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

注意下载后,我们点击 disconnect 按钮,不然我们再次复位会重新烧录。我们也可以关闭掉 HiBurn 程序。


④运行效果


烧录完后,我们可以打开串口工具,查看串口打印:

这是因为默认打开了 xts 测试,开发板跑起来系统后会做 xts 测试。看到如下提示,则表示 xts 测试通过。

👇扫码报名下周三的鸿蒙直播课👇

👇点击关注鸿蒙技术社区👇
了解鸿蒙一手资讯

求分享

求点赞

求在看

文章转载自鸿蒙技术社区,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论