环境搭建和编译一般分为:轻量和小型系统、标准系统。
下面主要介绍标准系统的开发。
开发流程
标准系统流程如下图所示:
OpenHarmony为开发者提供了以下两种方式
IDE方式:完全采用IDE(Deveco Device Tool)进行一站式开发,编译依赖工具的安装及编译、烧录、运行都通过IDE进行操作。
安装包方式:通过命令行进行编译依赖工具的下载安装,编译操作也通过命令实现。烧录、运行等操作使用IDE。
一. 环境搭建
- IDE方式:
- 安装包方式:
- 虚拟机安装Ubuntu
- Ubuntu Termin运行命令安装需要的库
sudo apt-get update && sudo apt-get install binutils git git-lfs gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip m4 bc gnutls-bin python3.8 python3-pip ruby
- 获取源码
获取方式1:从码云代码仓库获取。通过repo或git工具从代码仓库中下载,此方式可获取最新代码。
获取方式2:通过DevEco Marketplace网站获取。访问DevEco Marketplace网站,查找满足需求的开源发行版,直接下载(或者定制后下载),再通过hpm-cli命令工具将所需的组件及工具链下载、安装到本地。
获取方式3:从镜像站点下载归档后的发行版压缩文件。如果要获取旧版本的源码,也可通过此方式获取,此方式下载速度较快。
获取方式4:从github代码仓库获取。通过repo或git工具从代码仓库中下载,此方式可获取最新代码。
获取方式3:从镜像站点获取
为了获得更好的下载性能,您可以选择从以下站点的镜像库获取源码或者对应的解决方案。
本部分只提供OpenHarmony LTS最新版本和最新发布版本的源码获取方式, 其他版本获取源码方式以及具体版本信息请参考Release-Notes。
表1 获取源码路径
LTS版本源码 | 版本信息 | 下载站点 | SHA256校验码 |
全量代码(标准、轻量和小型系统) | 3.0 | ||
标准系统解决方案(二进制) | 3.0 | ||
Hi3861解决方案(二进制) | 3.0 | ||
Hi3518解决方案(二进制) | 3.0 | ||
Hi3516解决方案-LiteOS(二进制) | 3.0 | ||
Hi3516解决方案-Linux(二进制) | 3.0 | ||
RELEASE-NOTES | 3.0 | - | |
最新发布版本源码 | 版本信息 | 下载站点 | SHA256校验码 |
全量代码Release版本(标准、轻量和小型系统) | 3.1 Release | ||
Hi3516标准系统解决方案(二进制) | 3.1 Release | ||
RK3568标准系统解决方案(二进制) | 3.1 Release | ||
Hi3861解决方案(二进制) | 3.1 Release | ||
Hi3516解决方案-LiteOS(二进制) | 3.1 Release | ||
Hi3516解决方案-Linux(二进制) | 3.1 Release | ||
RELEASE-NOTES | 3.1 Release | - | |
编译工具链 | 版本信息 | 下载站点 | SHA256校验码 |
编译工具链获取清单 | - | - |
全量代码Release版本,下载完大概15G,放入到Ubuntu内解压得到:
源码目录简介
下表是OpenHarmony源码目录:
表2 源码目录
目录名 | 描述 |
applications | 应用程序样例,包括camera等 |
base | 基础软件服务子系统集&硬件服务子系统集 |
build | 组件化编译、构建和配置脚本 |
docs | 说明文档 |
domains | 增强软件服务子系统集 |
drivers | 驱动子系统 |
foundation | 系统基础能力子系统集 |
kernel | 内核子系统 |
prebuilts | 编译器及工具链子系统 |
test | 测试子系统 |
third_party | 开源第三方组件 |
utils | 常用的工具集 |
vendor | 厂商提供的软件 |
build.py | 编译脚本文件 |
- 创建源码工程
把项目文件拖入VS code 中
- 编写程序
下方将展示如何在单板上运行第一个应用程序“Hello World!”。
示例完整目录如下。
开发步骤
请在源码目录中通过以下步骤创建“Hello World”应用程序:
- 创建目录,编写业务代码。
新建applications/sample/hello/src/helloworld.c目录及文件,代码如下所示,用户可以自定义修改打印内容(例如:修改World为OH)。其中helloworld.h包含字符串打印函数HelloPrint的声明。当前应用程序可支持标准C及C++的代码开发。
再添加头文件applications/sample/hello/include/helloworld.h,代码如下所示。
2.新建编译组织文件。
新建applications/sample/hello/BUILD.gn文件,内容如下所示:
新建applications/sample/hello/bundle.json文件,添加sample部件描述,内容如下所示。
bundle.json文件包含两个部分,第一部分描述该部件所属子系统的信息,第二部分component则定义该部件构建相关配置。添加的时候需要指明该部件包含的模块sub_component,假如有提供给其它部件的接口,需要在inner_kits中说明,假如有测试用例,需要在test中说明,inner_kits与test没有也可以不添加。
3.修改子系统配置文件。
在build/subsystem_config.json中添加新建的子系统的配置。
4. 修改产品配置文件。
在productdefine/common/products/Hi3516DV300.json中添加对应的hello部件,直接添加到原有部件后即可。
- 编译
目前支持三种编译方式:
IDE编译方式,即使用DevEco Device Tool
这里使用build.sh脚本编译源码
- 进入源码根目录,执行如下命令进行版本编译。
./build.sh --product-name name --ccache
说明: _name_为产品名称,例如Hi3516DV300、rk3568等。
Hi3516DV300的命令如下图:
第一次编译时间会较长(一到十几个小时左右)因应机器性能。
下图是编译过程:
- 检查编译结果。编译完成后,log中显示如下:
post_process=====build name successful.
编译所生成的文件都归档在out/{device_name}/目录下,结果镜像输出在out/{device_name}/packages/phone/images/ 目录下。
- 烧录
烧录常用几种方式:
- IDE DevEco Device Tool烧录
- HiTool工具烧录
- 安装驱动
串口线和USB线和电脑连接上
在电脑【设备管理器】中可以看到连接状态
- 烧录
将编译好的images复制到Windows内。
打开HiTool工具,设置对应设备,选择对应串口,选择传输方式-USB口。
选择 烧写eMMC,点击浏览,选择images目录内的XML文件,会自动加载下图7个文件
关键操作
- 先断电:拔出白色USB线
- 点击烧写,点击确定,出现下图界面
- 按住开发板上的update键不放,update键如图(黑色小点)
- 上电,将白色USB和电脑连接上
- 开始烧写,可以松开update键
- 烧写完成,自动启动
- 运行
通过HiTool的终端可以和开发板连接调试
运行编写的样例程序
也可以通过命令进行调试。具体命令见附录。