说明
通过网上现有资料和文章,我在rk3399pro上移植openharmony3.0标准版。并支持屏幕显示,触摸,HDF驱动框架,支持使用HDF驱动gpio点亮led。文章主要是对网上移植资料的整理和移植步骤的说明。移植过程中还会小问题,这里不做说明,只介绍大体过程,对移植过程做记录,方便后期查看。
环境介绍
参考文章:一种快速移植OpenHarmony Linux内核的方法
采用的是一种快速移植的方法,在原本Android9的镜像下,使用了./build.sh --product-name Hi3516DV300编译出来的hi3516的system.img、userdata.img、vendor.img ,通过瑞芯微开发工具烧录到对应分区如下图。需要对openharmony源码经行相应修改,否则这几个镜像挂载不上,下面做具体说明。
修改挂载镜像关键文件
openharmony/base/startup/init_lite/services/etc/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"
屏幕
我使用的是1280x800的十寸的mipi屏。
openharmony/foundation/graphic/standard/frameworks/wm/src
修改以上内容,否则无法进入系统ui界面。
触摸
openharmony/third_party/eudev/rules.d/touchscreen.rules
ATTRS{name}=="ft5x0x_ts_2", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1"
ATTRS{name}=="VSoC keyboard", ENV{ID_INPUT}="1", ENV{ID_INPUT_KEYBOARD}="1"
DRIVERS=="hid-multitouch", ENV{ID_INPUT}="1", ENV{ID_INPUT_TOUCHSCREEN}="1"
在板子上使用cat /proc/bus/input/devices查看触摸屏名称,这里ATTRS{name}==指定自己触摸屏的名字。
内核
内核使用的4.4版本的,在.config添加以下配置项,打开虚拟终端设备,否则屏幕无法点亮。
CONFIG_VT=y
CONFIG_CONSOLE_TRANSLATIONS=y
CONFIG_VT_CONSOLE=y
CONFIG_VT_CONSOLE_SLEEP=y
CONFIG_HW_CONSOLE=y
CONFIG_VT_HW_CONSOLE_BINDING=y
内核的编译:一开始可以将内核单独编译使用make ARCH=arm64 CROSS_COMPILE=/prebuilts/gcc/linux-x86/aarch64/gcc-linaro-7.5.0-2019.12-x86_64_aarch64-linux-gnu/bin/aarch64-linux-gnu- rd3399pro-android.img -j12
CROSS_COMPILE#指明交叉编译工具的路径和使用的工具。