赞
踩
对于Linux 4.19版本,rockchip提供了官方4.19内核,由于rk官方对于4.19内核版本有支持,但是仅限于少数rk的板子,所以要支持firefly的rk3399-roc-pc-plus(后称为roc-plus),需要进行板级适配/移植。
一. 按照firefly官方文档介绍——介绍 — Firefly Wiki (t-firefly.com),相关工具链和环境配置可按照firefly文档配置,下载4.4内核版本的sdk,其中(sdk)/kernel/下的文件为Linux4.4版本的内核文件。
二. 下载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函数):
还可能遇到生成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的即可)
七. 可能会遇到相关驱动无法工作的问题,先搁置一下,后面解决。
最终可以正常运行起来:
可以看到至此roc-plus运行4.19最小系统暂时没有问题,随后有两个主要的考虑方向,一是在现有系统上进行设备驱动的适配,二是参考open harmony,直接将华为sdk的文件系统烧录至roc-plus上,随后根据项目需要进行相关的驱动移植。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。