rk3399-roc-pc-plus开发板升级Linux4.19内核

文章目录

  • 概述
  • 具体步骤
      • 准备firefly sdk
      • 准备rk官方Linux 4.19
      • 开始移植

概述

对于Linux 4.19版本,rockchip提供了官方4.19内核,由于rk官方对于4.19内核版本有支持,但是仅限于少数rk的板子,所以要支持firefly的rk3399-roc-pc-plus(后称为roc-plus),需要进行板级适配/移植。

具体步骤

准备firefly sdk

一. 按照firefly官方文档介绍——介绍 — Firefly Wiki (t-firefly.com),相关工具链和环境配置可按照firefly文档配置,下载4.4内核版本的sdk,其中(sdk)/kernel/下的文件为Linux4.4版本的内核文件。

准备rk官方Linux 4.19

二. 下载rk官方的develop-4.19内核文件。下载之后,将Makefile的工具链改为firefly sdk的prebuild里面相应的路径。

开始移植

三. 进入4.4版本的kernel/目录,先后执行

make ARCH=arm64 firefly_linux_defconfig
make ARCH=arm64 rk3399-roc-pc-plus.img -j4

结束后,会产生.config配置文件和boot.img这一最终打包文件(boot.img是kernel.img和resource.img打包而成,而kernel.img是Image文件压缩生成,resource.img是dtb文件压缩生成)。

四. 将三生成的.config文件cp到develop-4.19/目录下,执行:

make ARCH=arm64 Image(或make ARCH=arm64)

中间可能会遇到restart config问题,原因是脚本会自动检测config文件的变化,解决方法是在Scripts/kconfig/conf.c中屏蔽关于config检查部分(check_conf函数):
rk3399-roc-pc-plus开发板升级Linux4.19内核_第1张图片
rk3399-roc-pc-plus开发板升级Linux4.19内核_第2张图片

还可能遇到生成rtl8723du_fw.gen.o和rtl8723du_config.gen.o失败的问题,将4.4版本下的firmware/下的rtl8723du_config和rtl8723du_fw拷贝到4.19版本下的同一位置即可。

五. 编译完成后,将arch/arm64/boot/中生成的Image文件cp到4.4内核下的arch/arm64/boot的image文件,进行替换。然后执行:

scripts/mkkrnlimg arch/arm64/boot/Image kernel.img >/dev/null

scripts/mkimg --dtb rk3399-roc-pc-plus.dtb

这两个脚本的功能是将Image压缩为kernel.img,并将dtb文件压缩为resource.img并最终合成boot.img。

六. 将boot.img按照原先的烧录分区烧录,总共烧录loader,parameter,uboot,trust,boot,rootfs分区。(rootfs随便选一个ubuntu的即可)

七. 可能会遇到相关驱动无法工作的问题,先搁置一下,后面解决。

最终可以正常运行起来:
rk3399-roc-pc-plus开发板升级Linux4.19内核_第3张图片
可以看到至此roc-plus运行4.19最小系统暂时没有问题,随后有两个主要的考虑方向,一是在现有系统上进行设备驱动的适配,二是参考open harmony,直接将华为sdk的文件系统烧录至roc-plus上,随后根据项目需要进行相关的驱动移植。

你可能感兴趣的:(linux,华为,harmonyos)