1. sdk目录结构
| 代码块 | ||||
|---|---|---|---|---|
| ||||
├── app
├── buildroot #buildroot构建目录
├── build.sh -> device/rockchip/common/scripts/build.sh #sdk编译脚本
├── common -> device/rockchip/common #自动化编译脚本hook
├── Copyright_Statement.md -> docs/licenses/LICENSE #license
├── debian #debian构建目录
├── device #板型配置目录
├── docs #rockchip文档
├── external #rockchip模块组件包
├── hal #
├── kernel -> kernel-6.1
├── kernel-6.1
├── Makefile -> device/rockchip/common/Makefile
├── output
├── prebuilts
├── README.md
├── README_rk.md -> device/rockchip/common/README.md
├── repo_readme.txt
├── rkbin
├── rkflash.sh -> device/rockchip/common/scripts/rkflash.sh
├── rockdev -> output/firmware
├── rtos
├── test.txt
├── tmp
├── tools
├── u-boot
└── yocto |
2. 板型配置说明
| 代码块 | ||||
|---|---|---|---|---|
| ||||
./build.sh chip #选择要编译的芯片
Log colors: message notice warning error fatal
Log saved at /home/foxluo/work0/rockchip/rk_linux/rk_linux_6.1/output/sessions/2025-11-18_19-37-19
Pick a chip:
1. rk3566_rk3568
2. rk3576
3. rk3588
Which would you like? [1]: 3 #选择rk3588
Switching to chip: rk3588
Pick a defconfig:
1. rockchip_defconfig
2. hugsun_rk3588_edge_lp4_v12_debain_defconfig
3. hugsun_rk3588_edge_lp4_v12_defconfig
4. hugsun_rk3588_edge_lp4_v14a_debain_defconfig
5. rockchip_rk3588_evb1_lp4_v10_amp_defconfig
6. rockchip_rk3588_evb1_lp4_v10_defconfig
7. rockchip_rk3588_evb1_lp4_v10_mcu_defconfig
8. rockchip_rk3588_evb7_v11_defconfig
9. rockchip_rk3588_ipc_evb1_v10_defconfig
10. rockchip_rk3588_ipc_evb7_lp4_v11_defconfig
11. rockchip_rk3588_multi_ipc_evb1_v10_defconfig
12. rockchip_rk3588s_evb1_lp4x_v10_defconfig
Which would you like? [1]: 3 #选择hugsun edge v1.2a板型
Switching to defconfig: /home/foxluo/work0/rockchip/rk_linux/rk_linux_6.1/device/rockchip/.chip/hugsun_rk3588_edge_lp4_v12_defconfig
#
# configuration written to /home/foxluo/work0/rockchip/rk_linux/rk_linux_6.1/output/.config
#
Using last kernel version(6.1) |
如需修改板型参数,在配置界面中调整参数
| 代码块 | ||||
|---|---|---|---|---|
| ||||
make menuconfig |
4. 全自动编译
为了确保软件开发套件(SDK)的每次更新都能顺利进行,建议在更新前清理之前的编译产物。这样做可以避免潜在的兼容性问题或编译错误,因为旧的编译产物可能不适用于新版本的SDK。要清理这些编译产物,可以直接运行命令
| 代码块 | ||||
|---|---|---|---|---|
| ||||
./build.sh cleanall |
进入工程根目录执行以下命令自动完成所有的编译:
| 代码块 | ||||
|---|---|---|---|---|
| ||||
./build.sh all # 只编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 需要再执行`./build.sh ./mkfirmware.sh 进行固件打包
./build.sh # 编译模块代码(u-Boot,kernel,Rootfs,Recovery)
# 打包成update.img完整升级包
# 所有编译信息复制和生成到out目录下 |
默认是 Buildroot,可以通过设置坏境变量 RK_ROOTFS_SYSTEM 指定不同 rootfs。RK_ROOTFS_SYSTEM
...
目前可设定三种系统:buildroot、debian、 yocto 。
比如需要 debain 可以通过以下命令进行生成:
...
| 代码块 | ||||
|---|---|---|---|---|
| ||||
export |
...
RK_ROOTFS_SYSTEM=debian |
...
./build.sh |
...
或 |
...
RK_ROOTFS_SYSTEM=debian ./build.sh |
...
5. 模块编译
5.1 U-Boot编译
进入SDK工程。运行如下命令进行编译:
| 代码块 | ||||
|---|---|---|---|---|
| ||||
#./build.sh uboot |
...
具体板级编译参考SDK发布文档中编译说明。
5.2 Kernel编译
进入工程目录根目录执行以下命令自动完成 kernel 的编译及打包。
...
| 代码块 | ||||
|---|---|---|---|---|
|
#./build.sh kernel |
...
具体板级编译参考发布说明或者Quick Start中编译说明。
5.3 Recovery编译
进入工程根目录执行以下命令自动完成 Recovery 的编译及打包。
| 代码块 | ||||
|---|---|---|---|---|
| ||||
#./build.sh recovery |
编译后在 Buildroot 目录 `output/rockchip_rk3562_recovery/images 生成 recovery.img。
注: recovery.img 是包含内核,所以每次 Kernel 更改,Recovery 是需要重新打包生成。Recovery重新打包的
方法如下:
| 代码块 |
|---|
...
| ||||
#source buildroot/envsetup.sh
#cd buildroot
#make recovery-reconfigure
#cd -
#./build.sh recovery |
注:Recovery是非必需的功能,有些板级配置不会设置
5
...
.4 Buildroot编译
进入工程目录根目录执行以下命令自动完成 Rootfs 的编译及打包:
| 代码块 | ||||
|---|---|---|---|---|
| ||||
#./build.sh rootfs |
编译后在Buildroot目录output/rockchip_rk3562/images下生成不同格式的镜像, 默认使用rootfs.ext4格式。
具体可参考Buildroot开发文档参考:
<SDK>/docs/cn/Linux/ApplicationNote/Rockchip_Developer_Guide_Buildroot_CN.pdf
...
5.
...
5 Debian编译
| 代码块 | ||||
|---|---|---|---|---|
| ||||
#./build.sh debian |
编译后在 debian 目录下生成 linaro-rootfs.img。
说明:需要预先安装相关依赖包
| 代码块 | ||||
|---|---|---|---|---|
| ||||
sudo apt-get install binfmt-support qemu-user-static live-build |
...
sudo dpkg -i ubuntu-build-service/packages/* |
...
sudo apt-get install -f |
具体可参考Debian开发文档参考:
<SDK>/docs/cn/Linux/ApplicationNote/Rockchip_Developer_Guide_Debian_CN.pdf
...
5.6 Yocto 编译
进入工程目录根目录执行以下命令自动完成 Rootfs 的编译及打包:
| 代码块 | ||||
|---|---|---|---|---|
| ||||
#./build.sh yocto |
...
编译后在 yocto 目录 build/lastest 下生成 rootfs.img。
默认用户名登录是 root。Yocto 更多信息请参考 Rockchip Wiki。
FAQ:
上面编译如果遇到如下问题情况:
...
| 代码块 | ||||
|---|---|---|---|---|
| ||||
Please use a locale setting which supports UTF-8 (such as |
...
LANG=en_US.UTF-8). |
...
Python can't change the filesystem locale after loading so we need a UTF-8 |
...
when Python starts or things won't work. |
解决方法:
| 代码块 | ||||
|---|---|---|---|---|
| ||||
locale-gen en_US.UTF-8 export LANG=en_US.UTF-8 LANGUAGE=en_US.en LC_ALL=en_US.UTF-8 |
...
或者参考 setup-locale-python3