前面我们已经搭建好了编译·一个环境https://blog.csdn.net/qq_24093081/article/details/128394606
所以在这里我们就需要下载瑞芯微提供的SDK进行编译,由于RK3568支持多种系统,比如Android11,Linux(debian、Ubuntu、buildroot、yocto),鸿蒙等系统,所以在下面会分不同的系统进行编译,你可以只看适合自己的那个系统即可
1.获取SDK
想要编译系统首先就需要下载到瑞芯微提供的SDK
Rockchip Linux SDK 支持三个系统, 其中 Buildroot 是基于2018.02-rc3上开发,Yocto 是基于 Gatesgarth 3.2上开发, 以及Debian是基于Buster上开发,内核基于 Kernel 4.4或Kernel 4.19,引导基于 U-boot v2017.09,适用于 Rockchip EVB 开发板及基于此开发板进行二次开发的所有 Linux 产品
通过代码服务器下载
获取 Rockchip Linux 软件包,需要有一个帐户访问 Rockchip 提供的源代码仓库。客户向瑞芯微技术窗口申请 SDK,同步提供 SSH公钥进行服务器认证授权,获得授权后即可同步代码
Rockchip Linux SDK 下载命令如下:
repo init --repo-url ssh://git@www.rockchip.com.cn/repo/rk/tools/repo
-u \
ssh://git@www.rockchip.com.cn/linux/rockchip/platform/manifests -b
linux -m \
rk356x_linux_release.xml
通过本地压缩包
我们可以向瑞芯微直接要压缩包获取解压,如果各位有需要的话也可以直接找我索要
2.编译系统
下载完成之后在编译之前我觉得有必要和大家介绍一下SDK的目录文件
SDK目录文件
我们获取到SDK之后是这样的:
一个通用 Linux SDK 工程目录包含有 buildroot、debian、yocto、app、kernel、u-boot、device、docs、external 等目录,可以看出这个SDK包含了uboot,kernel,跟文件系统(buildroot、debian、yocto)
具体文件夹参考如下:
1.编译linux系统
编译linux系统瑞芯微提供了非常好用的脚本,我们可以一键编译,或者分布编译(即单独编译uboot,kernel,根文件这些)
下面就分一键编译和单独编译给大家介绍;
单独编译
1.编译uboot
进入SDK工程。运行如下命令进行编译
./build.sh uboot
编译完成后生成 uboot.img 到 u-boot 目录,如下图所示:
2.编译kernel
进入工程目录根目录执行以下命令自动完成 kernel 的编译及打包
./build.sh kernel
编译完成后映像文件 kernel.img、resource.img 会打包成 boot.img 放到 kernel 目录(这个就是我们要使用烧录软件烧录到芯片)。如下图所示
3.Recovery 编译
在 linux 源码目录下输入以下命令编译 Recovery
./build.sh recovery
编译后在 Buildroot 目录 output/rockchip芯片型号recovery/images 生成 recovery.img。
需要特别注意 recovery.img 是包含 kernel.img,所以每次 Kernel 更改,Recovery 是需要重新打包生成
4.编译 buildroot或者debian或者yocto
buildroot:
选择 RK3568 搭配 DDR4 开发板的板级配置,输入以下命令:
./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
进入源码根目录执行以下命令自动完成 Rootfs 的编译及打包:
./build.sh rootfs
编译后在 Buildroot 目录 output/rockchip_芯片型号/images下生成 rootfs.ext4
debian
选择 RK3568 搭配 DDR4 开发板的板级配置,输入以下命令:
./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
进入源码根目录执行以下命令自动完成 debian 的编译和打包。
./build.sh debian
yocto
选择 RK3568 搭配 DDR4 开发板的板级配置,输入以下命令:
./build.sh BoardConfig-rk3568-evb1-ddr4-v10.mk
进入源码根目录执行以下命令自动完成 yocto 的编译及打包:
./build.sh yocto
可以看出这三个跟文件系统编译都很相似,读者依据自己要编译系统选择
5.打包镜像
编译完成之后我们就可以把这些镜像打包出一个镜像这样就可以只烧录这个最终镜像就可以,当然也可以一个个烧录,后面章节会讲解如何烧录
在SDK源码目录下输入:
输入以下命令打包:
./mkfirmware.sh
输入以下命令,打包 update.img 镜像。
./build.sh updateimg
打包完成会在 rockdev 目录下生成 update.img,如下图所示
一键编译
进入源码根目录执行以下命令自动完成所有的编译。如果想自动全编译 buildroot 文件系
统,输入以下命令:
export RK_ROOTFS_SYSTEM=buildroot //如果是debian就export RK_ROOTFS_SYSTEM=buildroot 如果是yocto 就export RK_ROOTFS_SYSTEM=yocto
./build.sh all
./build.sh firmware
./build.sh updateimg
输入上面的命令后,会自动编译 uboot kernel recovery yocto 打包。打包完成会在 rockdev
目录下生成 update.img
有读者或者会问编译器是什么,从头到尾都没见到编译器在哪里,其实瑞芯微把编译器放在
SDK目录下的prebuilts里面了,我们并不需要设置,可见越是高级的芯片,人家的SDK做的就特别好,特方便
上面就是针对瑞芯微提供的Linux系统的SDK编译,可能有同学向编译Linux系统的其他版本,比如Ubuntu,openwrt,这些瑞芯微并没有在SDK支持,所以上面的编译方式就不适用,如果感兴趣的读者可以自行查找资料,或者后面再补上。
补充:
上面编译的时候用了很多瑞芯微提供的脚本命令,那么这些东西在哪里得来的,如下:
在SDK目录下输入:
./build.sh -h
这里面的命令我们在上面已经使用过了,所以相信大家不会陌生!!!
2.编译Android11
在上面我们编译的是Linux系统,但是对于想学习Android开发的读者,就想了解怎么编译瑞芯微的SDK,其实都是大同小异,哈哈!!