1、SDK的解压和更新
bash
# 解压
mkdir -p ~/proj/rk3588_sdk
cd ~/proj/rk3588_sdk
cat path/to/rk3588_linux_release_20230114_v1.0.6c_0* | tar -xv
# 导出数据
.repo/repo/repo sync -l
#更新sdk数据,例如编译ubuntu就会无法烧录,因为SDK版本的问题
cd ~/proj/rk3588_sdk
# 同步
.repo/repo/repo sync -c --no-tags
.repo/repo/repo start firefly --all
#导出数据
.repo/repo/repo sync -l
2、烧录

这个问题是没有使用root用户执行的结果,切换root后烧录成功(sudo su)
okay的图片

bash
#查看loader设备
sudo upgrade_tool LD
#重启loader设备 #在单独烧录的时候设备不会自动重新启动,需要这条命令
sudo upgrade_tool RD
#烧写统一固件 update.img
sudo upgrade_tool uf update.img
#如果升级失败,可以尝试先擦除后再升级。
# 擦除 flash 使用 ef 参数需要指定 loader 文件或者对应的 update.img
sudo upgrade_tool ef update.img #update.img :你需要烧写的 Ubuntu 固件
# 重新烧写
sudo upgrade_tool uf update.img
烧写分区镜像
sudo upgrade_tool di -b /path/to/boot.img
sudo upgrade_tool di -r /path/to/recovery.img
sudo upgrade_tool di -m /path/to/misc.img
sudo upgrade_tool di -u /path/to/uboot.img
sudo upgrade_tool di -dtbo /path/to/dtbo.img
sudo upgrade_tool di -p paramater #烧写 parameter
sudo upgrade_tool ul bootloader.bin # 烧写 bootloader
如果因 flash 问题导致升级时出错,可以尝试低级格式化、擦除 emmc:
sudo upgrade_tool lf update.img # 低级格式化
sudo upgrade_tool ef update.img # 擦除
fastboot 烧写动态分区
adb reboot fastboot # 进入bootloader
sudo fastboot flash vendor vendor.img
sudo fastboot flash system system.img
sudo fastboot reboot # 烧写成功后,重启
3、编译
bash
#编译 Ubuntu 固件
#本教程的编译部分适用于 v1.0.6e 以上 SDK 版本
$ readlink -f .repo/manifest.xml
/home/daijh/p/rk3588/.repo/manifests/rk3588/rk3588_linux_release_20230301_v1.0.6e.xml
#搭建编译环境
sudo apt-get install repo git ssh make gcc libssl-dev liblz4-tool \
expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support \
qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
unzip \
device-tree-compiler ncurses-dev \
#编译
# 在 device/rockchip/rk3588/ 目录下,有不同板型的配置文件,选择配置文件:
./build.sh roc-rk3588s-pc-ubuntu.mk
2.3.2.2. 编译
2.3.2.2.1. 全自动编译
下载根文件系统:Ubuntu 根文件系统(64位),放到 SDK 路径下
# 这里没必要纠结aarch64的型号 对应的位置下载,解压跟着做就Okay了
我的当时 ubuntu-aarch64-rootfs.img 就是Ubuntu20.04-Gnome_RK3588_v2.40-1_20230414.img
7z x ubuntu-aarch64-rootfs.7z
mkdir ubuntu_rootfs
mv ubuntu-aarch64-rootfs.img ubuntu_rootfs/rootfs.img
#开始编译
./build.sh
#生成的完整固件会保存到 rockdev/pack/ 目录。
##部分编译
#编译 u-boot
./build.sh uboot
#编译 kernel
./build.sh extboot
#编译 recovery
./build.sh recovery
#下载根文件系统:Ubuntu 根文件系统(64位),放到 SDK 路径下
# 这里没必要纠结aarch64的型号 对应的位置下载,解压跟着做就Okay了
#我的当时 ubuntu-aarch64-rootfs.img 就是Ubuntu20.04-Gnome_RK3588_v2.40-1_20230414.img
7z x ubuntu-aarch64-rootfs.7z
mkdir ubuntu_rootfs
mv ubuntu-aarch64-rootfs.img ubuntu_rootfs/rootfs.img
#更新各部分镜像链接到 rockdev/ 目录:
./mkfirmware.sh
#打包固件,生成的完整固件会保存到 rockdev/pack/ 目录。
./build.sh updateimg
注意:当时我没有更新sdk,一直没有编出update.img,版本一直是20230114_v1.0.6c
所以才做了上面的更新sdk版本操作,一下就okay了,刚开始我还以为是rootfs的问题,但是更新了发现不是的 。
如下是SDK更新之后的版本图

4、验证
查看sdk的kernel版本 是否烧录内更新
bash
#查看sdk的kernel版本
ZZM@ZZM-PC:~/rk3588_linux/kernel$ head .config -n 10
#
# Automatically generated file; DO NOT EDIT.
# Linux/arm64 5.10.198 Kernel Configuration --------5.10
#
CONFIG_CC_VERSION_TEXT="aarch64-none-linux-gnu-gcc (GNU Toolchain for the A-profile Architecture 10.3-2021.07 (arm-10.29)) 10.3.1 20210621"
CONFIG_CC_IS_GCC=y
CONFIG_GCC_VERSION=100301
CONFIG_LD_VERSION=236010000
CONFIG_CLANG_VERSION=0
CONFIG_AS_IS_GNU=y
#有对应的设备的话 时间变化 编译的不同版本
root@firefly:~# uname -a
Linux firefly 5.10.198 #3 SMP Sat Apr 11 10:51:36 CST 2026 aarch64 aarch64 aarch64 GNU/Linux
root@firefly:~#
5、制作rootfs.img的操作
bash
# 待续-----