2. LubanCat-SDK

注解

LubanCat专用镜像已于2023年4月11日停止支持,部分与专用镜像相关的内容并未删除,这些内容仅供参考,同时本文档在相关位置也会添加 已停止支持 的标记

注解

LubanCat Buildroot相关内容已于2023年8月3日停止支持,部分与Buildroot构建相关的内容并未删除,这些内容仅供参考,同时本文档在相关位置也会添加 已停止支持 的标记

2.1. 板卡支持情况

2.1.1. LubanCat-RK356x-Linux-SDK

支持LubanCat-RK356x系列鲁班猫板卡系统镜像构建

  • 鲁班猫0系列,使用RK3566主芯片

  • 鲁班猫1系列,使用RK3566主芯片

  • 鲁班猫2系列,使用RK3568/RK3568J(工业级)主芯片

2.1.2. LubanCat-RK3588-Linux-SDK

支持LubanCat-RK3588系列鲁班猫板卡系统镜像构建

  • 鲁班猫4系列,使用RK3588s主芯片

  • 鲁班猫5系列,使用RK3588主芯片

本文档中,对LubanCat-RKxxxx-Linux-SDK统称为LubanCat-SDK。

2.2. LubanCat-SDK简介

LubanCat-SDK是基于瑞芯微通用Linux SDK工程的深度定制版本,适用于以Rockchip处理器为主芯片的LubanCat-RK系列板卡。

整个SDK工程,目录包含有 buildroot、debian、app、kernel、u-boot、device、external 等目录。 每个目录或其子目录会对应一个 git 工程,提交需要在各自的目录下进行。

  • app:(已停止支持) 存放上层应用 app,主要是 qcamera/qfm/qplayer/settings 等一些应用程序,在buildroot构建时会使用到这些程序。

  • buildroot: (已停止支持) 基于 buildroot (2018.02-rc3) 开发的根文件系统。

  • debian:Debian根文件系统构建脚本。

  • device/rockchip: 存放各芯片板级配置和Parameter文件,以及一些构建与打包固件的脚本和预备文件。

  • external:(已停止支持) 存放第三方相关仓库,包括音频、视频、网络、recovery 等,在buildroot构建时将会用到。

  • kernel: 存放 kernel 源码。

  • prebuilts: 存放交叉编译工具链。

  • rkbin: 存放 Rockchip 相关的 Binary 和工具。

  • rockdev: 存放编译输出固件。

  • tools: 存放 Linux 和 Windows 操作系统环境下常用工具。

  • u-boot:存放基于v2017.09版本进行开发的uboot代码。

  • ubuntu: Ubuntu根文件系统构建脚本

2.3. extboot与rkboot分区对比

注解

由于基于rkboot分区的LubanCat专用镜像已停止支持,相关SDK配置文件已移动至 device/rockchip/rk356x/.others 目录下,以下相关内容仅做参考。

2.3.1. extboot分区系统镜像特点

extboot分区系统是野火基于瑞芯微Linux_SDK框架搭建的一种LubanCat-RK系列板卡通用镜像实现方式。 可以实现一个镜像烧录到LubanCat使用同一型号处理器的所有板卡,解决了默认rkboot分区方式设备树固定,导致一个镜像只能适配一款板卡的问题, 大大降低了由于型号众多导致的后期维护的复杂性。

extboot分区使用ext4文件系统格式,在编译过程中将所有LubanCat-RK系列板卡设备树都编译并打包到分区内, 并借助SDRADC读取板卡硬件ID,来实现设备树自动切换。同时支持设备树插件,自动更新内核deb包,在线更新内核和驱动模块等功能。

我们还对系统镜像的分区做了调整,删减一些冗余功能,仅包含uboot、boot、rootfs分区,实现了对系统存储的高效利用。

此版本也是我们主要支持的版本。

2.3.2. rkboot分区系统镜像特点(已停止支持)

rkboot分区是使用瑞芯微Linux_SDK自带的boot分区打包脚本所构建的分区,我们仅修改了kernel配置文件和适配板卡设备树,系统更加原汁原味。 使用此类型boot分区的优点是启动快,冗余功能强,进一步配置可以实现OTA,多系统,镜像校验等功能(需二次开发自行适配),但是像设备树插件这些功能是缺失的。

rkboot分区的系统镜像,一个型号的板卡要对应一个型号的系统镜像,如果硬件发生改变要修改设备树,就要重新构建镜像。

