OpenHarmony4.0系列(二)驱动适配方法

本文介绍了OpenHarmony开源项目的目标、技术架构,包括其分层设计和编译过程,以及如何使用Docker管理和驱动开发,包括Linux内核定制、Docker环境设置和HarmonyOSDeviceConnector(hdc)调试工具的使用。
摘要由CSDN通过智能技术生成

系统简介

  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		// 卸载应用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值