一、开发环境
使用ubuntu 22.04版本
- 注:可以通过 lsb_release -a 命令查看
如何获取Linux源码的版本号
打开源码顶层目录的Makefile文件
文件开头会有以下信息
VERSION = x --- 主版本号
PATCHLEVEL = y --- 次版本号
SUBLEVEL = z --- 子版本号
EXTRAVERSION = --- 额外版本信息,通常用于标识补丁版本或特定的构建
因此内核版本号就是 x.y.z
二、获取源码
获取到源码压缩包后,首先进行解压缩
mkdir rk3576
tar -xvf xxx.tgz -C rk3576
此时解压缩完成后的文件都是隐藏文件,是没有源码的,ls查看时是空文件,需要执行以下命令检出源码
.repo/repo/repo sync -l
执行完上述步骤后,文件中就有以下内容
docs --- 文档资料
tools --- 开发工具
buildroot --- 基于buildroot开发的根文件系统
yocto --- 根文件系统
debian --- 基于debian开发的根文件系统
prebuilts --- 交叉编译工具
u-boot --- u-boot代码
external --- 第三方相关库
kernel --- kernel源码目录
device --- 存放板级配置以及SDK编译和打包固件的脚本
rkbin --- Rockchip相关二进制工具
app --- 存放上层应用APP
Makefile
envsetup.sh
build.sh
rkflash.sh
之后继续执行以下命令,进行同步更新
.repo/repo/repo sync -c
更新之后,清除原有的编译文件,以防止出现兼容性错误
./build.sh cleanall
三、SDK编译
(一)板级配置
make lunch
或
./build.sh lunch
根据开发板选择对应的配置
配置文件路径
device/rockchip/.chips/rk3576/rockchip_xxx_defconfig
(二)更改和保存配置
通过 make menuconfig 进行相关配置
使用 make savedefconfig 命令保存这些配置
(三)全自动编译
1. 编译完整升级包
./build.sh
完成这些模块代码的编译之后,会自动将编译好的内容进一步打包成一个名为 update.img 的完整升级包
- 注:默认是buildroot,可以通过环境变量去指定其他根文件系统
2. 只编译模块代码
./build.sh all
执行完该命令之后,还需要再执行固件打包命令
./build.sh firmware
执行下述命令,生成新的update.img
./build.sh updateimg
之后可以在源码顶层目录下的rockdev目录中找到所有镜像文件的连接文件
四、刷机
作用 | |
---|---|
MiniLoaderAll.bin | 硬件初始化,加载下一级引导程序 |
parameter | 启动参数(分区信息和设备树) |
uboot.img | u-boot镜像,硬件初始化,设备探测和准备 |
misc.img | 启动辅助数据 |
boot.img | 包含bootloader和内核 |
recovery.img | 用于设备恢复模式 |
oem.omg | OEM特定的数据和程序 |
rootfs.img | 根文件系统 |
userdata.img | 用户数据 |
- 注:关于uboot和boot
uboot负责的最基础的硬件初始化和设备探测,包括对内存控制器和存储设备的初步探测
boot主要负责内核加载和系统的初步配置
五、调试
使用usb转串口线连接debug口
串口配置:
波特率设置为1500000
8N1