RK3399已支持OpenHarmony 2.0 ! 如何快速适配?

概述

本教程主要介绍OpenHarmony L2如何快速移植 rk3288/RK3326/RK3399/RK3566 等芯片, 让开发者能够进一步开发和适配Rockchip平台。

各芯片系统支持状态

  各芯片系统支持状态


获取OpenHarmony L2官网源码

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

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

获取Rockchip官方Linux SDK源码

Rockchip Linux SDK 下载命令如下:

 Rockchip Linux SDK 下载命令

编译说明

OpenHarmony L2编译

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

Rockchip Linux编译

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

RK3399 移植

分区挂载的处理
将vendor和data分区修改如下:

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

Kernel适配

a. 找到对应设备

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

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

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

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

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

调试工具

tools/

├── busybox
└── strace

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

 

系统分区说明

镜像的分区如下

├── MiniLoaderAll.bin
├── boot.img
├── misc.img
├── oem.img
├── parameter.txt
├── recovery.img
├── rootfs.img
├── trust.img
├── uboot.img
└── userdata.img

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

 

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

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 目录下。

 

刷机说明

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

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

 

Windows 刷机说明

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

RK3399_EVB_IND-OHOS_L2-20210810/RKDevTool_Release

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

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

tools/DriverAssitant_v5.11.zip

Linux 刷机说明

 

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

sudo ./upgrade_tool ul rockdev/MiniLoaderAll.bin
sudo ./upgrade_tool di -p rockdev/parameter.txt
sudo ./upgrade_tool di -u rockdev/uboot.img
sudo ./upgrade_tool di -t rockdev/trust.img
sudo ./upgrade_tool di -misc rockdev/misc.img
sudo ./upgrade_tool di -b rockdev/boot.img
sudo ./upgrade_tool di -recovery rockdev/recovery.img
sudo ./upgrade_tool di -oem rockdev/oem.img
sudo ./upgrade_tool di -rootfs rocdev/rootfs.img
sudo ./upgrade_tool di -userdata rockdev/userdata.img
sudo ./upgrade_tool rd

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

sudo ./upgrade_tool uf rockdev/update.img

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

./rkflash.sh

运行效果

 运行效果1

 运行效果2

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性能、功能优化的适配。

 

★博文内容均由个人提供,与平台无关,如有违法或侵权,请与网站管理员联系。

★文明上网,请理性发言。内容一周内被举报5次,发文人进小黑屋喔~

评论