2.3.3. 对比

功能

extboot

rkboot

启动速度

稍慢

使用相同处理器板卡镜像通用

支持

不支持

系统内切换设备树

支持

不支持

设备树插件

支持

不支持

存储空间利用率

较高

较低

在线升级内核

支持

不支持

对于两种类型分区的系统镜像,其uboot做了通用处理,rootfs也做了通用处理,所以uboot.img和rootfs.img是可以通用的。

2.4. SDK 开发坏境搭建

LubanCat-SDK是基于Ubuntu LTS 系统开发测试的,在开发过程中,主要是用Ubuntu 20.04版本, 为了不必要的麻烦,我们推荐用户使用Ubuntu20.04及以上版本。

注解

LubanCat-RK3588系列SDK不支持Ubuntu20.04以下版本环境进行镜像构建

安装SDK依赖的软件包

1
2
3
4
5
6
# 安装SDK构建所需要的软件包
# 整体复制下面内容到终端中安装
sudo apt install git ssh make gcc libssl-dev liblz4-tool u-boot-tools curl \
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 python3-pip libncurses5-dev python3-pyelftools dpkg-dev

2.5. 安装repo

1
2
3
4
5
6
7
mkdir ~/bin
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
# 如果上面的地址无法访问,可以用下面的:
# curl -sSL  'https://gerrit-googlesource.proxy.ustclug.org/git-repo/+/master/repo?format=TEXT' |base64 -d > ~/bin/repo
chmod a+x ~/bin/repo
echo PATH=~/bin:$PATH >> ~/.bashrc
source ~/.bashrc

执行完上面的命令后我们来验证repo是否安装成功能正常运行。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
repo --version

#返回以下信息
#返回的信息根据Ubuntu版本的不同略有差异
<repo not installed>
repo launcher version 2.32
    (from /home/he/bin/repo)
