guowenxue
2025-03-22 2ff22fb6d0d602092a83e11d12648febdfe4acdf
update RK3568 Linux SDK doc
2 files modified
6 files deleted
3 files added
468 ■■■■■ changed files
RK3568_Linux_SDK开发文档/RK3568_Linux_SDK开发文档.md 468 ●●●●● patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/1742485436203.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/1742565441696.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/1742566641852.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/ab30d79584572a1e91ad7fea770dc78.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/f0494eae9992101da283f9a8c1e4c0d.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/image-20240514182415770.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/image-20240514182544931.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/image-20240514203334861.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/image-20240514204009803.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/images/image-20240514204322953.png patch | view | raw | blame | history
RK3568_Linux_SDK开发文档/RK3568_Linux_SDK开发文档.md
@@ -8,7 +8,7 @@
* CPU 8核+、内存32GB+ 以上;
* 硬盘空间 1TB+;
推荐在凌云实验室的编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.3.0_linux4.19*** 版本。
推荐在凌云实验室的物理编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.4.0_linux5.10*** 版本。
@@ -27,24 +27,24 @@
 如果是 ***sdkv1.3.0_linux4.19*** 则需要将 python 的版本设置为 **python2**, 而 ***sdkv1.4.0_linux5.10*** 则需要选择 **python3**。
