首发!友善之臂NanoPi M1 Plus移植Openharmony标准版 原创 精华
【本文正在参与优质创作者激励】
首先感谢永恒666分享的
4412开发板移植openharmony3.0标准版-原来移植ohos可以这样简单!
本文参考这种方式在友善之臂NanoPi M1 Plus上移植了Openharmony标准版
用的方法比较简单粗暴,目前只是能成功跑起来看到画面。
整理实现方式如下:
一 OpenHarmony Linux内核移植
参考:一种快速移植OpenHarmony Linux内核的方法
1.按照Building U-boot and Linux for H5/H3/H2+/zh获取NanoPi M1 Plus内核
主要步骤如下
1.1 安装交叉编译器
下载交叉编译器arm-cortexa9-linux-gnueabihf-4.9.3.tar.xz,然后解压编译器:
然后将编译器的路径加入到PATH中,用vi编辑vi ~/.bashrc,在末尾加入以下内容,
此处建议使用每次重开终端前输入以下指令的方式:
执行一下~/.bashrc脚本让设置立即在当前shell窗口中生效,注意"."后面有个空格:
这个编译器是64位的,不能在32位的Linux系统上运行,安装完成后,你可以快速的验证是否安装成功:
1.2 编译Linux内核
在编译过ipcamera_hispark_taurus的源码中下载NanoPi M1 Plus Linux4.14内核源码,并切换分支:
我的ohos3.0路径是/home/soon/ohos300/,这个路径替换成你自己的
编译确认环境没有问题:
编译完成后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。
2 内核态基础代码的移植
将以下路径代码,从OpenHarmony3.0内核代码目录kernel/linux/linux-4.19/drivers/staging中,拷贝到out/KERNEL_OBJ/kernel/src_tmp/linux-nanopi/drivers/staging 下。
在三方内核的drivers/staging/Kconfig文件内增加如下代码:
source “drivers/staging/hievent/Kconfig”
在内核config项中打开对应的CONFIG控制宏:CONFIG_HILOG和CONFIG_HIEVENT。
3 内核态必选特性HDF的移植
3.1打HDF补丁。
因为patch_hdf.sh是最近才上传的,如果用repo下载的,先更新下/home/soon/ohos300/drivers/adapter/khdf/linux这个目录
也可以去把整个仓库下载来替换。指令更新可以使用如下
在Linux内核打HDF补丁时,执行补丁shell脚本合入HDF补丁。
配置HDF补丁脚本的三个变量参数。
获取patch_hdf.sh脚本。
执行patch_hdf.sh脚本依次传入三个变量参数。
patch_hdf.sh脚本三个参数含义为:
第一个入参为工程根目录路径,第二入参为内核目录路径,第三个入参为hdf补丁文件。
./patch_hdf.sh [工程根目录路径] [内核目录路径] [hdf补丁文件]
我这边用的指令如下
3.2配置config。
提供HDF基本配置,如果需要其他功能,通过menuconfig打开对应驱动开关即可。
HDF补丁执行成功后,默认HDF开关是关闭的,打开HDF基本配置选项如下:
4 打开内核的一些关键配置
4.1 打开 Android Drivers 和Android Binder IPC Driver
Device Drivers —>
Android —>
[] Android Drivers (开启)
[] Android Binder IPC Driver (开启)
4.2 打开SELinux Support相关配置
参考亮子力的整理,树莓派4B移植OHOS 3.0 LTS标准系统
可以在make menuconfig 下用/ 执行查找关键字,看配置项的位置和依赖,
也可以参考文章附件配置。
5 重新编译生成zImage 和dtb
配置完成后直接下以下指令
编译完成后会在arch/arm/boot/目录下生成zImage,并且在arch/arm/boot/dts/目录下生成dtb文件。把这两个文件拷贝出来备用。
二 合成boot.img
1. 先拷贝一份NanoPi M1 Plus的boot 分区到~/ohos300/out/ohos-arm-release/packages/phone/boot/下。
可以从制作的SD卡上拷贝,如何制作SD 启动卡参考NanoPi M1 Plus 4.3.3.1 烧写到TF卡
2.替换zImage和dtb文件
3.用build_boot.py生成boot.img
参考树莓派rpi3的device\rpi3\rpi3\kernel\build_kernel.py脚本,修改
把build_boot.py放到~/ohos300 执行以下指令生成boot.img,
三 合成SD卡烧录img
1 下载Build an sd card image环境
2 准备system.img、vendor.img、userdata.img
这边用的之前编译的树莓派rpi3的img
将friendlycore-focal_4.14_armhf下的.img 删除
并将之前合好的boot.img、system.img、vendor.img、userdata.img拷贝到该目录下
3 修改partmap.txt
4 合成SD卡烧录img
在sd-fuse_h3目录下执行
会在out目录下生成img
5 烧录img
可以用dd 也可以用Win32DiskImager,dd指令如下
四 移植参考资料整理如下,感谢各位大神分享
1.韦东山老师
移植RTOS需要做的事
https://harmonyos.51cto.com/posts/1485
移植RTOS必备基础知识
https://harmonyos.51cto.com/posts/1486
把liteos-a移植到STM32MP157开发手册
https://harmonyos.51cto.com/posts/1273
把鸿蒙Liteos-a移植到STM32MP157部分直播课件
https://harmonyos.51cto.com/posts/1264
鸿蒙Liteos-a内核移植手册(PDF下载)
https://harmonyos.51cto.com/posts/841
韦东山老师的课程推荐一波
https://edu.51cto.com/lecturer/8923445-p2.html
2.连志安老师/广州慧睿思通科技股份有限公司
移植OpenHarmony 3.0到ARM单片机
https://harmonyos.51cto.com/posts/8748
首发!成功移植OpenHarmony到龙芯开发板,代码开源~
https://harmonyos.51cto.com/posts/9633
3.亮子力
树莓派4B移植OHOS 3.0 LTS标准系统
https://harmonyos.51cto.com/posts/9315
#星光计划2.0# 添加树莓派4B到OHOS3.0编译框架
https://harmonyos.51cto.com/posts/9473
树莓派U-Boot编译教程
https://harmonyos.51cto.com/posts/2907
#2020征文-开发板# 鸿蒙 移植 树莓派(上)搭建环境下载源码
https://harmonyos.51cto.com/posts/2903
#2020征文-开发板# 鸿蒙 移植 树莓派(中)添加单板
https://harmonyos.51cto.com/posts/2905
#2020征文-开发板# 鸿蒙 移植 树莓派(下)修改源码
https://harmonyos.51cto.com/posts/2906
亮子力Gitee
https://gitee.com/liangzili/harmony-raspberry
4.福州市凌睿智捷电子有限公司
首发!成功移植OpenHarmony到瑞芯微RK2206开发板,即将开源~
https://harmonyos.51cto.com/posts/9659
楼主站在了巨人的肩膀上,给楼主点赞
感谢支持