文件准备
- Linux SDK ---- rk3588_linux_release_20230114_v1.0.6c_0*
- Ubuntu根文件系统 ---- Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
硬件环境
- 一个可联网的linux机器,并且装有docker
docker编译环境">打包一个docker编译环境
dockerfile内容">Dockerfile内容
直接通过dockerfile构建方便快捷
# Base Image
from ubuntu:18.04# Author
LABEL maintainer="huangjiaobai <huangjiaobai@demo.com>"# expect
RUN apt-get update && apt-get install -y \build-essential \cmake \git \libcurl4-openssl-dev \libgtest-dev \libxml2-dev \pkg-config repo ssh make gcc libssl-dev liblz4-tool \g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \qemu-user-static live-build bison flex fakeroot gcc-multilib g++-multilib \unzip device-tree-compiler ncurses-dev p7zip bc tree# workspace
WORKDIR /app
容器">构建并启动容器
docker build -t huangjiaobai/uos:1.0.0 .
docker run --privileged --runtime=nvidia --gpus all --name uos -tid -v /dev/mem:/dev/mem -v /home/demo/work/uos:/app/uos --rm huangjiaobai/uos:1.0.0
容器">进入容器
我们所有的操作都在挂载的文件夹里边进行防止数据丢失
docker exec -ti uos /bin/bash
下载文件
SDK 源码存放于 gitlab,国内用户可能下载完整的 SDK 仓库速度比较慢,所以FireFly提供了一个 SDK 基础包Linux SDK,国内用户只需要在此基础包上同步 gitlab 上的代码就可以了,本人使用的linux sdk基础包
下载完毕后得到6个压缩包文件
c3bcb3f92bd139f72551c89f75d39bfa rk3588_linux_release_20230114_v1.0.6c_00
ebb658571a645d4af1e2b569709480b7 rk3588_linux_release_20230114_v1.0.6c_01
9761cc324e9f7133500b590c441b0307 rk3588_linux_release_20230114_v1.0.6c_02
7adc9fe2158d7681554dce1def238f49 rk3588_linux_release_20230114_v1.0.6c_03
3d9201e3849b8a523c05920bebe28b39 rk3588_linux_release_20230114_v1.0.6c_04
6faaee006fe60fc9be60a64a01506cb6 rk3588_linux_release_20230114_v1.0.6c_05
解压文件,并同步
# 解压
mkdir -p rk3588_sdk
cd rk3588_sdk
cat path/to/rk3588_linux_release_20230114_v1.0.6c_0* | tar -xv# 导出数据
.repo/repo/repo sync -l
同步代码
# 同步
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all# 更新SDK
.repo/repo/repo sync -c --no-tags
因为网络环境等原因,.repo/repo/repo sync -c --no-tags 命令更新代码可能会失败,可多次反复执行。
下载根文件系统
Ubuntu根文件系统(64位)
下载完毕后,计算md5值
61451fa7e4fe36a6bda8df81265661d9 Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
解压文件重命名,复制到指定位置
7z x Ubuntu22.04-Xfce_RK3588_v3.11-27_20240410.img.7z
cd rk3588_sdk
mkdir ubuntu_rootfs
mv ubuntu-aarch64-rootfs.img ubuntu_rootfs/rootfs.img
完整目录树
|-- app # 上层应用
|-- build.sh -> device/rockchip/common/build.sh # 编译脚本
|-- buildroot # Buildroot 根文件系统编译目录
|-- device # 编译相关配置文件
|-- docs # 文档
|-- envsetup.sh -> buildroot/build/envsetup.sh
|-- external # 第三方库
|-- firefly-update.sh -> device/rockchip/common/firefly-update.sh
|-- kernel
|-- mkfirmware.sh -> device/rockchip/common/mkfirmware.sh # 链接脚本
|-- prebuilts # 交叉编译工具链
|-- rkbin
|-- rkflash.sh -> device/rockchip/common/rkflash.sh # 烧写脚本
|-- rockdev # 打包好的固件目录
|-- tools # 工具目录
|-- u-boot
|-- ubuntu_rootfs # ubuntu根文件系统
|-- uefi
`-- yocto
执行编译命令
## 选择配置
./build.sh device/rockchip/rk3588/itx-3588j-BE45-A1-ubuntu.mk## 编译
./build.sh