系统简介
OpenHarmony是由开放原子开源基金会(OpenAtom Foundation)孵化及运营的开源项目,目标是面向全场景、全连接、全智能时代,基于开源的方式,搭建一个智能终端设备操作系统的框架和平台,促进万物互联产业的繁荣发展。
技术架构
OpenHarmony整体遵从分层设计,从下向上依次为:内核层、系统服务层、框架层和应用层。系统功能按照“系统 > 子系统 > 组件”逐级展开,在多设备部署场景下,支持根据实际需求裁剪某些非必要的组件。
代码克隆及编译
git clone --depth=1 git clone ssh://192.168.xx.xxx:xxxxxx/openharmony-r4.0.git
cd openharmony-r4.0
// 进入容器
docker run -it -v $(pwd):/home/openharmony swr.cn-south-1.myhuaweicloud.com/openharmony-docker/docker_oh_standard:3.2
全部编译:
./build.sh --product-name rk3568 \ // 指定产品名称
--target-cpu=arm64 \ // 目标CPU类型
–ccache \ // 编译使用ccache
--fast-rebuild // 快速重建
--jobs=32
单独编译内核:
./build.sh --product-name rk3568 --build-target=kernel
--gn-args linux_kernel_version="linux-5.10"
单独编译系统:
./build.sh --product-name rk3568 --build-target=system_image
代码提交:
git push origin HEAD:refs/for/master
Docker 常用指令
// 查看 CONTAINER ID
docker ps -a
// 启动
docker start <CONTAINER ID-前三位即可>
// 停止 - 交互命令下exit直接退出
docker stop <CONTAINER ID>
// 重启
docker restart <CONTAINER ID>
// 删除
docker rm <CONTAINER ID>
// 清理所有处于终止状态的容器
docker container prune
// 进入容器,从容器退出,不会导致容器的停止(推荐)
docker exec -it <CONTAINER ID-前三位即可> /bin/bash
// 从容器退出,会导致容器的停止
docker attach <CONTAINER ID>
驱动开发 – 版本制作简介
Kernel代码组成:
- OH内核态层 = 标准LTS Linux 内核 + 三方SoC芯片平台代码 + OH内核态基础代码 + OH内核态特性(如HDF)
标准LTS Linux 内核
- openharmony-r4.0\kernel\linux\linux-5.10
三方SoC芯片平台代码
- openharmony-r4.0\device\soc\rockchip
- openharmony-r4.0\kernel\linux\patches\linux-5.10\rk3568_patch\kernel.patch
OH内核态基础代码
- openharmony-r4.0\kernel\linux\patches\linux-5.10\rk3568_patch\hdf.patch
编译生成最终版本kernel代码
- openharmony-r4.0\out\kernel\src_tmp\linux-5.10
主要脚本
- openharmony-r4.0\device\board\hihope\rk3568\kernel\build_kernel.sh
参考文档
- openharmony-r4.0\docs\zh-cn\device-dev\Readme-CN.md
驱动开发- 定制 kernel.patch
用户环境:
- cd ~/openharmony-r4.0/out/kernel/src_tmp/
- sudo chown -R $USER:$USER linux-5.10/
- cd linux-5.10/
- git config user.name $USER
- git config user.email xxxx@163.com
- git init
- git add .
- git commit -m “openharmony-r4.0 linux LTS 5.10”
Docker环境:
- cd ~/openharmony-r4.0/out/kernel/src_tmp/linux-5.10
- // 参考hihope rk3568 编译方式
- export PRODUCT_COMPANY=hihope
- export DEVICE_COMPANY=rockchip
- export DEVICE_NAME=rk3568
- export KBUILD_OUTPUT=…/…/OBJ/linux-5.10
- ./make-ohos.sh TB-RK3568X0
- 添加定制相关配置更改点
- 在./make-ohos.sh中model_list添加自己的开发板 RK3568-V11
- 同步修改device/board/hihope/rk3568/kernel/build_kernel.sh对应开发板为 RK3568-V11
- export PRODUCT_COMPANY=hihope
- export DEVICE_COMPANY=rockchip
- export DEVICE_NAME=rk3568
- export KBUILD_OUTPUT=…/…/OBJ/linux-5.10
- ./make-ohos.sh RK3568-V11
- 烧录验证测试ok
用户环境:
- git add .
- git commit -m “add xxx dts config”
- git format-patch -1 xxx // 得到add-xxx-dts-config.patch
// 基于以上更改点制作补丁包
- cd kernel/linux/linux-5.10
- git config user.name $USER
- git config user.email xxxx@163.com
- git init
- git add .
- git commit -m “openharmony-r4.0 linux LTS 5.10”
- patch -p1 < …/patches/linux-5.10/rk3568_patch/kernel.patch
- patch -p1 < ~/openharmony-r4.0/out/kernel/src_tmp/linux-5.10/add-xxx-dts-config.patch
- git add .
- git commit -m “add xxx config”
- git format-patch -1 xxx
- rm …/patches/linux-5.10/rk3568_patch/kernel.patch
- mv 000-add-xxx-config.patch …/patches/linux-5.10/rk3568_patch/kernel.patch
- 代码上库
- git push origin HEAD:refs/for/master
驱动开发 – 调试
hdc,全称 HarmonyOS Device Connector,是HarmonyOS提供的方便开发人员调试的命令行工具,使用该工具可以在个人电脑与设备或模拟器之间进行交互通讯。
开发板需打开开发者选项
源码根目录下:
./build.sh --product-name ohos-sdk –ccache
生成的工具在out/sdk/ohos-sdk/windows/toolchains目录下:
hdc list targets // 获取设备信息 key
hdc -t key shell // 类似与Android adb 命令
hdc kill
hdc file send D:\ts_uart.uart data // 文件发送至设备data目录下
hdc file recv /data/local/tmp/a.txt ./a.txt // 接收设备文件
hdc install hwadmin.hap // 安装应用
hdc uninstall package // 卸载应用