树莓派4B移植OHOS 3.0 LTS标准系统 原创 精华
【本文正在参与优质创作者激励】
终于在树莓派4B上将OHOS3.0启动起来了,虽然还不完整,目前只能实现的显示和触摸。但是可以和大家分享下我的思路。
我的方法比较简单粗暴,直接使用的树莓派的树莓派linux rpi-5.10.y内核。
Git地址:https://github.com/raspberrypi/linux
然后编译OHOS3.0的文件系统,看缺什么补什么大概是这个意思。
目前发现OHOS需要内核开启selinux和binder
make ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- menuconfig
然后修改下面几项:
目前发现开启这两项hilog就可以输出。
内核挂上根文件系统,至少可以启动串口有输出了。然后分析下OHOS的图形子系统。
OHOS目前是 内核 -> DRM -> libdrm -> wayland -> weston 这么个模式,如有错误欢迎指出。这里要感谢 @梁克雷 和钊哥ohos第三方板移植群各位的支持。
所以树莓派的DRM正常了,后面显示应该就是没为题的。好在树莓派的生态比较开放,资料还是比较好获取的,在树莓派官方论坛趴了一段时间。
Pi4的GPU是VideoCore VI支持OpenGL ES 3.2,而Pi3的GPU是VideoCore IV支持OpenGL ES 2.0。
VideoCore IV 驱动程序是 VC4,VideoCore VI 驱动程序的 V3D。
需要在 config.txt 中开启 vc4-fkms-v3d
而驱动kernal已经提供了模块,只要在init阶段将模块加载就可以了
这里有个比较恶心的地方,OHOS的根文件系统使用的是Toybox,但是很多工具不支持,比如modprobe就没有,所以只能根据modules.dep文件,一个一个insmod。当然可以直接将驱动编进内核也是可以的。
为了验证drm和libdrm是否正常,我写了一个简单的测试
其实libdrm是自带测试的modetest,但是OHOS没有加入编译。也可以将modetest加入编译框架
1.为modetest添加BUILD.gn
third_party\libdrm\tests\modetest\BUILD.gn
2.modetest依赖这个
third_party\libdrm\tests\util\BUILD.gn
3.加入到OHOS编译框架,加在weston的依赖项里就可以了
third_party\weston\BUILD.gn
有个报错:问题不大,提示这个未使用,注释的就好了
如果modetest通过了,那剩下的就简单了指定weston的后端就可以了。
system\etc\weston.ini
接下来是触摸部分,我使用的是DSI接口的触摸屏。
然后查看驱动模块
发现驱动是raspberrypi-ts,那就好办了,在init的时候安装这个模块就好了。
基本是这么个思路,写出来和大家分享下,希望对正在移植的小伙伴能有些帮助。当然加到鸿蒙编译框架可能没有这么简单,接下来我会先整理这部分的文档,就更新在https://gitee.com/liangzili/harmony-raspberry这个仓把,这个码仓我之前移植过OHOS1.0 LiteOS-A内核到树莓派2ModuleB,就直接放到一起了,近期会更新,感兴趣的可以关注,一起讨论。
这下鸿蒙能跑的地方更多了,感谢大佬分享。
大佬,能加一下那个第三方板移植群?
哇哦😯 ,膜拜大佬
我亮哥还是牛批的