嵌入式Linux内核裁剪与移植实战:国产热门RK3568开发板~ - 实践

最近开始写一些文章,把之前的经验都分享记录一下,刚好我在工作过程中使用的是瑞芯微RK3568开发板,顺便记录一下自己移植、裁剪linux内核的过程,有什么不对的还请各位大佬指正

一、引言


目前随之国产芯片的崛起,工作中也逐渐要求开始使用国产开发板进行开发,在嵌入式系统开发中,Linux内核的裁剪与移植又是一项核心技能,刚好这次公司给我机会进行3568的移植和裁剪,全是自己摸索,觉得挺有意思,就记录一下嵌入式Linux内核裁剪与移植的完整流程,希望可以帮到有需要的友友们~

二、准备工作

1、硬件环境

我这里用的是firefly的ITX-3568开发板,基本参数特性如下:

- 处理器 :RK3568J四核Cortex-A55,主频最高2.0GHz
- 内存 :支持2GB/4GB/8GB LPDDR4
- 存储 :支持eMMC、SD卡、SATA接口
- 图形处理 :Mali-G52 2EE GPU,支持OpenGL ES 3.2/Vulkan 1.1
- AI加速 :集成0.8TOPS算力的NPU
- 视频能力 :支持4K@60fps解码和1080p@60fps编码
- 网络 :千兆以太网、WiFi6、可选5G/4G模块
- 接口 :USB 3.0/2.0、HDMI、PCIe、GPIO、UART、RS232、RS485等
- 工作温度 :-40°C至85°C工业级宽温设计

这些都是手册上说的~嘿嘿!这里要说下,这块开发板没有带串口调试线(USB转TTL),我直接偷懒用的HDMI显示器先修改了IP ,连上ssh后先搭建了一下环境,才搞到的串口线,所以大家使用时需要提前准备

不过大家也可以用迅为RK3568、正点原子RK3568等,对应的都会有USB欻口线、Type-C数据线
同时不管哪一款都需要安装Ubuntu 20.04的PC机

2、 软件环境

- Linux内核源码:firefly官方内核(基于linux-5.10.110)
- 交叉编译器:gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnu
- 辅助工具:build-essential、git、make、dtc、vim
- 烧录工具:RKDevTool

如果用的其他开发板,也是直接可以用这套工具的!

三、下载SDK源码进行裁剪并编译

1、准备源码

在这里我已经下载好了SDK 的源码到虚拟机里;百度网盘 请输入提取码 :1234

接下来需要改下权限:

//进入下载好的linux-SDK源码路径下,修改下脚本权限
chmod +x ./sdk_tools.sh

在然后需要创建一个干净的目录,官方说放在上一级,我这里用的共享路径,所以直接放在~下。创建了firefly_rk3568_SDK文件夹,这里一定要注意自己是3568还是3588还是其他,因为后面需要软连接,保持名字一致会更舒服~

接下来就直接用脚本解压:

//第一步进行解压
./sdk_tools.sh --unpack -C ~/firefly_rk3568_SDK/
//第二步直接用脚本执行还原
./sdk_tools.sh --sync -C ~/firefly_rk3568_SDK/
cd ~/firefly_rk3568_SDK/

在这里解压完后进入到目录中应该是有以下文件:

如果在这里脚本一直执行失败的话,就使用下面这两句。

.repo/repo/repo sync -l
.repo/repo/repo start firefly --all

接下来执行:

device/rockchip/common/build.sh

选择且查看对应的配置是否存在;

2、编译前配置

不同板型的配置文件存放在``device/rockchip/rk3566_rk3568/``目录下

回到 SDK 根目录执行build.sh选择配置文件:

./build.sh firefly_rk3568_aio-3568j_ubuntu_defconfig

配置文件会链接到 output/defconfig,检查该文件可以验证是否配置成功。

相关配置介绍:

# 预编译的文件系统位置
PREBUILT_ROOTFS_IMG="prebuilt_rootfs/rk356x_ubuntu_rootfs.img"
# 蓝牙用到的 UART
RK_WIFIBT_TTY="ttyS8"
# 内核配置文件
RK_KERNEL_CFG="firefly_linux_defconfig"
# 设备树名称
RK_KERNEL_DTS_NAME="firefly-rk3568-aioj"
# ramdisk 镜像
RK_RAMDISK_IMG="ramdisk.img"
# boot 分区镜像的 Image tree source
RK_BOOT_FIT_ITS="bootramdisk.its"
# 预编译的 recovery 镜像
RK_RECOVERY_RAMDISK="rk356x-recovery-arm64.cpio.gz"
# 分区表
RK_PARAMETER="parameter-ubuntu-fit.txt"
# 使用 FIT 格式镜像
RK_USE_FIT_IMG=y
# 使用 extlinux 方式引导系统
USE_EXTBOOT=y

3、内核裁剪

这块是比较重要的一步了,幸好直接有图形化界面来进行选择,现在直接返回到文件根目录,进入图形界面:

make -C kernel ARCH=arm64 menuconfig

就会出来以下界面咯~

选择完自己需要的,

4、保存

打开需要的配置后,按方向键左右将光标移动到Save并按下 3 次回车进行保存

之后持续双击Esc退出

退出后将修改内容保存到配置文件:

make ARCH=arm64 savedefconfig
mv defconfig arch/arm64/configs/firefly_linux_defconfig

5、编译

回到 SDK 根目录进行编译:

# 编译内核
./build.sh kernel

生成的文件位置:SDK/kernel/boot.img

最后就可以进行烧录了~

希望这篇文章能帮助能够帮到大家,如果有任何问题,欢迎在评论区留言!

喜欢这篇文章的话,别忘了点赞收藏哦~

posted on 2025-08-16 22:16  ljbguanli  阅读(23)  评论(0)    收藏  举报