任务动机:openEuler 20.03 LTS面向RK3399移植
任务描述:
1. 安装编译环境
1.1 安装开发包
sudo apt-get install build-essential lzop libncurses5-dev libssl-dev
如果使用的是 64 位的 Ubuntu,还需要安装
sudo apt-get install libc6:i386
1.2 安装mkbootimg工具
git clone https://github.com/neo-technologies/rockchip-mkbootimg.git
cd rockchip-mkbootimg
make && sudo make install
注:若没安装git 包,先输入sudo apt install git进行安装
注:若没安装git 包,先输入sudo apt install git
进行安装
1.3 获取内核源码和安装交叉编译工具链
mkdir RK
cd RK
Firefly-RK3399 Linux 内核代码获取方式
git clone https://github.com/rockchip-linux/kernel/tree/develop-4.19
(下载不成功,可以下载压缩包,然后解压) 获取交叉编译工具
git clone https://TeeFirefly@gitlab.com/TeeFirefly/prebuilts.git
注:内核与编译工具应放在同一目录下
1.4 编译内核
Linux 内核采用的config 文件为rk3399pro_npu_defconfig, dts 文件为rk3399-firefly-linux.dts config 文件在~/linux-kernel/arch/arm64/configs/firefly_linux_defconfig,对应生成kernel.img 文件 dts 文件在~/ linux-kernel/arch/arm64/boot/dts/rockchip/rk3399-firefly-linux.dts,对应生成resource.img 文件
make ARCH=arm64 rk3399pro_npu_defconfig
问题1:出现错误,提示没有装python
解决方法:安装python
sudo apt-get install python然后再次执行make ARCH=arm64 rk3399-firefly-linux.img
问题2:出现错误 lz4c:not found
解决方法:安装liblz4-tool
sudo apt-get install liblz4-tool
make ARCH=arm64 rk3399-firefly-linux.img
内核编译供成功,见下图
1.5 生成img镜像文件
1.6 警告信息
2. 内核移植
2.1 内核下载
https://gitee.com/openeuler/kernel/tree/4.19.90-2005.2.0/
2.2 文件拷贝
(1)将Rk-4.19内核源码的rk3399pro_npu_defconfig文件copy进openeuler内核的~/arch/arm64/configs文件夹中
(2)将Rk-4.19内核源码的~/arch/arm64/Makefile文件替换openeuler内核的~/arch/arm64/Makefile
(3)替换arm64/boot/dts目录下的:rockchip
(4)在根目录下增加RK-4.19中多余的单个文档与图片。
2.3 依赖安装
sudo apt-get install build-essential gcc-aarch64-linux-gnu binutils-aarch64-linux-gnu bc libssl-dev -y
2.4 变量配置
export ARCH=arm64
export CROSS_COMPILE=aarch64-linux-gnu-
2.5 编译
make ARCH=arm64 rk3399pro_npu_defconfig
make ARCH=arm64 rk3399-firefly-linux.img
报错:scripts缺少文件; 替换RK-4.9的scripts文件夹到openeuler中。
继续编译
make ARCH=arm64 rk3399-firefly-linux.img
报错:dt-bindings文件夹的文件找不到,替换RK-4.9的dt-bindings文件夹到openeuler中。
make ARCH=arm64 rk3399-firefly-linux.img
内核和资源镜像生成成功,见下图kernel.img和resources.img