RK3588 Linux固件编译实战从环境搭建到烧录全流程指南1. 开发环境准备与SDK获取在Ubuntu 22.04系统上编译RK3588 Linux固件前需要确保主机满足以下硬件要求磁盘空间至少40GB可用空间多系统编译需更大内存建议8GB以上处理器四核以上CPU可显著加快编译速度1.1 系统依赖安装执行以下命令安装必备工具链sudo apt update sudo apt install -y git ssh make gcc libssl-dev liblz4-tool \ expect g patchelf chrpath gawk texinfo diffstat binfmt-support \ qemu-user-static live-build bison flex fakeroot cmake unzip \ device-tree-compiler ncurses-dev python3 python2关键组件版本要求glibc≥2.33Ubuntu 22.04默认满足make≥4.0lz4≥1.7.3Python≥3.6验证工具版本make -v lz4 -v python3 --version1.2 SDK源码获取ArmSoM官方提供两种SDK获取方式方式一通过GitHub仓库克隆git clone https://github.com/ArmSoM/armsom-rk3588-bsp.git cd armsom-rk3588-bsp方式二通过Rockchip官方申请生成SSH密钥对发送公钥至faerock-chips.com申请权限使用repo工具同步代码SDK目录结构解析├── app # 应用层Demo ├── buildroot # Buildroot根文件系统 ├── debian # Debian根文件系统 ├── device # 板级配置脚本 ├── docs # 开发文档 ├── kernel # Linux内核(5.10) ├── prebuilts # 交叉编译工具链 ├── rkbin # Rockchip二进制工具 ├── u-boot # U-Boot(2017.09) └── yocto # Yocto根文件系统2. 开发板配置与编译系统2.1 板级配置选择通过交互式菜单选择Sige7开发板配置./build.sh lunch选择序号4对应rockchip_rk3588_sige7_defconfig关键配置文件位置板级配置device/rockchip/.chips/rk3588/rockchip_rk3588_sige7_defconfig参数文件device/rockchip/.chips/rk3588/parameter.txt2.2 编译系统选择SDK支持三种根文件系统Buildroot轻量级适合嵌入式产品Debian功能完整适合开发环境Yocto高度定制化适合企业级产品通过环境变量切换系统类型# 编译Debian系统 RK_ROOTFS_SYSTEMdebian ./build.sh all # 编译Buildroot系统默认 ./build.sh all3. 全自动编译流程解析执行全量编译命令./build.sh all3.1 编译过程分解内核编译输出产物kernel/boot.img包含内核镜像与设备树编译日志output/sessions/date/kernel.logU-Boot编译关键文件u-boot/uboot.imgu-boot/rk3588_spl_loader_v1.13.112.bin依赖工具链prebuilts/gcc/linux-x86/aarch64/...根文件系统构建Buildroot输出buildroot/output/rockchip_rk3588/images/rootfs.ext4Debian输出debian/linaro-rootfs.imgRecovery系统特殊镜像output/recovery/recovery.img组成内核 设备树 最小化根文件系统3.2 固件打包流程分区镜像生成./build.sh firmware生成各分区独立镜像boot.imgmisc.imgoem.imguserdata.img统一固件打包./build.sh updateimg最终生成可烧录的update.img包含MiniLoaderAll.bin uboot.img boot.img rootfs.img ...4. 模块化编译指南4.1 单独编译内核./build.sh kernel关键参数调整make menuconfig # 交互式配置 make savedefconfig # 保存配置4.2 单独编译U-Boot./build.sh uboot输出验证ls -lh u-boot/uboot.img u-boot/rk3588_spl_loader_v1.13.112.bin4.3 根文件系统编译# Buildroot ./build.sh buildroot # Debian ./build.sh debian # Yocto ./build.sh yocto5. 烧录与调试实战5.1 Windows平台烧录工具准备下载SDDiskTool_v1.76准备≥8GB的MicroSD卡操作步骤运行SD_Firmware_Tool.exe选择update.img和SD卡设备点击开始创建制作升级卡插入开发板SD卡槽上电自动升级5.2 Linux平台烧录方法一使用升级工具./rkflash.sh # 一键烧录所有分区方法二手动DD写入dd ifboot.img of/dev/mmcblk0p3 bs1M dd ifrootfs.img of/dev/mmcblk0p6 bs1M5.3 常见问题解决问题1根文件系统空间不足# 从SD卡启动后扩容 sudo e2fsck -f /dev/mmcblk0p6 sudo resize2fs /dev/mmcblk0p6问题2DNS配置失效echo nameserver 114.114.114.114 /etc/resolv.conf /etc/init.d/networking restart问题3编译环境不兼容确认Ubuntu版本为22.04检查工具链版本是否符合要求清理环境后重新编译./build.sh cleanall6. 高级开发技巧6.1 自定义分区表修改parameter.txt调整分区布局CMDLINE: mtdparts: 0x000020000x00004000(uboot), 0x000020000x00006000(misc), 0x000200000x00008000(boot), ...6.2 内核调试配置启用内核调试选项make kernel-menuconfig推荐启用CONFIG_DEBUG_KERNELCONFIG_DEBUG_INFOCONFIG_KGDB6.3 构建优化建议CCache加速sudo apt install ccache export CCACHE_DIR/path/to/cache export USE_CCACHE1并行编译./build.sh -j$(nproc) all增量编译修改代码后只需重新编译对应模块避免频繁执行cleanall