SDK 环境搭建
准备工作
硬件要求
编译 Linux 6.1 系统对电脑配置要求较高,建议配置如下:
| 组件 | 最低配置 | 推荐配置 |
|---|---|---|
| CPU | 4 核 2.0GHz+ | 8 核 3.0GHz+ |
| 内存 | 8GB | 16GB+ |
| 硬盘 | 100GB 可用空间 | 200GB+ SSD |
| 网络 | 稳定网络连接 | 100Mbps+ 有线网络 |
虚拟机配置
如果您使用虚拟机编译,建议配置:
| 项目 | 配置 |
|---|---|
| CPU | 4-8 核心 |
| 内存 | 8GB-16GB |
| 硬盘 | 100GB+ 动态分配 SSD |
| 网络 | 桥接模式或 NAT 模式 |
Ubuntu 版本要求
Linux 6.1 SDK 推荐使用 Ubuntu 22.04 LTS 主机环境,不建议使用过旧的 Ubuntu 版本。
NAME="Ubuntu"
VERSION="22.04.5 LTS (Jammy Jellyfish)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 22.04.5 LTS"
VERSION_ID="22.04"
VERSION_CODENAME=jammy
UBUNTU_CODENAME=jammy2
3
4
5
6
7
8
下载 SDK
获取 SDK
开发板资料我们通过网盘提供,其中 SDK 资料目录如下大家自行下载:
由于 SDK 压缩包体积较大,我们将一个完整的 SDK 分割成多个分卷(00, 01, 02...),在下载或传输过程中任何一个分卷损坏都会导致解压失败。
将 tspi-1f-kernel6.1-linux-sdk 整个文件夹都下载下来即可。
分割多个分卷的好处
- 突破文件大小限制: 某些云存储的单个文件限制 2-5GB,不方便上传、下载、备份。
- 便于传输和存储:分批次上传到云存储网盘,避免因网络中断重传整个大文件。
- 容错性:如果某个分卷损坏,只需要重新下载损坏的那个分卷而不需要重新下载整个 SDK
rk3566_linux_sdk_xxxxxxxx.tar.xz.part.xx00中xxxxxxxx表示 SDK 发布日期- SDK 会不定期更新,建议每次下载最新版本
- Linux 6.1 SDK 体积较大(编译后约 80GB),请确保有足够的存储空间
文件介绍
百度网盘中的文件介绍。
README.md
SDK 介绍:有什么,怎么快速开始使用,怎么校验验证。
extract_sdk.sh
自动解压脚本,一键执行分卷校验、内存检查、分卷合并、SDK解压、SDK文件校验等功能。
rk3566_linux_sdk_xxxxxxxx.tar.xz.part.xx
完整SDK分卷后的分卷压缩包,后期需要使用他们合并再解压。自动解压脚本使用,解压完成前不建议删除。
file_checksums.sha256
用于校验解压完成后的文件完整性。自动解压脚本使用,解压完成前不建议删除。
sdk_parts_checksums.sha256
使用 sha256 验证分卷文件的完整性。自动解压脚本使用,解压完成前不建议删除。
sdk_parts_checksums.md5
使用 md5 验证分卷文件的完整性,用户可自行校验。
SDK 解压
确保系统有足够的磁盘空间
我们提供了自动解压脚本 extract_sdk.sh ,其与 SDK 分卷同处一个文件夹下。它会自动执行分卷校验、内存检查、分卷合并、SDK解压、SDK文件校验等功能。
如果要在当前目录解压则输入命令:
不建议直接解压到当前文件夹;另外如果无法执行命令则需要给脚本权限:
chmod +x extract_sdk.sh
./extract_sdk.sh如果要解压到指定目录,则输入命令格式:
./extract_sdk.sh 要解压的目录例如解压到 /home/liguoyi/Desktop 下,则运行 ./extract_sdk.sh /home/liguoyi/Desktop。
本文章将解压到上一层目录的 tspi_1f_linux_kernel6.1_sdk。如果没有这个文件夹就会自动创建。
../表示返回上一层文件夹,./表示当前文件夹。
./extract_sdk.sh ../tspi_1f_linux_kernel6.1_sdk在脚本执行时,会进行文件校验,校验时所有文件都显示 OK,则说明文件完整,可以安全解压。如果有文件校验失败,需要重新下载对应的压缩包。
同步 SDK 源码
解压完成后只有 .repo 目录我们还需要通过 repo 命令把代码同步出来,运行 repo 命令需要我们 ubuntu 安装有 git 和 python 否则会报错。
更新软件包
sudo apt-get update安装git
sudo apt-get install git -y安装repo
sudo apt install repo -y安装python2
sudo apt-get install python2.7安装python3
sudo apt-get install python3python版本切换设置,为什么要切换呢因为有时候我们会用python2有时候会用python3
$设置 python2.7
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2.7 1
$设置 python3.6
sudo update-alternatives --install /usr/bin/python python /usr/bin/python3.6 22
3
4
切换
sudo update-alternatives --config python切换到python2.7
$ sudo update-alternatives --config python
There are 2 choices for the alternative python (providing /usr/bin/python).
Selection Path Priority Status
------------------------------------------------------------
* 0 /usr/bin/python3.6 2 auto mode
1 /usr/bin/python2.7 1 manual mode
2 /usr/bin/python3.6 2 manual mode
Press <enter> to keep the current choice[*], or type selection number: 12
3
4
5
6
7
8
9
10
同步
.repo/repo/repo sync -l -j88同步成功
如果执行失败请切换为 python3,或者执行执行:
shellpython3 repo/repo/repo sync -l -j881
SDK 目录结构解读
进入解压后的 SDK 目录:
cd tspi_linux_sdk_xxxxxxxx查看目录结构:
ls输出:
app build.sh debian docs hal kernel-6.1 prebuilts rkflash.sh tools yocto
buildroot Copyright_Statement.md device external kernel Makefile rkbin rtos u-boot2
| 目录 | 说明 |
|---|---|
app | 上层应用程序(qcamera/qfm/qplayer/settings 等) |
buildroot | 基于 Buildroot 的根文件系统 |
debian | 基于 Debian 的根文件系统 |
device/rockchip | 芯片板级配置、Parameter 文件、编译脚本 |
external | 第三方仓库(音频、视频、网络、recovery 等) |
kernel | Linux 4.19 内核代码(旧版) |
kernel-6.1 | Linux 6.1 内核代码(新版) |
prebuilts | 交叉编译工具链 |
rkbin | Rockchip 相关 Binary 和工具 |
rockdev | 编译输出固件目录,如果没有进行过编译则不会存在 |
tools | Linux/Windows 工具 |
u-boot | U-Boot 引导程序代码 |
yocto | Yocto 根文件系统 |
注意
Linux 6.1 SDK 与传统 SDK 的主要区别在于:
- 内核目录从
kernel变为kernel-6.1 - Ubuntu 构建脚本位于独立的
ubuntu目录,需要单独再次repo同步,详情参考 ubuntu编译 - 构建命令和环境变量有所不同
编译环境配置
在 Ubuntu 22.04 主机上安装编译所需依赖:
sudo apt update && sudo apt full-upgrade安装基础编译工具:
sudo apt-get install git ssh make gcc libssl-dev liblz4-tool expect \
g++ patchelf chrpath gawk texinfo diffstat binfmt-support \
qemu-user-static bison flex fakeroot cmake gcc-multilib \
g++-multilib unzip device-tree-compiler ncurses-dev \
libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu \
libgmp-dev libmpc-dev bc python3 python3-setuptools \
swig python3-dev gettext libc6-dev libncurses-dev rsync \
python-is-python32
3
4
5
6
7
8