git 2.25.1
Python 3.8.10 (default, Nov 14 2022, 12:59:47)
[GCC 9.4.0]
OS Linux 5.15.0-60-generic (#66~20.04.1-Ubuntu SMP Wed Jan 25 09:41:30 UTC 2023)
CPU x86_64 (x86_64)
Bug reports: https://bugs.chromium.org/p/gerrit/issues/entry?template=Repo+tool+issue

2.6. SDK 源码获取

LubanCat-SDK的代码被划分为了若干git仓库分别进行版本管理, 我们可以使用repo工具对这些git仓库进行统一的下载,提交,切换分支等操作。

运行以下命令,将在当前用户的家目录下创建一个名为LubanCat_SDK的目录,用来放入SDK源码。

1
mkdir ~/LubanCat_SDK

2.6.1. 切换Python 3 版本

1
2
#查看当前Python版本
python -V

若返回的版本号为Python3版本,则无需再切换Python版本。若为Python2版本或未发现python,则可以用以下方式切换:

1
2
3
4
5
6
7
8
#查看当前系统安装的Python版本有哪些
ls /usr/bin/python*

#将python链接到python3
sudo ln -sf /usr/bin/python3 /usr/bin/python

#重新查看默认Python版本
python -V

此时系统默认Python版本切换为python3

../../_images/lubancat05.png

2.6.2. Git配置

设置自己的git信息,以确保后续拉取代码时正常进行,如果不需要提交代码的话可以随意设置用户名和邮箱地址。

1
2
git config --global user.name "your name"
git config --global user.email "your mail"

2.6.3. SDK在线下载并同步

LubanCat-SDK可以适配不同的板卡。由于使用这种方式要从Github拉取大量的仓库, 体积很大,对于不能快速访问Github的用户不建议使用这种方式。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
cd ~/LubanCat_SDK

# 拉取LubanCat-RK356x系列Linux_SDK
repo init --depth=1 -u https://github.com/LubanCat/manifests.git -b linux -m rk356x_linux_release.xml


# 拉取LubanCat-RK3588系列Linux_SDK
repo init --depth=1 -u https://github.com/LubanCat/manifests.git -b linux -m rk3588_linux_release.xml

#如果运行以上命令失败,提示:fatal: Cannot get https://gerrit.googlesource.com/git-repo/clone.bundle
#则可以在以上命令中添加选项 --repo-url https://mirrors.tuna.tsinghua.edu.cn/git/git-repo

.repo/repo/repo sync -c -j4

–depth=1 可以在拉取时进行浅克隆,只拉取最新的一次提交,可以有效减少从网络拉取的内容。 如果想拉取完整的,带有所有Git提交信息的内容,可以删除此选项。

../../_images/lubancat06.png

如果同步失败可以重新运行sync命令来同步

../../_images/lubancat07.png ../../_images/lubancat09.png

2.6.4. SDK离线安装下载

由于Github服务器在国外,拉取这么多的仓库需要很多时间,还可能因为网络不畅通而导致下载失败。 为此,我们将需要使用的仓库整体打包,使用网盘下载的方式,以减少连接Github导致的问题。

2.6.4.1. 下载地址

访问百度网盘资源介绍页面获取SDK源码压缩包: 8-SDK源码压缩包

根据鲁班猫板卡的型号下载对应版本的最近日期的压缩包即可。

注解

由于源码压缩包体积很大,仅在有大量修改的稳定版本时更新,其发布日期可能和镜像发布日期无法对应。当我们在本地解压压缩包以后,只需要借助Github做少量更新,即可同步到最新版本。

2.6.4.2. 解压源码

以下过程以LubanCat_RK356x_Linux_SDK进行演示,实际文件名称以自己下载的SDK为准

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
# 安装7z压缩工具
sudo apt install p7zip-full

# 在用户家目录创建LubanCat_SDK目录
mkdir ~/LubanCat_SDK

# 将下载的SDK源码移动到LubanCat_SDK目录下,xxx为日期
mv LubanCat_RK356x_Linux_SDK_xxx.7z ~/LubanCat_SDK

# 进入LubanCat_SDK目录
cd ~/LubanCat_SDK

# 解压SDK压缩包
7z x LubanCat_RK356x_Linux_SDK_xxx.7z

# 检出.repo目录下的git仓库
.repo/repo/repo sync -l

# 将所有的源码仓库同步到最新版本
.repo/repo/repo sync -c

如果repo sync -c执行时提示网络连接超时,请检查并能否通畅访问github。 确认可以正常访问github的话,可以重复多次执行repo sync -c命令来进行同步。 若无法访问github,可以忽略同步源码仓库到最新版本这一步骤。

../../_images/lubancat11.png

解压完成后checkout到指定的提交。

../../_images/lubancat12.png

建议使用离线源码包的客户在首次检出仓库后更新源码到最新版本。

2.6.5. SDK更新

我们会对LubanCat-SDK不断更新,并将修改的内容实时同步到Github, 如果需要在本地LubanCat-SDK同步我们的更新内容,则可以借助repo或git来实现。

2.6.5.1. 使用repo更新整个SDK

使用repo可以将SDK更新到我们提供的最新版本。

首先我们要更新.repo/manifests,里面保存了repo的配置文件,记录了仓库的版本信息。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
# 进入.repo/manifests目录
cd .repo/manifests

# 切换分支到Linux
git checkout linux

# 拉取最新的manifests
git pull

#返回SDK根目录
cd ~/LubanCat_SDK

# 同步远端仓库
.repo/repo/repo sync -c
../../_images/lubancat10.png

2.6.5.2. 使用Git更新单独的源码仓库

有时我们只想更新某个仓库,而不是去更新整个SDK。 或者我们已经对SDK的某些仓库做出了修改,使用repo同步的话就会失败。 此时就需要我们对单个仓库进行更新了。

这里以Kernel仓库为例

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
# 进入kernel目录下
cd kernel

# 检出到当前提交所在的分支
# 可以查看.repo/manifests/rk356x_linux_release.xml
# name="kernel"条目中dest-branch就是要切换的分支
git checkout stable-4.19-rk356x

# 拉取git仓库
git pull

2.7. LubanCat-SDK自动构建

LubanCat板卡对应的配置文件列表:

镜像说明

boot分区类似

文件系统

对应BoardConfig配置文件

LubanCat-RK3566系列通用镜像

extboot分区

debian

BoardConfig-LubanCat-RK3566-debian-(版本).mk

LubanCat-RK3566系列通用镜像

extboot分区

ubuntu

BoardConfig-LubanCat-RK3566-ubuntu-(版本).mk

LubanCat-RK3568系列通用镜像

extboot分区

debian

BoardConfig-LubanCat-RK3568-debian-(版本).mk

LubanCat-RK3568系列通用镜像

extboot分区

ubuntu

BoardConfig-LubanCat-RK3568-ubuntu-(版本).mk

  • LubanCat-RK3566通用镜像适用于LubanCat-1系列和LubanCat-0系列全部板卡

  • LubanCat-RK3568通用镜像适用于LubanCat-2系列全部板卡

LubanCat-SDK的构建脚本可以实现自动构建,具体操作方式如下:

在SDK根目录下,执行以下命令,以选择SDK配置文件,来选择要构建的板卡和文件系统类型。

1
2
3
4
5
# 选择SDK配置文件
./build.sh lunch

# 输入想要构建的板卡及文件系统配置文件编号,并确认,这里选择配置文件BoardConfig-LubanCat-RK3566-debian-xfce.mk。
Which would you like? [0]: 4

我们也可以直接设置SDK配置文件,方法如下

1
2
# 选择构建LubanCat-RK3566系列板卡通用debian镜像
./build.sh BoardConfig-LubanCat-RK3566-debian-xfce.mk
../../_images/lubancat20.png

选择SDK配置文件以后,我们还要安装debian根文件系统构建依赖的软件包,操作如下。

1
2
3
#安装本地软件包
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f
../../_images/lubancat21.png

注意

由于debain和ubuntu根文件系统不同版本构建所需的依赖包版本不同,当切换了根文件系统版本的选择以后,就需要根据自己所选的根文件系统版本安装不同的依赖包。

如果我们选择了ubuntu根文件系统的SDK配置文件,就需要安装ubuntu根文件系统构建的依赖软件包,操作如下。

1
2
3
#安装本地软件包
sudo dpkg -i ubuntu/ubuntu-build-service/packages/*
sudo apt-get install -f

安装过程中可能会报错,这是正常现象,我们忽略即可。待软件包安装完成后,我们就可以进行一键构建了。

1
2
# 一键编译u-Boot,kernel,Rootfs并打包为update.img镜像
./build.sh
../../_images/lubancat22.png

警告

如果在编译过程中出现如下图所示的提示,请根据对应设备树文件中的&pmu_io_domains节点中的电压值选择, 并注意顺序从pmuio2-supply开始。其中vccio_acodec为3v3、vccio_sd为3v3。

../../_images/lubancat01.png

构建好的镜像保存在rockdev/目录下,同时在我们也可以使用 ./build.sh save 命令在IMAGE/目录下进行备份。

2.7.1. 使用野火提供的根文件系统镜像构建Debian系统镜像

  • 根据前面的操作选择板卡对应的debain配置文件并选中配置文件。

  • 将下载好的对应版本的debian根文件系统镜像压缩包解压到debian目录下,注意:linaro-(版本)-rootfs.img要在debian目录下。

  • 使用一键构建命令生成完整系统镜像。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 选择一个SDK配置文件
# LubanCat-rk3566板卡xfce桌面版
./build.sh BoardConfig-LubanCat-RK3566-debian-xfce.mk
# LubanCat-rk3566板卡lite版
./build.sh BoardConfig-LubanCat-RK3566-debian-lite.mk
# LubanCat-rk3568板卡xfce桌面版
./build.sh BoardConfig-LubanCat-RK3568-debian-xfce.mk
# LubanCat-rk3568板卡lite版
./build.sh BoardConfig-LubanCat-RK3568-debian-lite.mk

# 将下载好的根文件系统镜像压缩包复制到debian目录下解压
# 根据实际下载的镜像,运行下面的命令
# xfce桌面版本
7z x rootfs-debian10-xfce-(日期).7z
# lite版本
7z x rootfs-debian10-lite-(日期).7z

# 根据不同的版本,确保解压后的文件在debian目录,
# 文件名为 linaro-xfce-rootfs.img或linaro-lite-rootfs.img

# 一键构建完整系统镜像
./build.sh
../../_images/lubancat23.png

Debian根文件系统镜像下载地址:

访问百度网盘资源介绍页面获取系统镜像: 3-Linux镜像/Debian系统镜像/根文件系统镜像

Debian根文件系统镜像压缩包说明:

rootfs-debian10-xfce-xxx.7z

rootfs-debian10-xfce-full-xxx.7z

rootfs-debian10-lite-xxx.7z

  • debian10:Debian系统及发行版本

  • lite:无桌面,终端版

  • xfce:使用xfce套件的桌面版

  • xfce-full:使用xfce套件+更多推荐软件包的桌面版

  • xxx:发布日期

  • 7z:压缩格式

2.7.2. 使用野火提供的根文件系统镜像构建Ubuntu系统镜像

  • 根据前面的操作选择板卡对应的debain配置文件并选中配置文件。

  • 将下载好的对应版本的ubuntu根文件系统镜像压缩包解压到ubuntu目录下,注意:ubuntu-(版本)-rootfs.img要在ubuntu目录下。

  • 使用一键构建命令生成完整系统镜像。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 选择一个SDK配置文件
# LubanCat-rk3566板卡xfce桌面版
./build.sh BoardConfig-LubanCat-RK3566-ubuntu-xfce.mk
# LubanCat-rk3566板卡lite版
./build.sh BoardConfig-LubanCat-RK3566-ubuntu-lite.mk
# LubanCat-rk3568板卡xfce桌面版
./build.sh BoardConfig-LubanCat-RK3568-ubuntu-xfce.mk
# LubanCat-rk3568板卡lite版
./build.sh BoardConfig-LubanCat-RK3568-ubuntu-lite.mk

# 将下载好的根文件系统镜像压缩包复制到debian目录下解压
# 根据实际下载的镜像,运行下面的命令
# xfce桌面版本
7z x rootfs-ubuntu20.04-xfce-(日期).7z
# lite版本
7z x rootfs-ubuntu20.04-lite-(日期).7z

# 根据不同的版本,确保解压后的文件在debian目录,
# 文件名为 ubuntu-xfce-rootfs.img或ubuntu-lite-rootfs.img

# 一键构建完整系统镜像
./build.sh
../../_images/lubancat24.png

Ubuntu根文件系统镜像下载地址:

访问百度网盘资源介绍页面获取系统镜像: 3-Linux镜像/Ubuntu系统镜像/根文件系统镜像

Ubuntu根文件系统镜像说明:

rootfs-ubuntu20.04-xfce-xxx.7z

rootfs-ubuntu20.04-xfce-full-xxx.7z

rootfs-ubuntu20.04-lite-xxx.7z

  • ubuntu:Ubuntu系统

  • 20.04:发行版本号,野火提供20.04版本,可自行下载源码构建18.04和22.04版本

  • lite:无桌面,终端版

  • xfce:使用xfce套件的桌面版

  • xfce-full:使用xfce套件+更多推荐软件包的桌面版

  • xxx:发布日期

  • 7z:压缩格式

2.8. LubanCat-SDK单独构建模块

在进行固件开发时,一键构建就显得过于耗时了,每一个改动都要构建整个镜像并重新打包, 这无疑是巨大的时间浪费。此时我们就可以使用SDK单个模块构建的功能。

2.8.1. 选择SDK配置文件

首先,还是要选择SDK的配置文件,这里以LubanCat2系列板卡的通用debian镜像为例

1
2
# 选择SDK配置文件
./build.sh BoardConfig-LubanCat-RK3568-debian-xfce.mk

2.8.2. U-Boot构建

1
./build.sh uboot

构建生成的U-boot镜像为u-boot/uboot.img

2.8.3. Kernel构建

2.8.3.1. extboot分区

extboot分区内核镜像,使用的配置文件为BoardConfig-LubanCat-RK356x-xxx.mk

要先生成内核deb包,然后再编译内核并将生成的deb包打包进extboot分区。

执行以下命令自动完成 kernel 的构建及打包。

1
2
3
./build.sh kerneldeb

./build.sh extboot

构建生成的kernel镜像为kernel/extboot.img

2.8.4. rootfs构建

LubanCat主要支持Ubuntu、Debian、OpenWrt这几种rootfs, 不同rootfs的构建过程不同,这里分开说明。

注解

由于OpenWrt系统的构建不使用LubanCat-SDK,所以不在此处说明,具体构建过程查看LubanCatWRT构建说明

2.8.4.1. Debian

首先要确保SDK的配置文件与要构建的rootfs一致, 如果当前配置文件与要构建的rootfs不一致,需要先切换配置文件。

1
2
3
4
5
# 选择SDK配置文件
./build.sh BoardConfig-LubanCat-RK3568-debian-xfce.mk

# 构建Debian
./build.sh debian

构建生成的rootfs镜像为debian/linaro-xfce-rootfs.img,同时被软链接到rockdev/rootfs.ext4

注意

只有不存在debian/linaro-xfce-rootfs.img时,才会重新构建Debian根文件系统。如果我们要重新构建linaro-xfce-rootfs.img,需要先手动删除。

提示

由于构建不同版本的rootfs很容易遇到环境依赖问题,推荐不需要重新构建Debian根文件系统的用户直接下载我们提供的定制根文件系统镜像或使用Docker构建,详情请查看Debian根文件系统构建独立章节

2.8.4.2. Ubuntu

目前我们提供Ubuntu18.04/20.04/22.04的根文件系统构建脚本,默认使用20.04版本分支,如要构建其他版本,在构建前要先拉取构建源码仓库并切换到对应分支,具体操作请查看Ubuntu根文件系统构建独立章节。

注解

推荐使用Ubuntu20.04版本,这是我们的主要支持版本。

首先要确保SDK的配置文件与要构建的rootfs一致, 如果当前配置文件与要构建的rootfs不一致,需要先切换配置文件。

1
2
3
4
5
# 选择SDK配置文件
./build.sh BoardConfig-LubanCat-RK3568-ubuntu-xfce.mk

# 构建Ubuntu
./build.sh ubuntu

构建生成的rootfs镜像为ubuntu/ubuntu-xfce-rootfs.img,同时被软链接到rockdev/rootfs.ext4

注意

只有不存在ubuntu/ubuntu-xfce-rootfs.img时,才会重新构建Ubuntu根文件系统。如果我们要重新构建ubuntu-xfce-rootfs.img,需要先手动删除。

提示

由于构建不同版本的rootfs很容易遇到环境依赖问题,推荐不需要重新构建Ubuntu根文件系统的用户直接下载我们提供的定制根文件系统镜像或使用Docker构建,详情请查看Ubuntu根文件系统构建独立章节

2.8.5. 镜像打包

当u-Boot,kernel,Rootfs都构建完成以后,需要再执行./mkfirmware.sh 进行固件打包, 主要是检查分区表文件是否存在,各个分区是否与分区表配置对应,并根据配置文件将所有的文件复制或链接到rockdev/内。

为了方便镜像的发布,我们还可以将各个分立的分区打包成一个文件,打包好的文件就能用于烧录了。

1
2
3
4
5
# 固件打包
./mkfirmware.sh

# 生成update.img
./build.sh updateimg

以debian系统为例,rockdev/目录下的文件如下所示

rockdev/

链接文件

boot.img

kernel/boot.img

MiniLoaderAll.bin

u-boot/rk356x_spl_loader_v1.15.112.bin

parameter.txt

device/rockchip/rk356x/parameter-ubuntu-fit.txt

rootfs.ext4

debian/debian-xfce-rootfs.img

rootfs.img

debian/debian-xfce-rootfs.img

uboot.img

u-boot/uboot.img

2.9. SDK 配置文件说明

如果说./build.sh 脚本是肌肉,完成SDK各部分的构建工作,那SDK的配置文件则是大脑,控制着肌肉的运作方式。

虽然看起来SDK的配置文件条目繁多,但在使用中,需要我们去修改的并不多。

这里以LubanCat-RK系列配置文件为例,其他板卡的配置文件也类似

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
# Target arch
export RK_ARCH=arm64
# Uboot defconfig
export RK_UBOOT_DEFCONFIG=rk3566
# Uboot image format type: fit(flattened image tree)
export RK_UBOOT_FORMAT_TYPE=fit
# Kernel defconfig
export RK_KERNEL_DEFCONFIG=lubancat2_defconfig
# Kernel defconfig fragment
export RK_KERNEL_DEFCONFIG_FRAGMENT=
# Kernel dts
export RK_KERNEL_DTS=rk356x-lubancat-rk_series
# boot image type
export RK_BOOT_IMG=boot.img
# kernel image path
export RK_KERNEL_IMG=kernel/arch/arm64/boot/Image
# kernel image format type: fit(flattened image tree)
export RK_KERNEL_FIT_ITS=boot.its
# parameter for GPT table
export RK_PARAMETER=parameter-ubuntu-fit.txt
# 分区表对应的打包文件
export RK_PACKAGE_FILE=rk356x-package-file-ubuntu
# Buildroot config
export RK_CFG_BUILDROOT=
# Recovery config
export RK_CFG_RECOVERY=
# Recovery image format type: fit(flattened image tree)
export RK_RECOVERY_FIT_ITS=boot4recovery.its
# ramboot config
export RK_CFG_RAMBOOT=
# Pcba config
export RK_CFG_PCBA=
# Build jobs
export RK_JOBS=24
# target chip
export RK_TARGET_PRODUCT=rk356x
# Set rootfs type, including ext2 ext4 squashfs
export RK_ROOTFS_TYPE=ext4
# yocto machine
export RK_YOCTO_MACHINE=rockchip-rk3568-evb
# rootfs image path
export RK_ROOTFS_IMG=rockdev/rootfs.${RK_ROOTFS_TYPE}
# Set ramboot image type
export RK_RAMBOOT_TYPE=
# Set oem partition type, including ext2 squashfs
export RK_OEM_FS_TYPE=ext2
# Set userdata partition type, including ext2, fat
export RK_USERDATA_FS_TYPE=ext2
#OEM config
export RK_OEM_DIR=
# OEM build on buildroot
#export RK_OEM_BUILDIN_BUILDROOT=YES
#userdata config
export RK_USERDATA_DIR=
#misc image
export RK_MISC=
#choose enable distro module
export RK_DISTRO_MODULE=
# Define pre-build script for this board
export RK_BOARD_PRE_BUILD_SCRIPT=app-build.sh

# SOC
export RK_SOC=rk356x
# build.sh save 打包时名称
export RK_PKG_NAME=lubancat-${RK_UBOOT_DEFCONFIG}

# 定义默认rootfs为 debian
export RK_ROOTFS_SYSTEM=debian
# 设置 debian 版本 (debian10: buster)
export RK_DEBIAN_VERSION=10
# 定义默认rootfs是否为桌面版  xfce :桌面版       lite :控制台版 xfce-full :桌面版+推荐软件包
export RK_ROOTFS_TARGET=xfce
# 定义默认rootfs是否添加DEBUG工具  debug :添加  none :不添加
export RK_ROOTFS_DEBUG=debug

# 定义默认rootfs为ubuntu
export RK_ROOTFS_SYSTEM=ubuntu
# 默认Ubuntu 版本
export RK_UBUNTU_VERSION=20.04
# 定义默认rootfs是否为桌面版  xfce :桌面版       lite :控制台版 xfce-full :桌面版+推荐软件包
export RK_ROOTFS_TARGET=xfce
# 定义默认rootfs是否添加DEBUG工具  debug :添加  none :不添加
export RK_ROOTFS_DEBUG=none

# 使用exboot内核分区
export RK_EXTBOOT=true
  • RK_ARCH:定义处理器架构,无需修改

  • RK_UBOOT_DEFCONFIG:Uboot配置文件

  • RK_KERNEL_DEFCONFIG:Kernel配置文件

  • RK_KERNEL_DEFCONFIG_FRAGMENT:Kernel配置文件的叠加配置

  • RK_KERNEL_DTS:内核设备树文件名

  • RK_BOOT_IMG:boot分区镜像名称,无需修改

  • RK_KERNEL_IMG:内核镜像所在位置:无需修改

  • RK_PARAMETER:分区表名称,无需修改

  • RK_CFG_BUILDROOT:Buildroot配置文件,无需修改

  • RK_CFG_RECOVERY:revcovery分区构建的配置文件,无需修改

  • RK_JOBS:编译线程数,可根据电脑配置酌情修改

  • RK_TARGET_PRODUCT:目标芯片,无需修改

  • RK_ROOTFS_TYPE:rootfs的格式,无需修改

  • RK_ROOTFS_IMG:rootfs镜像的位置,无需修改

  • RK_ROOTFS_SYSTEM:rootfs的类型,目前支持ubuntu、debian,无需修改

  • RK_DEBIAN_VERSION:debian发行版本,暂不支持修改

  • RK_UBUNTU_VERSION:Ubuntu发行版本,暂不支持修改

  • RK_ROOTFS_TARGET:rootfs是否支持桌面显示,xfce:桌面版 lite:控制台版 xfce-full:桌面版+推荐软件包

  • RK_ROOTFS_DEBUG:rootfs是否添加Debug工具,debug添加、none不添加

  • RK_EXTBOOT:是否使用exboot内核分区