[文章]Rockchip 快速上手 OpenHarmony 2.0 教程 RK3288/RK3326/RK3399/RK3566

阅读量0
0
5
概述
文档主要介绍OpenHarmony 2.0如何快速移植 RK3288/RK3326/RK3399/RK3566 等芯片, 让开发者能够进一步开发和适配Rockchip平台。

各芯片系统支持状态
芯片名称
OpenHarmony L0
OpenHarmony L1
OpenHarmony L2
RK3288
N
N
Y
RK3326
N
N
Y
RK3399
N
N
Y
RK3566/RK3568
N
N
Y
修订记录
日期
版本
作者
修改说明
2020-12-11
V0.0.1
Caesar Wang
初始版本。

源码获取说明
获取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 下载命令如下:
芯片
版本
下载命令
RK3566、RK3568
Linux4.19
repo init --repo-url ssh://git@www.rockchip.com.cn/repo/rk/tools/repo -u  
ssh://git@www.rockchip.com.cn/linux/rockchip/platform/manifests -b linux -m  
rk356x_linux_release.xml
RK3399
Linux4.19
repo init --repo-url ssh://git@www.rockchip.com.cn/repo/rk/tools/repo -u  
ssh://git@www.rockchip.com.cn/linux/rockchip/platform/manifests -b linux -m  
rk3399_linux4.19_release.xml
RK3326
Linux4.19
repo init --repo-url ssh://git@www.rockchip.com.cn/repo/rk/tools/repo -u  
ssh://git@www.rockchip.com.cn/linux/rockchip/platform/manifests -b linux -m  
rk3326_linux4.19_release.xml
RK3288
Linux4.19
repo init --repo-url ssh://git@www.rockchip.com.cn/repo/rk/tools/repo -u  
ssh://git@www.rockchip.com.cn/linux/rockchip/platform/manifests -b linux -m  
rk3288_linux4.19_release.xml
编译说明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. commit 3301ec6b2669ff1c7014ecbc320dcb41aab16734 (HEAD)
  9. Merge: 8186179 1441a80
  10. Author: openharmony_ci <7387629+openharmony_ci@user.noreply.gitee.com>
  11. Date:   Thu Jul 29 08:16:36 2021 +0000

  12.     !16 modify for musl compile
  13.     Merge pull request !16 from huanglei/modify-for-musl-compile
复制代码
Kernel适配

使用rockchip官方提供的Kernel 4.19, 再适配如下patch:
  1. kernel/
  2. └── rk3399_ohos-l2.patch
复制代码

触摸的适配
  • a. 找到对应设备
  1. console:/ $ cat /proc/bus/input/devices

  2. 找到对应设备,比如触摸gsl3673, u***对应的handler event
  3. I: Bus=0018 Vendor=0000 Product=0000 Version=0000
  4. N: Name4="gsl3673"
  5. P: Phys=
  6. S: Sysfs=/de.vices/platform/ff110000.i2c/i2c-1/91-0040/input/input1
  7. U: Uniq=
  8. H:7 Handlers=event1 cpufreq dmcfreq
  9. B: PROP=2
  10. B: EV=10000b
  11. B: KEY=0
  12. 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 分区参考)

NumberStart (sector)End (sector)SizeName
116384245754096Kuboot
224576327674096Ktrust
332768409594096Kmisc
44096010649532Mboot
510649630310432Mrecovery
617203223756732Mbakcup
723756836863964Moem
8368640129515516144Mrootfs
912951552305356468585Muserdata
  • uboot 分区:供 uboot 编译出来的 uboot.img。
  • trust 分区:供 uboot 编译出来的 trust.img。
  • misc 分区:供 misc.img,给 recovery 使用。
  • boot 分区:供 kernel 编译出来的 boot.img。
  • recovery 分区:供 recovery 编译出的 recovery.img。
  • backup 分区:预留,暂时没有用,后续跟 Android 一样作为 recovery 的 backup 使用。
  • oem 分区:供 OHOS 编出来的vendor.img。挂载在 /vendor目录。
  • rootfs 分区:供 OHOS 编出来的 system.img。
  • userdata 分区:供 OHOS 编出来的 userdata.img,挂载在 /data 目录下。


RK3399-EVB-IND下载的固件
  • 百度云网盘
提取码: xrry

刷机说明
RK3399 挖掘机接口分布图如下:
RK3399 IND 行业板接口分布图如下:

Windows 刷机说明
SDK 提供 Windows 烧写工具(工具版本需要 V2.84 或以上),工具位于工程根目录:
  1. tools/
  2. ├── windows/RKDevTool
复制代码

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

Linux 刷机说明
Linux 下的烧写工具位于 tools/linux 目录下(Linux_Upgrade_Tool 工具版本需要 V1.65 或以上),请确认你的板子连接到 MASKROM/loader rocku***。比如编译生成的固件在 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
复制代码

运行效果
FAQ
目前发现存在的一些问题:
  • Launcher显示颜色反调, 需要要求内核format更改位DRM_FORMAT_XBGR8888,
    实际是weston或显示框架上的问题
  • vsync问题,如上显示补丁vsync.patch,主要还是框架上的不兼容
  • OS对UI或框架对显示宽需要16字节对齐,如果遇到宽不是16对齐的分辨率,就会遇到显示异常
TODO
  • 适配Rockchip的device目录,添加SOC内核构建的子系统
  • 使用OHOS自带的kernel,来适配Rockchip平台
  • HDF驱动的移植, LCD、触摸屏,WiFi等外设的适配
  • Rockchip音视频多媒体,图形加速的适配
  • Weston性能、功能优化的适配

回帖

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容图片侵权或者其他问题,请联系本站作侵删。 侵权投诉
链接复制成功,分享给好友