社区编辑申请
注册/登录
OpenHarmony 2.0 如何移植 RK3399
开发 前端
本教程介绍 OpenAtom OpenHarmony(以下简称“OpenHarmony”) L2如何快速移植 rk3288/RK3326/RK3399/RK3566 等芯片, 让开发者能够进一步开发和适配 Rockchip 平台。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

概述

本教程介绍 OpenAtom OpenHarmony(以下简称“OpenHarmony”) L2如何快速移植 rk3288/RK3326/RK3399/RK3566 等芯片, 让开发者能够进一步开发和适配 Rockchip 平台。

各芯片系统支持状态

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

获取OpenHarmony L2官网源码

参考 OpenHarmony官网 获取最新 master 分支代码

  1. repo init -u https://gitee.com/openharmony/manifest.git -b master --no-repo-verify 
  2. repo sync -c 
  3. repo forall -c 'git lfs pull' 

获取Rockchip官方Linux SDK源码

Rockchip Linux SDK 下载命令如下:

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

如果您碰到无权限下载代码的问题,可访问:

https://gitee.com/caesar-wang/openharmony-rockchip/issues/I45DEB

编译说明

OpenHarmony L2 编译

  1. bash build/prebuilts_download.sh 
  2. ./build.sh --product-name Hi3516DV300 

Rockchip Linux 编译

  1. ./build.sh lunch (选择对应的芯片) 
  2. ./build.sh 

RK3399 移植

分区挂载的处理

  1. sudo vi init.cfg 
  2.    "mount ext4 /dev/block/platform/fe330000.sdhci/by-name/oem /vendor wait rdonly barrier=1"
  3.                 "mount ext4 /dev/block/platform/fe330000.sdhci/by-name/userdata /data wait nosuid nodev noatime barrier=1,data=ordered,noauto_da_alloc" 

显示问题

vsync, 请 git apply 打上如下 patch

  1.  patches/ 
  2. └── foundation 
  3.     └── graphic 
  4.         └── standard 
  5.             └── vsync.patch 
  6.      
  7. base commit
  8.  
  9. commit 3301ec6b2669ff1c7014ecbc320dcb41aab16734 (HEAD) 
  10. Merge: 8186179 1441a80 
  11. Author: openharmony_ci <7387629+openharmony_ci@user.noreply.gitee.com> 
  12. Date:   Thu Jul 29 08:16:36 2021 +0000 
  13.  
  14.     !16 modify for musl compile 
  15.     Merge pull request !16 from huanglei/modify-for-musl-compile 

Kernel适配

a. 找到对应设备

  1. console:/ $ cat /proc/bus/input/devices 
  2.  
  3. 找到对应设备,比如触摸gsl3673, usb对应的handler event 
  4. I: Bus=0018 Vendor=0000 Product=0000 Version=0000 
  5. N: Name4="gsl3673" 
  6. P: Phys= 
  7. S: Sysfs=/de.vices/platform/ff110000.i2c/i2c-1/91-0040/input/input1 
  8. U: Uniq= 
  9. H: 7 Handlers=event1 cpufreq dmcfreq  
  10. B: PROP=2 
  11. B: EV=10000b 
  12. B: KEY=0 
  13. B: ABS=2658000 0 

b. 找到对应设备. 上面触摸屏是 event1

  1. console:/ $ cat /sys/class/input/event1/dev 
  2. 13:65 
  3. 得到从设备号是13:65 

c. 主设备号的文件 data/udev/data/看下有没有对应,没有的话,copy 一份修改一下比如 tp 修改如下:

  1. console:/ # cat data/udev/data/c13\:65 
  2. I:1104248553 
  3. E:ID_INPUT=1 
  4. E:ID_INPUT_TOUCHSCREEN=1 

调试工具

  1. tools/ 
  2. ├── busybox 
  3. └── strace 

添加工具方便调试,hilog 也可以调试

系统分区说明

镜像的分区如下

  1. ├── MiniLoaderAll.bin 
  2. ├── boot.img 
  3. ├── misc.img 
  4. ├── oem.img 
  5. ├── parameter.txt 
  6. ├── recovery.img 
  7. ├── rootfs.img 
  8. ├── trust.img 
  9. ├── uboot.img 
  10. └── userdata.img 

其中 rootfs.img 对应 OpenHarmony L2 编译出来的 system.imgoem.img 对应 OpenHarmony L2 编译出来的 vendor.imguserdata.img 对应 OpenHarmony L2 编译出来的 userdata.img

默认分区说明 ( 下面是 RK3399 IND 分区参考)

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

uboot 分区:供 uboot 编译出来的 uboot.img。

trust 分区:供 uboot 编译出来的 trust.img。

misc 分区:供 misc.img,给 recovery 使用。

boot 分区:供 kernel 编译出来的 boot.img。

recovery 分区:供 recovery 编译出的 recovery.img。

backup 分区:预留,暂时没有用。

oem 分区:供 OHOS 编出来的vendor.img。挂载在 /vendor目录。

rootfs 分区:供 OHOS 编出来的 system.img。

userdata 分区:供 OHOS 编出来的 userdata.img,挂载在 /data 目录下。

RK3399EVBIND 固件

预编好的 Openharmoy L2 固件,适配 RK3399 EVB 行业版开发板, 分享如下:

RK3399 EVB IND行业版-OHOS L2 提取码: xrry

刷机说明

RK3399 挖掘机接口分布图如下:

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

RK3399 IND 行业板接口分布图如下:

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

Windows 刷机说明

