02 编译说明
SDK 可通过搭建好的 Docker 镜像环境进行编译。 具体参可考该部分文档内容。
1 Docker镜像环境编译SDK
1.1 SDK 自动编译命令
切换到 Docker 内需要编译的 SDK 根目录,全自动编译默认是 Buildroot, 可以通过设置环境变量 RK_ROOTFS_SYSTEM 指定不同 rootfs. 目前可设定三种系统:Buildroot、Debian、 Yocto。
#进入已经创建的指定容器中
sudo docker exec -it -w $cwd_contents $containerID /bin/bash
#$cwd_contents:容器内 SDK 根目录
#$containerID:容器ID
#查询编译帮助
sudo ./build.sh -h
#开启多线程(可选)
export MAKEFLAGS="-j4" #4:线程数
#指定 Debain 开启自动编译
sudo RK_ROOTFS_SYSTEM=debian ./build.sh
1.2 配置内核编译选项
自动编译开始后,会需要配置与开发板适配的内核编译选项,开发板使用的是RK3568芯片搭配DDR4,所以需要选择对应的编译项5,也可在自动编译前运行./build.sh lunch提前选择
1. rockchip_defconfig
2. rockchip_rk3566_evb2_lp4x_v10_32bit_defconfig
3. rockchip_rk3566_evb2_lp4x_v10_defconfig
4. rockchip_rk3568_evb1_ddr4_v10_32bit_defconfig
5. rockchip_rk3568_evb1_ddr4_v10_defconfig
6. rockchip_rk3568_evb8_lp4_v10_32bit_defconfig
7. rockchip_rk3568_evb8_lp4_v10_defconfig
8. rockchip_rk3568_pcie_ep_lp4x_v10_defconfig
Which would you like? [1]: 5
注意:如果出现找不到用户 ID 的报错,就在容器的 root 用户下创建该用户 ID ,创建完成后在创建的用户下重新执行 RK_ROOTFS_SYSTEM=debian ./build.sh 下面以创建用户 ID 为 1001 的用户为例
#新建组,添加用户并设置用户权限
groupadd newsgroup
useradd -M -u 1001 -g newsgroup newsperson
usermod -aG sudo newsperson
mkdir -p /home/newsperson
chown newsperson:newsgroup /home/newsperson
chmod 700 /home/newsperson
usermod -s /bin/bash newsperson
#查询用户ID为 1001 的用户名
id 1001
#切换用户
su - newsperson
#再次执行自动编译
sudo RK_ROOTFS_SYSTEM=debian ./build.sh
1.3 拷贝文件
编译完成后,会将编译好的固件和打包成update.img的完整升级包会放置在output/firmware目录下,可将该目录下的文件拷贝至宿主机上,但由于该目录下的文件为软连接文件,所有需要用软连接的方式拷贝
#从 Docker 容器中拷贝文件至宿主机中
sudo docker cp --follow-link $CONTAINER:$Docker_PATH $Host_PATH
#$CONTAINER:容器的名称或 ID
#$Docker_PATH:Docker 容器中需要拷贝的文件路径
#$Host_PATH:宿主机中接受文件的路径
#示例
sudo docker cp --follow-link 0370ec8f1fda:/home/hjf/SDK/output/firmware/update.img /home/ubuntu/directory
1.4 其他常用指令
#清理所有旧编译文件内容
sudo ./build.sh cleanall