From 2ff22fb6d0d602092a83e11d12648febdfe4acdf Mon Sep 17 00:00:00 2001
From: guowenxue <guowenxue@gmail.com>
Date: Sat, 22 Mar 2025 00:38:00 +0800
Subject: [PATCH] update RK3568 Linux SDK doc

---
 RK3568_Linux_SDK开发文档/RK3568_Linux_SDK开发文档.md |  468 +++++++++++++++++++++++++++++++++++----------------------
 1 files changed, 287 insertions(+), 181 deletions(-)

diff --git "a/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243.md" "b/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243.md"
index dab0bba..27fb90e 100644
--- "a/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243.md"
+++ "b/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243/RK3568_Linux_SDK\345\274\200\345\217\221\346\226\207\346\241\243.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开发板烧录软件;
 
 
 

--
Gitblit v1.9.1