SDK 提供 Windows 烧写工具(工具版本需要 V2.84 或以上),工具位于工程根目录:

  1. RK3399_EVB_IND-OHOS_L2-20210810/RKDevTool_Release 

如下图,编译生成相应的固件后,设备烧写需要进入 MASKROM 或 BootROM 烧写模式,连接好 USB 下载线后,按住按键“MASKROM”不放并按下复位键“RST”后松手,就能进入 MASKROM 模式,加载编译生成固件的相应路径后,点击“执行”进行烧写,也可以按 “recovery" 按键不放并按下复位键 “RST” 后松手进入 loader 模式进行烧写,下面是 MASKROM 模式的分区偏移及烧写文件。(注意:Windows PC 需要在管理员权限运行工具才可执行)

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

注:烧写前,需安装最新 USB 驱动,驱动详见:

  1. tools/DriverAssitant_v5.11.zip 

Linux 刷机说明

Linux 下的烧写工具位于 tools 目录下(Linux_Upgrade_Tool 工具版本需要 V1.65 或以上),请确认你的板子连接到 MASKROM/loader rockusb。比如编译生成的固件在 rockdev 目录下,升级命令如下:

  1. sudo ./upgrade_tool ul rockdev/MiniLoaderAll.bin 
  2. sudo ./upgrade_tool di -p rockdev/parameter.txt 
  3. sudo ./upgrade_tool di -u rockdev/uboot.img 
  4. sudo ./upgrade_tool di -t rockdev/trust.img 
  5. sudo ./upgrade_tool di -misc rockdev/misc.img 
  6. sudo ./upgrade_tool di -b rockdev/boot.img 
  7. sudo ./upgrade_tool di -recovery rockdev/recovery.img 
  8. sudo ./upgrade_tool di -oem rockdev/oem.img 
  9. sudo ./upgrade_tool di -rootfs rocdev/rootfs.img 
  10. sudo ./upgrade_tool di -userdata rockdev/userdata.img 
  11. sudo ./upgrade_tool rd 

或升级打包后的完整固件:

  1. sudo ./upgrade_tool uf rockdev/update.img 

或在根目录,机器在 MASKROM 状态运行如下升级:

  1. ./rkflash.sh 

运行效果

OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区
OpenHarmony 2.0 如何移植 RK3399-鸿蒙HarmonyOS技术社区

FAQ

目前发现存在的一些问题:

1.Launcher显示颜色反调,需要要求内核format更改位DRM_FORMAT_XBGR8888,实际是 weston 或显示框架上的问题;

2.vsync 问题,如上显示补丁 vsync.patch,主要还是框架上的不兼容;

3.OS 对 UI 或框架对显示宽需要 16 字节对齐,如果遇到宽不是 16 对齐的分辨率,就会遇到显示异常。

TODO

1.适配 Rockchip 的 device 目录,添加 SOC 内核构建的子系统;

2.使用 OHOS 自带的 kernel,来适配 Rockchip 平台;

3.HDF 驱动的移植, LCD、触摸屏,WiFi 等外设的适配;

4.Rockchip 音视频多媒体,图形加速的适配;

5.Weston 性能、功能优化的适配。

想了解更多内容,请访问:

51CTO和华为官方合作共建的鸿蒙技术社区

https://harmonyos.51cto.com

 

责任编辑:jianghua 来源: 鸿蒙社区
相关推荐

2022-04-15 14:31:02

鸿蒙操作系统

2022-05-11 15:08:52

驱动开发系统移植

2022-04-02 20:45:04

Hi3516开发板操作系统鸿蒙

2022-06-09 14:40:14

系统移植鸿蒙

2022-04-18 10:37:01

鸿蒙操作系统开发工具

2022-04-06 11:27:05

harmonyeTS 开发NAPI开发

2022-02-09 19:45:41

2022-05-24 15:55:37

避障小车华为

2022-06-14 15:07:04

IPC客户端服务端

2022-05-11 14:54:02

输入法框架鸿蒙

2022-04-20 20:28:40

HDF 驱动框架鸿蒙操作系统

2022-04-07 15:28:16

HarmonyOS鸿蒙操作系统

2022-03-02 16:08:31

Harmony应用开发鸿蒙

2022-04-07 14:33:31

操作系统鸿蒙HarmonyOS

2022-06-07 10:33:29

Camera组件鸿蒙

2022-03-03 19:21:50

Harmony鸿蒙操作系统

2022-06-07 10:40:05

蓝牙鸿蒙

2022-06-06 10:55:51

本地服务鸿蒙

2022-02-17 16:47:40

OpenharmonIPC通信鸿蒙

2022-03-28 15:40:34

harmony鸿蒙操作系统

同话题下的热门内容

手把手教你用装饰器扩展 Python 计时器IOC-Golang 的 AOP 原理与应用Vue 里,多级菜单要如何设计才显得专业?分析了 700 万份工作需求,市场需求最高的八种编程语言是这些Vue 2.7 正式发布,代号为 Naruto手把手教你实现一个 Python 计时器2022 年编程语言趋势:Swift、Kotlin 热度持续增长,收入最高的五种语言竟是它们分布式事务(Seata) 四大模式详解

编辑推荐

太厉害了,终于有人能把TCP/IP协议讲的明明白白了!牛人5次面试腾讯不成功的经验HBase原理–所有Region切分的细节都在这里了Javascript如何监听页面刷新和关闭事件如何搭建一个HTTPS服务端
我收藏的内容
点赞
收藏

51CTO技术栈公众号