***sdkv1.4.0_linux5.10*** 编译所需要的 Python版本依赖 **python3**。
```
guowenxue@ubuntu22:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
guowenxue@ubuntu22:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 2
guowenxue@ubuntu22:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python3 1
guowenxue@ubuntu22:~$ sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 2
guowenxue@ubuntu22:~$ 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   2         auto mode
  1            /usr/bin/python2   1         manual mode
  2            /usr/bin/python3   2         manual mode
  1            /usr/bin/python3   1         manual mode
  2            /usr/bin/python2   2         manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
guowenxue@ubuntu22:~$ python --version
Python 2.7.18
guowenxue@ubuntu22:~/rk3568$ python --version
Python 3.10.12
```
@@ -56,35 +56,15 @@
首先创建 RK3568 开发板的项目工作路径。
```
guowenxue@ubuntu20:~$ mkdir rk3568 && cd rk3568
guowenxue@ubuntu22:~$ mkdir -p rk3568/sdkv1.4.0_linux5.10 && cd rk3568/sdkv1.4.0_linux5.10
```
如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,则可以使用下面命令从凌云实验室文件服务器上下载并解压缩。
RK3568 的 ***sdkv1.4.0_linux5.10*** 压缩包就存放在物理主机服务器下, 我们直接在工作路径下解压缩即可。
```
guowenxue@ubuntu22:~/rk3568$ mkdir sdkv1.3.0_linux4.19 && cd sdkv1.3.0_linux4.19
guowenxue@ubuntu22:~/rk3568/sdkv1.3.0_linux4.19$ wget http://192.168.0.2:2211/rockchip/bsp/rk3568_linuxSDK/sdkV1.3.0_linux4.19/rk356x_linux_release_v1.3.0_20220925.tgz
guowenxue@ubuntu22:~/rk3568/sdkv1.3.0_linux4.19$ tar -xzf rk356x_linux_release_v1.3.0_20220925.tgz
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ rm -f *.tgz
```
如果选择 ***sdkv1.4.0_linux5.10*** 版本SDK,则可以使用下面命令从凌云实验室文件服务器上下载并解压缩。
```bash
guowenxue@ubuntu22:~/rk3568$ mkdir sdkv1.4.0_linux5.10 && cd sdkv1.4.0_linux5.10
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ wget http://192.168.0.2:2211/rockchip/bsp/rk3568_linuxSDK/sdkV1.4.0_linux5.10/rk356x_linux5.10_release_v1.4.0_20231220.tgz
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ tar -xzf rk356x_linux5.10_release_v1.4.0_20231220.tgz
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ rm -f *.tgz
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ tar -xjf /srv/ftp/rockchip/bsp/rk3568_linuxsdk/sdkv1.4.0_linux5.10/rk356x_linux5.10_release_v1.4.0_20231220.tar.bz2
```
@@ -92,36 +72,71 @@
解压缩出来的源码都在隐藏的 ***.repo*** 文件夹下,接下来我们使用 **repo** 命令将源码 checkout 出来。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls -a
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls -a
.  ..  .repo
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls .repo/
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ du -sh .repo/
18G     .repo/
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls .repo/
manifests  manifests.git  manifest.xml  project.list  project-objects  projects  repo
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ .repo/repo/repo sync -l
Updating files: 100% (17139/17139), done./app/rkaiq_tool_serverUpdating files:  51% (8839/17139)
Updating files: 100% (779/779), done.inux/buildrootUpdating files:  41% (322/779)
Updating files: 100% (1171/1171), done.ux/debianUpdating files:  72% (844/1171)
Updating files: 100% (248/248), done.inux/device/rockchipUpdating files:  10% (25/248)
Updating files: 100% (247/247), done.inux/bsp/docsUpdating files:  45% (112/247)
Updating files: 100% (1493/1493), done.ux/bsp/external/broadcom_bsaUpdating files:  41% (622/1493)
Updating files: 100% (127/127), done.inux/external/libglCompositorUpdating files:  44% (56/127)
Updating files: 100% (118/118), done.inux/external/rkfacialUpdating files:  29% (35/118)
Updating files: 100% (921/921), done.k/rknn-toolkit2Updating files:   5% (52/921)
Updating files: 100% (368/368), done.inux/external/rkupdateUpdating files:  22% (84/368)
Updating files: 100% (186/186), done.inux/external/rkwifibtUpdating files:  59% (110/186)
Updating files: 100% (2109/2109), done.ux/security/binUpdating files:  15% (332/2109)
Updating files: 100% (33/33), done. android/rk/platform/system/rk_tee_userUpdating files:  93% (31/33)
Updating files: 100% (72280/72280), done./external/uvc_appUpdating files:   3% (2631/72280)
Updating files: 100% (17900/17900), done.rnelUpdating files:  34% (6102/17900)
Updating files: 100% (7165/7165), done.prebuilts/gcc-buildroot-9.3.0-2020.03-x86_64_aarch64-rockchip-linux-gnuUpdating files:  13% (949/7165)
Updating files: 100% (236/236), done.k/rkbinUpdating files:  46% (109/236)
Updating files: 100% (13576/13576), done./toolsUpdating files:  88% (12076/13576)
Checking out projects: 100% (65/65), done.
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls .repo/repo/repo
.repo/repo/repo
test@ubuntu22:/work/test/sdkv1.4.0_linux5.10$ .repo/repo/repo sync -l
Traceback (most recent call last):
  File "/work/test/sdkv1.4.0_linux5.10/.repo/repo/main.py", line 56, in <module>
    from subcmds.version import Version
  File "/work/test/sdkv1.4.0_linux5.10/.repo/repo/subcmds/__init__.py", line 35, in <module>
    mod = __import__(__name__,
  File "/work/test/sdkv1.4.0_linux5.10/.repo/repo/subcmds/help.py", line 20, in <module>
    from formatter import AbstractFormatter, DumbWriter
ModuleNotFoundError: No module named 'formatter'
```
出现上面这个问题是因为 **Python3** 已经移除了 `formatter` 的支持,这时候我们可以先将 Python 版本切换为 **Python2** ,等 `repo` sync成功之后,再切回到 Python3 上去。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ 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   2         auto mode
  1            /usr/bin/python3   1         manual mode
  2            /usr/bin/python2   2         manual mode
Press <enter> to keep the current choice[*], or type selection number: 2
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ python --version
Python 2.7.18
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ .repo/repo/repo sync -l
Updating files: 100% (13563/13563), done.
Updating files: 100% (737/737), done.nux/buildrootUpdating files:  26% (197/737)
Updating files: 100% (778/778), done.nux/debianUpdating files:  20% (160/778)
Updating files: 100% (228/228), done.nux/bsp/docsUpdating files:  27% (62/228)
Updating files: 100% (2195/2195), done.ux/external/alsa-configUpdating files:   8% (197/2195)
Updating files: 100% (227/227), done.inux/external/camera_engine_rkaiqUpdating files:   1% (4/227)
Updating files: 100% (152/152), done.inux/external/chromiumUpdating files:  48% (74/152)
Updating files: 100% (166/166), done.inux/gstreamer-rockchipUpdating files:  35% (59/166)
Updating files: 100% (237/237), done.inux/external/rk_pcba_testUpdating files:  40% (97/237)
Updating files: 100% (1203/1203), done.rknn-toolkit2Updating files:  11% (135/1203)
Updating files: 100% (5531/5531), done.ux/external/rkupdateUpdating files:  98% (5430/5531)
Updating files: 100% (81714/81714), done./xserverUpdating files:   8% (6747/81714)
Updating files: 100% (5939/5939), done.kernelUpdating files:  18% (1082/5939)
Updating files: 100% (5722/5722), done.prebuilts/gcc-arm-10.3-2021.07-x86_64-aarch64-none-linux-gnuUpdating files:  16% (950/5722)
Updating files: 100% (248/248), done.k/rkbinUpdating files:  49% (122/248)
Updating files: 100% (13755/13755), done./toolsUpdating files:  23% (3237/13755)
Updating files: 100% (166/166), done.inux/pokyUpdating files:   8% (14/166)
Updating files: 100% (6157/6157), done.ux/pokyUpdating files:  30% (1893/6157)
Checking out projects: 100% (50/50), done.
repo sync has finished successfully.
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls
app  buildroot  build.sh  debian  device  docs  envsetup.sh  external  kernel  Makefile  mkfirmware.sh  prebuilts  rkbin  rkflash.sh  tools  u-boot  yocto
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls
app  buildroot  build.sh  debian  device  docs  envsetup.sh  external  kernel  Makefile  prebuilts  rkbin  rkflash.sh  tools  u-boot  yocto
```
@@ -129,153 +144,242 @@
SDK 相关文档都存放 **docs** 文件夹下。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls docs/
Common  docs_list.txt  Linux  Others  RK356X  RK_Linux_SDK_Supported_System_Kernel_Version_and_ISP_Version_List.png  Rockchip_Developer_Guide_Linux_Software_CN.pdf
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls docs/
cn  en  licenses  Patches  readme_en.pdf  readme_zh.pdf
```
如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,还需要从凌云实验室文件服务器上下载buildroot源码并解压缩。
完成之后,再将 Python 版本切换为 Python3。
```bash
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ cd buildroot/
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19/buildroot$ wget http://192.168.0.2:2211/rockchip/bsp/rk3568_linuxSDK/sdkV1.3.0_linux4.19/buildroot_DL/dl.zip
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19/buildroot$ unzip dl.zip && rm -f dl.zip
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19/buildroot$ cd ..
guowenxue@ubuntu22:~$ 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   2         auto mode
  1            /usr/bin/python3   1         manual mode
  2            /usr/bin/python2   2         manual mode
Press <enter> to keep the current choice[*], or type selection number: 1
guowenxue@ubuntu22:~/rk3568$ python --version
Python 3.10.12
```
## 1.3  Buildroot 配置
接下来我们首先需要制作嵌入式Linux根文件系统,它的制作通常有如下三种方式:
常见的文件系统制作就这几个:
1, Buildroot;
2, Yocto;
3, 直接用第三方的,如 debian、ubuntu 等
1. Buildroot;
2. Yocto;
3. Debian、Ubuntu、Armbian 等;
Rockchip提供的Linux 的SDK里面默认使用的Buildroot来构建根文件系统,那如果需要想让根文件系统添加一些别的命令支持则需要对Buildroot进行配置
此处以添加Python3为例说明
首先我们需要配置编译需要的配置
Rockchip的Linux SDK提供了 **Buildroot** 和 **Debian** 两种方式制作根文件系统,其中我们使用默认的Buildroot来构建。
1.进入~/rk3568/sdkv1.3.0_linux4.19
输入`source envsetup.sh`
选择67.rockchip_rk3568 表示使用rk3568的相关配置
## 1.3  Buildroot 文件系统制作
在开始制作之前,我们首先需要使用 `source envsetup.sh` 命令对Buildroot进行配置,这里选择 `55. rockchip_rk3568` ,表示使用基于该开发板的默认配置。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ source envsetup.sh
... ... 弹出下图选项框
Merging /work/guowenxue/sdkv1.4.0_linux5.10/buildroot/configs/rockchip_rk3568_defconfig
#
# merged configuration written to /work/guowenxue/sdkv1.4.0_linux5.10/buildroot/output/rockchip_rk3568/.config.in (needs make)
#
... ...
defconfig=/work/guowenxue/sdkv1.4.0_linux5.10/buildroot/output/rockchip_rk3568/.config.in Config.in
#
# configuration written to /work/guowenxue/sdkv1.4.0_linux5.10/buildroot/output/rockchip_rk3568/.config
#
make: Leaving directory '/work/guowenxue/sdkv1.4.0_linux5.10/buildroot'
```
![image-20240514182415770](./images/image-20240514182415770.png)
![image-20240514182544931](./images/image-20240514182544931.png)
此时可以看到配置中显示了目标板子,编译输出目录和使用的defconfig文件是哪个
2.进入~/rk3568/sdkv1.3.0_linux4.19/buildroot
输入`make menuconfig` 找到python3,位置在Target packages ->Interpreter languages and scripting->python3选中。
基于 Buildroot 的方式构建根文件系统,我们可以定制开发,这里以添加 **Python** 的支持为例讲解该过程。首先进入到 `buildroot` 文件夹下,然后执行 `make menuconfig` 命令。
![f0494eae9992101da283f9a8c1e4c0d](./images/f0494eae9992101da283f9a8c1e4c0d.png)
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ cd buildroot/
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10/buildroot$ export TERM=vt100
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10/buildroot$ make menuconfig
```
选中python3后保存退出。
输入`make savedefconfig` 此时系统会把你所改变的config信息直接同步到rockchip_rk3568_defconfig
3.编译buildroot
在弹出的菜单栏对话框,选中 `Target packages ->Interpreter languages and scripting->python3` 并退出保存即可。
返回~/rk3568/sdkv1.3.0_linux4.19/
![1742566641852](images/1742566641852.png)
输入`./build.sh buildroot`编译buildroot
4.烧录编译出来的buildroot镜像到开发板中,输入`Python3`
![ab30d79584572a1e91ad7fea770dc78](./images/ab30d79584572a1e91ad7fea770dc78.png)
完成配置后再输入下面命令,系统会把你所改变的config信息直接同步到rockchip_rk3568_defconfig 文件中去。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10/buildroot$ make savedefconfig
```
接下来返回项目顶层,执行 `build.sh` 脚本开始编译buildroot。我们的开发板采用的是 DDR4 内存,在弹出的选项中选择 `5. rockchip_rk3568_evb1_ddr4_v10_defconfig`。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10/buildroot$ cd ..
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ./build.sh buildroot
```
![1742485436203](images/1742485436203.png)
编译完成后的成功输出如下:
![1742565441696](images/1742565441696.png)
编译生成的 Buildroot 文件系统将会存放在 ***output/buildroot/images*** 路径下。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls output/buildroot/images
rootfs.cpio  rootfs.cpio.gz  rootfs.ext2  rootfs.ext4  rootfs.squashfs  rootfs.tar
```
需要注意的是这里只编译制作了根文件系统,还没有编译 Linux 内核和系统镜像,我们稍后将会完成这些操作。
## 1.4 Debian构建根文件系统
瑞芯微的SDK中已经提供的Debian的源码,路径是~/rk3568/sdkv1.3.0_linux4.19/debian
在编译和构建Debian_rootfs之前需要在系统里安装相关工具和依赖
```
sudo apt-get install git ssh make gcc libssl-dev liblz4-tool 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 ncurses-dev
瑞芯微的SDK中同样也提供制作Debian根文件系统的脚本,它们存放在 ***debian*** 文件夹下。这样我们可以很轻松地制作出基于 **Debian** 的根文件系统。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls
app        build.sh  debian  docs      kernel    output     README.md  rkflash.sh  u-boot
buildroot  common    device  external  Makefile  prebuilts  rkbin      tools       yocto
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls debian/
mk-base-debian.sh  mk-rootfs-bullseye.sh  overlay-debug     packages-patches  scripts
mk-image.sh        mk-rootfs.sh           overlay-firmware  post-build.sh
ubuntu-build-service  mk-iso-debian.sh   overlay    packages    readme.md
```
```
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f
```
说明:
其中最为核心的东西是debootstrap和qemu-user-static
这里的debootstrap就是在packages里面
![image-20240514203334861](./images/image-20240514203334861.png)
debootstrap 构建debian基本文件子系统的工具。
qemu-user-static 在PC端非arm架构的ubuntu系统上,需要借助于qemu-arm-static工具来模拟arm环境安才可以安装arm架构下所需要的软件。
安装好这些必要工具后,就可以开始编译Debian了
返回到~/rk3568/sdkv1.3.0_linux4.19/目录
输入`./build.sh debian`开始编译,编译后的镜像文件放在了~/rk3568/sdkv1.3.0_linux4.19/debian
![image-20240514204009803](./images/image-20240514204009803.png)
我们需要将linaro-rootfs.img 这个镜像文件烧录到开发板中
![image-20240514204053423](./images/image-20240514204053423.png)
我们将烧录的rootfs文件替换成linaro-rootfs.img即可
烧录完成后启动开发板,会提示输入用户名和密码,**这里的用户名和密码在编译脚本里写好了的均为linaro**
登录后切换su用户`sudo su`,进入根目录下展示的就是Debian的根文件系统
![image-20240514204322953](./images/image-20240514204322953.png)
在编译和构建 Debian 根文件系统之前,需要安装如下相关系统工具和依赖。
如果使用sdkv1.4.0_linux5.10 的SDK编译debian,步骤如下
先装依赖环境
```
sudo apt-get update && sudo apt-get install git ssh make gcc libssl-dev \
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ sudo apt-get update
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ sudo apt-get install git \
 liblz4-tool expect expect-dev 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 ncurses-dev \
 libgucharmap-2-90-dev bzip2 expat gpgv2 cpp-aarch64-linux-gnu libgmp-dev \
 libmpc-dev bc python-is-python3 python2
 libmpc-dev bc python-is-python3 python2 ssh make gcc libssl-dev
 
sudo dpkg -i debian/ubuntu-build-service/packages/*
sudo apt-get install -f
guowenxue@ubuntu22:~$ sudo dpkg -i debian/ubuntu-build-service/packages/*
guowenxue@ubuntu22:~$ sudo apt-get install -f
```
进入sdk根目录,运行./build.sh debian 会出现如下错误,我们只需要按照他推荐的更新一些工具就可以运行了。
其中最为核心的东西是 **debootstrap** 和 **qemu-user-static**:
* 其中 debootstrap 用于构建debian基本文件子系统的工具,这里的debootstrap就是在packages里面。
  ```bash
  guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls debian/ubuntu-build-service/packages/
  debootstrap_1.0.123_all.deb  live-build_20210902_all.deb  qemu_5.2+dfsg-11_amd64.deb
  ```
* qemu-user-static 在PC端非arm架构的ubuntu系统上,需要借助于qemu-arm-static工具来模拟arm环境安才可以安装arm架构下所需要的软件。
安装好这些必要工具后,就可以开始编译Debian文件系统了。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ./build.sh debian
... ...
mke2fs 1.46.5 (30-Dec-2021)
Creating regular file linaro-rootfs.img
Creating filesystem with 825088 4k blocks and 206336 inodes
Filesystem UUID: 9c7ffd7d-1315-4be2-9bb1-153c751dfe45
Superblock backups stored on blocks:
        32768, 98304, 163840, 229376, 294912, 819200
Allocating group tables: done
Writing inode tables: done
Creating journal (16384 blocks): done
Copying files into the device: done
Writing superblocks and filesystem accounting information: done
Rootfs Image: linaro-rootfs.img
Running 30-rootfs.sh - build_debian /work/guowenxue/sdkv1.4.0_linux5.10/output/debian/images succeeded.
Running 30-rootfs.sh - build_rootfs debian succeeded.
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$
```
在运行 `./build.sh debian` 可能会出现如下错误:
![image-20240611152547317](./images/image-20240611152547317.png)
我们只需要依据提示更新一些工具即可。
```
sudo update-binfmts --unimport qemu-aarch64 2>/dev/null
sudo update-binfmts --disable qemu-aarch64 2>/dev/null
sudo rm -f /usr/bin/qemu-aarch64-static
sudo cp /home/android/rk3568/sdkv1.4.0_linux5.10/device/rockchip/common/data/qemu-aarch64-static /usr/bin/
sudo cp ~/rk3568/sdkv1.4.0_linux5.10/device/rockchip/common/data/qemu-aarch64-static /usr/bin/
sudo update-binfmts --enable qemu-aarch64 2>/dev/null
sudo update-binfmts --import qemu-aarch64 2>/dev/null
```
编译后的Debian文件系统镜像将存放在 ***debian*** 文件夹下。
```bash
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls debian/
binary                                  mk-image.sh            overlay-debug     readme.md
linaro-bullseye-alip-20250321-1.tar.gz  mk-iso-debian.sh       overlay-firmware  scripts
linaro-bullseye-arm64.tar.gz            mk-rootfs-bullseye.sh  packages          ubuntu-build-service
linaro-rootfs.img                       mk-rootfs.sh           packages-patches
mk-base-debian.sh                       overlay                post-build.sh
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ du -sh debian/linaro-rootfs.img
3.0G    debian/linaro-rootfs.img
```
后面在烧录系统镜像时,只需将烧录的rootfs文件替换成这里编译生成的 `linaro-rootfs.img` 文件即可,该系统的默认用户名和密码均为 `linaro`。
![image-20240514204053423](./images/image-20240514204053423.png)
@@ -283,30 +387,41 @@
首先使用下面命令选择要编译的目标开发板,SDK版本不一样,该选项的名字不一样。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ./build.sh lunch
5. BoardConfig-rk3568-evb1-ddr4-v10.mk      # sdkv1.3.0_linux4.19 选择该选项
5. rockchip_rk3568_evb1_ddr4_v10_defconfig  # sdkv1.4.0_linux5.10 选择该选项
Which would you like? [0]: 5
```
如果需要,可以使用下面命令来彻底清除之前的编译。
```
guowenxue@ubuntu22:~/rk3568/sdk$ ./build.sh cleanall
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ./build.sh cleanall
```
 ***sdkv1.3.0_linux4.19*** 和 ***sdkv1.4.0_linux5.10*** 版本SDK 都需要修改 IO Domain 电压如下。
首先使用下面命令选择要编译的目标开发板,这里选择 `5. rockchip_rk3568_evb1_ddr4_v10_defconfig`。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ./build.sh lunch
1. rockchip_defconfig
2. rockchip_rk3566_evb2_lp4x_v10_32bit_defconfig
3. rockchip_rk3566_evb2_lp4x_v10_defconfig
4. rockchip_rk3568_evb1_ddr4_v10_32bit_defconfig
5. rockchip_rk3568_evb1_ddr4_v10_defconfig
6. rockchip_rk3568_evb8_lp4_v10_32bit_defconfig
7. rockchip_rk3568_evb8_lp4_v10_defconfig
8. rockchip_rk3568_pcie_ep_lp4x_v10_defconfig
9. rockchip_rk3568_uvc_evb1_ddr4_v10_defconfig
Which would you like? [1]: 5
Switching to defconfig: /work/guowenxue/sdkv1.4.0_linux5.10/device/rockchip/.chip/rockchip_rk3568_evb1_ddr4_v10_defconfig
#
# configuration written to /work/guowenxue/sdkv1.4.0_linux5.10/output/.config
#
```
接下来需要修改Linux内核 DTS文件中的 `IO Domain` 电压如下。
```
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
... ... ...
&pmu_io_domains {
@@ -314,9 +429,9 @@
    pmuio2-supply = <&vcc3v3_pmu>;
    vccio1-supply = <&vccio_acodec>;
    vccio3-supply = <&vccio_sd>;
    vccio4-supply = <&vcc_1v8>;
    vccio4-supply = <&vcc_1v8>; //Modify from 3v3 to 1v8
    vccio5-supply = <&vcc_3v3>;
    vccio6-supply = <&vcc_1v8>;
    vccio6-supply = <&vcc_1v8>; //Modify from 3v3 to 1v8
    vccio7-supply = <&vcc_3v3>;
};
```
@@ -326,7 +441,12 @@
接下来运行 build.sh 脚本开始编译SDK,默认是 Buildroot 系统镜像。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ./build.sh
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ./build.sh
... ...
+ tar -uf /work/guowenxue/sdkv1.4.0_linux5.10/output/firmware/linux-headers.tar scripts tools
+ cd /work/guowenxue/sdkv1.4.0_linux5.10
Running 99-all.sh - build_all succeeded.
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$
```
@@ -334,23 +454,7 @@
也可以通过设置坏境变量 **RK_ROOTFS_SYSTEM** 指定不同 rootfs。 **RK_ROOTFS_SYSTEM** ⽬前可设定三种系统:***buildroot、debian、 yocto***。
```bash
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ RK_ROOTFS_SYSTEM=yocto ./build.sh
```
如果是 ***sdkv1.3.0_linux4.19*** 在编译 Linux内核时需要做如下选择。
```
编译内核过程弹窗的电压选择如下:
    3300000 PMUIO2 Supply Power Voltage(uV)
    3300000 VCCIO1 Supply Power Voltage(uV)
    3300000 VCCIO3 Supply Power Voltage(uV)
    1800000 VCCIO4 Supply Power Voltage(uV)
    3300000 VCCIO5 Supply Power Voltage(uV)
    1800000 VCCIO6 Supply Power Voltage(uV)
    3300000 VCCIO7 Supply Power Voltage(uV)
... ... ...
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ RK_ROOTFS_SYSTEM=yocto ./build.sh
```
@@ -358,8 +462,10 @@
编译生成的文件将放在 **rockdev** 文件夹下。
```
guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls rockdev/
boot.img  linux-headers.tar  MiniLoaderAll.bin  misc.img  oem.img  parameter.txt  recovery.img  rootfs.img  uboot.img  update.img  userdata.img
guowenxue@ubuntu22:~/rk3568/sdkv1.4.0_linux5.10$ ls rockdev
boot.img           misc.img       recovery.img  update.img
linux-headers.tar  oem.img        rootfs.img    userdata.img
MiniLoaderAll.bin  parameter.txt  uboot.img
```
@@ -400,10 +506,10 @@
从凌云实验室文件服务器上下载并安装下面烧录软件。
*  [CP210x_VCP_Windows.zip](http://studio.iot-yun.club:2211/rockchip/tools/CP210x_VCP_Windows.zip)  解压缩并安装开发板的Console调试串口驱动;
*  [DriverAssitant_v5.1.1.zip](http://studio.iot-yun.club:2211/rockchip/tools/DriverAssitant_v5.1.1.zip) , 解压缩安装RK3568开发板驱动;
*  [CP210x_VCP_Windows.zip](http://studio.weike-iot.com:2211/rockchip/tools/CP210x_VCP_Windows.zip)  解压缩并安装开发板的Console调试串口驱动;
*  [DriverAssitant_v5.1.1.zip](http://studio.weike-iot.com:2211/rockchip/tools/DriverAssitant_v5.1.1.zip) , 解压缩安装RK3568开发板驱动;
*  [RKDevTool_Release_v2.86.zip](http://studio.iot-yun.club:2211/rockchip/tools/RKDevTool_Release_v2.86.zip) ,直接解压缩即可运行的 RK3568开发板烧录软件;
*  [RKDevTool_Release_v2.86.zip](http://studio.weike-iot.com:2211/rockchip/tools/RKDevTool_Release_v2.86.zip) ,直接解压缩即可运行的 RK3568开发板烧录软件;
RK3568_Linux_SDK开发文档/images/1742485436203.png
RK3568_Linux_SDK开发文档/images/1742565441696.png
RK3568_Linux_SDK开发文档/images/1742566641852.png
RK3568_Linux_SDK开发文档/images/ab30d79584572a1e91ad7fea770dc78.png
Binary files differ
RK3568_Linux_SDK开发文档/images/f0494eae9992101da283f9a8c1e4c0d.png
Binary files differ
RK3568_Linux_SDK开发文档/images/image-20240514182415770.png

RK3568_Linux_SDK开发文档/images/image-20240514182544931.png
Binary files differ
RK3568_Linux_SDK开发文档/images/image-20240514203334861.png
Binary files differ
RK3568_Linux_SDK开发文档/images/image-20240514204009803.png
Binary files differ
RK3568_Linux_SDK开发文档/images/image-20240514204322953.png
Binary files differ