1. 编译环境搭建
此编译环境配置 适用 Android/Linux SDK
硬件要求
安装依赖软件包
Copy $ sudo apt install git bc bison build-essential curl flex libsdl1.2-dev
$ sudo apt install g++-multilib gcc-multilib gnupg gperf libncurses5-dev libncurses5
$ sudo apt install imagemagick lib32ncurses5-dev lib32readline-dev squashfs-tools
$ sudo apt install lib32z1-dev liblz4-tool xsltproc libssl-dev libwxgtk3.0-gtk3-dev libgmp-dev libmpc-dev
$ sudo apt install libxml2 libxml2-utils schedtool lzop pngcrush rsync
$ sudo apt install yasm zip zlib1g-dev python device-tree-compiler
$ sudo apt install python-pip gawk openjdk-8-jdk u-boot-tools patchelf expect
$ sudo pip install pyelftools
软件包名称 会根据UBUNTU版本更新而变化
不同UBUNTU版本安装失败,可网络搜索对应的解决方法
2. Linux SDK编译
SDK介绍
Rockchip Linux SDK由SDK源码包、文件系统镜像组成
SDK源码包内核版本5.10,支持Ubuntu20.04、Debian11文件系统
SDK里有提供buildroot系统但buildroot系统不做维护
获取SDK源码
网盘下载SDK源码压缩包
网盘SDK目录如下
Copy 1-SDK源码\rk356x-linux\
rk356x-linux-*.tar.gz
rk356x-linux-*.md5
拷贝源码压缩包到编译主机目录
注意事项
MD5校验文件完整性
解压源码压缩包
Copy $ tar -zxvf rk356x-linux-*.tar.gz
$ ls -al
.git
SDK源码压缩包通过Git仓库分享,可用ls -al命令查看到.git文件夹
还原源码文件
进入解压出的目录下,通过git还原源码
注意:请在Linux下操作 并且安装了git
获取文件系统镜像
SDK源码包不包含文件系统镜像,需要参考下面步骤,单独解压拷贝文件系统到SDK源码
网盘提供debian、ubuntu文件系统镜像,可根据需求自行下载
文件系统网盘目录
Copy 1-SDK源码\rk356x-linux\
linaro-rootfs-20230524.tar.gz
ubuntu-rootfs-20230523.tar.gz
buildroot-dl-20230607.tar.gz
buildroot-dl-20230607.tar.gz使用方式 :
Copy $ tar -zxvf buildroot-dl-*.tar.gz
$ cp -rf dl buildroot/
$ ls buildroot/dl
buildroot-dl-20230607.tar.gz :为dl库离线包用于节约第一次编译时间
MD5校验文件完整性
解压debian镜像文件
Copy $ tar -zxvf linaro-rootfs-*.tar.gz
$ cp linaro-rootfs.img debian/
$ ls debian/linaro-rootfs.img
debian镜像文件的名称、目录必须保证一致
文件系统目录:debian/linaro-rootfs.img
lunch 选择 debian,会使用此 linaro-rootfs.img 进行编译
解压ubuntu镜像文件
Copy $ tar -zxvf ubuntu-rootfs-*.tar.gz
$ cp ubuntu-rootfs.img ubuntu/
$ ls ubuntu/ubuntu-rootfs.img
ubuntu镜像文件的名称、目录必须保证一致
文件系统目录:ubuntu/ubuntu-rootfs.img
lunch 选择 ubuntu,会使用此 ubuntu-rootfs.img 进行编译
编译完整镜像
首次执行build.sh进行SDK编译,必须要选择编译配置信息,如:CPU型号、板卡型号、文件系统型号
具体板卡型号差异可查看 入门文档介绍
SDK编译配置
Copy $ ./build.sh lunch
Pick a chip:
1. rk3566_rk3568
2. rk3588
Which would you like? [1]: 1
Switching to chip: rk3566_rk3568
Pick a defconfig:
1. rockchip_defconfig
2. rockchip_rk3562_kickpi_k3_buildroot_defconfig
3. rockchip_rk3562_kickpi_k3_debian_defconfig
4. rockchip_rk3562_kickpi_k3_ubuntu_defconfig
5. rockchip_rk3568_kickpi_k1_buildroot_defconfig
6. rockchip_rk3568_kickpi_k1_debian_defconfig
7. rockchip_rk3568_kickpi_k1_ubuntu_defconfig
8. rockchip_rk3568_kickpi_k1b_buildroot_defconfig
9. rockchip_rk3568_kickpi_k1b_debian_defconfig
10. rockchip_rk3568_kickpi_k1b_ubuntu_defconfig
Which would you like? [1]:
配置命令首次编译执行一次即可
编译镜像
镜像生成目录:rockdev/update-*.img
若编译失败,可尝试自行解决,亦可联系技术支持客服解决
单独编译分区镜像
单独编译Uboot
镜像生成目录:rockdev/uboot.img
单独编译Kernel
镜像生成目录:rockdev/boot.img
单独编译Buildroot
Copy $ ./build.sh buildroot
镜像生成目录:rockdev/rootfs.img
其他常用命令
内核配置
Copy $ ./build.sh kernel-config
buildroot配置
Copy $ ./build.sh menuconfig
编译多屏自适应镜像
Copy $ ./build.sh all_multi_dtb
出厂Android/Linux镜像默认为多屏自适应镜像,兼容官方7寸/10寸/15寸显示屏,连接任一显示屏可直接点亮
SDK新增编译项
示例:新增RK3568 K1 Buildroot编译选项
Copy $ cd device/rockchip/rk3566_rk3568/
$ cp rockchip_rk3568_kickpi_k1_debian_defconfig rockchip_rk3568_kickpi_k1_buildroot_defconfig
Copy $ vim rockchip_rk3568_kickpi_k1_buildroot_defconfig
- RK_ROOTFS_SYSTEM_DEBIAN=y
+ RK_ROOTFS_SYSTEM_BUILDROOT=y
工具链
Copy prebuilts/gcc/linux-x86/aarch64/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu/
3. Android13.0 SDK编译
SDK介绍
内核版本:5.10
Android系统版本:13.0
获取SDK源码
Copy 1-SDK源码\rk356x-android13\
rk356x-android13-*.tar.gz
拷贝源码压缩包到编译主机目录
若编译主机为虚拟机,不可放在共享目录下编译
Copy $ tar -zxvf rk356x-android13-*.tar.gz
$ cd rk356x-android13-*
$ git reset --hard
编译完整镜像
根据CPU型号,选择对应编译命令;若编译失败,可尝试自行解决,或联系技术客服解决
配置SDK编译项
Copy $ ./build.sh lunch
will lunch sdk
You're building on Linux
Lunch menu...pick a combo:
1. rk356x
2. rk3588
Which would you like? [0]:
You're building on Linux
Lunch menu...pick a combo:
1. BoardConfig.mk
2. BoardConfig-rk3566-kickpi-tx66.mk
3. BoardConfig-rk3568-kickpi-k1a.mk
4. BoardConfig-rk3568-kickpi-k1b.mk
配置选择后,软件会配置成选择的设备;若切换设备需要重新配置,否则无需多次配置
编译完整镜像
镜像生成目录:rockdev/Image-*/update-*.img
配置线程选项,指定线程32
Copy $ ./build.sh -AUCKu -J32
注意:如果遇到编译Android时就失败了,但是没什么具体报错,大概率虚拟机配置过低;
配置线程选项,指定单线程
Copy $ ./build.sh -AUCKu -J1
或修改 build.sh 里面的默认配置后重新尝试
Copy $ vim build.sh
-BUILD_JOBS=16
+BUILD_JOBS=1
$ ./build.sh -AUCKu
单独编译分区镜像
单独编译Uboot
镜像生成目录:rockdev/Image-*/uboot.img
单独编译Kernel
镜像生成目录:rockdev/Image-*/boot.img
单独编译Android
镜像生成目录:rockdev/Image-*/super.img
android 环境配置
配置命令环境,可以使用 mm / get_build_var 等安卓环境下命令
Copy (SDK)$ source build/envsetup.sh
设备配置选择
根据实际,选择对应的设备,比如'K1'和'K1B'为 rk3568
环境配置成功,可以使用Android下相关命令,比如
Copy $ get_build_var PRODUCT_HAVE_RKPHONE_FEATURES
true
其他常用命令
内核配置
编译多屏自适应镜像
出厂Android/Linux镜像默认为多屏自适应镜像,兼容官方7寸/10寸/15寸显示屏,连接任一显示屏可直接点亮