| | |
| | | * CPU 8核+、内存32GB+ 以上; |
| | | * 硬盘空间 1TB+; |
| | | |
| | | 推荐在凌云实验室的编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.3.0_linux4.19*** 版本。 |
| | | 推荐在凌云实验室的物理编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.4.0_linux5.10*** 版本。 |
| | | |
| | | |
| | | |
| | |
| | | |
| | | |
| | | |
| | | 如果是 ***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 |
| | | ``` |
| | | |
| | | |
| | |
| | | 首先创建 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 |
| | | ``` |
| | | |
| | | |
| | |
| | | 解压缩出来的源码都在隐藏的 ***.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 |
| | | ``` |
| | | |
| | | |
| | |
| | | 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 Linux SDK源码编译 |
| | | 接下来我们首先需要制作嵌入式Linux根文件系统,它的制作通常有如下三种方式: |
| | | |
| | | 1. Buildroot; |
| | | 2. Yocto; |
| | | 3. Debian、Ubuntu、Armbian 等; |
| | | |
| | | |
| | | |
| | | 首先使用下面命令选择要编译的目标开发板,SDK版本不一样,该选项的名字不一样。 |
| | | Rockchip的Linux SDK提供了 **Buildroot** 和 **Debian** 两种方式制作根文件系统,其中我们使用默认的Buildroot来构建。 |
| | | |
| | | |
| | | |
| | | ## 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' |
| | | ``` |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | 基于 Buildroot 的方式构建根文件系统,我们可以定制开发,这里以添加 **Python** 的支持为例讲解该过程。首先进入到 `buildroot` 文件夹下,然后执行 `make menuconfig` 命令。 |
| | | |
| | | ```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 |
| | | ``` |
| | | |
| | | |
| | | |
| | | 在弹出的菜单栏对话框,选中 `Target packages ->Interpreter languages and scripting->python3` 并退出保存即可。 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 完成配置后再输入下面命令,系统会把你所改变的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 |
| | | ``` |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 编译完成后的成功输出如下: |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 编译生成的 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根文件系统的脚本,它们存放在 ***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 |
| | | ``` |
| | | |
| | | |
| | | |
| | | 在编译和构建 Debian 根文件系统之前,需要安装如下相关系统工具和依赖。 |
| | | |
| | | ```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 ssh make gcc libssl-dev |
| | | |
| | | guowenxue@ubuntu22:~$ sudo dpkg -i debian/ubuntu-build-service/packages/* |
| | | guowenxue@ubuntu22:~$ sudo apt-get install -f |
| | | ``` |
| | | |
| | | |
| | | |
| | | 其中最为核心的东西是 **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` 可能会出现如下错误: |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 我们只需要依据提示更新一些工具即可。 |
| | | |
| | | ``` |
| | | 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 |
| | | 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 ~/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`。 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | ## 1.5 Linux SDK源码编译 |
| | | |
| | | |
| | | |
| | | 如果需要,可以使用下面命令来彻底清除之前的编译。 |
| | | |
| | | ``` |
| | | 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 { |
| | |
| | | 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>; |
| | | }; |
| | | ``` |
| | |
| | | 接下来运行 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$ |
| | | ``` |
| | | |
| | | |
| | |
| | | 也可以通过设置坏境变量 **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 |
| | | ``` |
| | | |
| | | |
| | |
| | | 编译生成的文件将放在 **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 |
| | | ``` |
| | | |
| | | |
| | |
| | | |
| | | 从凌云实验室文件服务器上下载并安装下面烧录软件。 |
| | | |
| | | * [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开发板烧录软件; |
| | | |
| | | |
| | | |
| | |
| | | |
| | |  |
| | | |
| | | DTS文件修改(如果有) |
| | | DTS文件修改(默认已经添加节点) |
| | | |
| | | ``` |
| | | leds: leds { |
| | |
| | | |
| | | **注意:这四个gpio在设备树中可能会被其他设备所占用,导致不能操作gpio,所以要查看哪些设备占用着这几个gpio需要屏蔽掉这些设备。** |
| | | |
| | | |
| | | |
| | | #### 测试方法 |
| | | ### 3.2.2 应用程序测试 |
| | | |
| | | 由于这四个引脚都是用MOS管控制的开漏输出,所以我们需要去测试MOS管的栅极看看是否是3.3V电平 |
| | | |
| | |
| | | |
| | | **GPIO输出1的时候,对应的栅极是0V** |
| | | **GPIO输出0的时候,对应的栅极是3.3V** |
| | | |
| | | 利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。 |
| | | |
| | | |
| | | |
| | | ### 3.2.2 应用程序测试 |
| | | |
| | | ```c |
| | | gpioset 0 18=1/0 |
| | |
| | | |
| | | 利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。 |
| | | |
| | |  |
| | |  |
| | | |
| | | |
| | | |
| | |
| | | |
| | | ## 3.4 RS232和RS485 |
| | | |
| | | ### 3.4.1 硬件原理图说明 |
| | | |
| | |  |
| | | |
| | | ### 3.4.1 内核修改支持 |
| | |  |
| | | |
| | |  |
| | | |
| | | ### 3.4.2 内核修改支持 |
| | | |
| | | RS232 DTS文件修改 |
| | | |
| | |
| | | pinctrl-0 = <&uart9m1_xfer &rs485_ctrl>; |
| | | status = "okay"; |
| | | }; |
| | | &pinctrl { |
| | | |
| | | //在rk3568-pinctrl.dtsi下加入 |
| | | rs485 { |
| | | rs485 { |
| | | rs485_ctrl: rs485-ctrl { |
| | | rockchip,pins = |
| | | <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_low>; |
| | | rockchip,pins = <4 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>; |
| | | }; |
| | | }; |
| | | }; |
| | | ``` |
| | | |
| | | 因为RS485是半双工的,所以要么先测接收功能要么测发送功能,从原理图上可以看到,接受与发送功能的切换是GPIO4_D2来控制的,默认情况是接收功能,我们可以利用gpioset命令拉高该gpio让其工作在发送模式 |
| | | 因为RS485是半双工的,所以要么先测接收功能要么测发送功能,从原理图上可以看到,接受与发送功能的切换是GPIO4_D2来控制的,默认情况是发送功能,我们可以利用gpioset命令拉高该gpio让其工作在接受模式 |
| | | |
| | | ### 3.4.2 应用程序测试 |
| | | ### 3.4.3 应用程序测试 |
| | | |
| | | RS232测试 |
| | | |
| | |
| | | |
| | |  |
| | | |
| | | ``` |
| | | microcom /dev/ttyS9 -s 115200 |
| | | ``` |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | |
| | | 将控制引脚拉高电平,输入如下命令 |
| | | |
| | | ```c |
| | | gpioset 4 28=1 |
| | | gpioset 4 26=1 |
| | | ``` |
| | | |
| | |  |
| | | ``` |
| | | microcom /dev/ttyS9 -s 115200 |
| | | ``` |
| | | |
| | | |
| | | |
| | |
| | | DTS文件修改 |
| | | |
| | | ```c |
| | | #Linux 4.19 |
| | | |
| | | &can0 { |
| | | compatible = "rockchip,can-1.0"; |
| | | assigned-clocks = <&cru CLK_CAN0>; |
| | |
| | | pinctrl-0 = <&can1m1_pins>; |
| | | status = "okay"; |
| | | }; |
| | | |
| | | #Linux 5.10 |
| | | &can0 { |
| | | compatible = "rockchip,rk3568-can-2.0"; |
| | | assigned-clocks = <&cru CLK_CAN0>; |
| | | assigned-clock-rates = <150000000>; |
| | | pinctrl-names = "default"; |
| | | pinctrl-0 = <&can0m1_pins>; |
| | | status = "okay"; |
| | | }; |
| | | |
| | | &can1 { |
| | | compatible = "rockchip,rk3568-can-2.0"; |
| | | assigned-clocks = <&cru CLK_CAN1>; |
| | | assigned-clock-rates = <150000000>; |
| | | pinctrl-names = "default"; |
| | | pinctrl-0 = <&can1m1_pins>; |
| | | status = "okay"; |
| | | }; |
| | | |
| | | ``` |
| | | |
| | | |
| | |
| | | Networking support -> |
| | | CAN bus subsystem support -> |
| | | CAN Device Drivers -> |
| | | Platform CAN drivers with Netlink support -> |
| | | <*>Platform CAN drivers with Netlink support |
| | | <*>Rockchip CAN controller |
| | | <*>Rockchip CANFD controller |
| | | ``` |
| | | |
| | | ### 3.5.2 应用程序测试 |
| | |
| | |  |
| | | |
| | | |
| | | |
| | | **CAN单板回环测试** |
| | | |
| | | 将板子的CAN0_H和CAN1_H连接 CAN0_L和CAN1_L连接 |
| | | |
| | | 依次输入以下命令 |
| | | |
| | | ``` |
| | | ip link set can0 down |
| | | ip link set can0 type can bitrate 500000 |
| | | ip link set can0 up |
| | | |
| | | ip link set can1 down |
| | | ip link set can1 type can bitrate 500000 |
| | | ip link set can1 up |
| | | |
| | | candump can0 & |
| | | cansend can1 123#01020304050607 |
| | | ``` |
| | | |
| | | 通过CAN1发送后,CAN0会打印收到的信息 |
| | | |
| | |  |
| | | |
| | | ## 3.6 声卡Codec |
| | | |
| | |
| | | |
| | | 使用amixer设置声卡 |
| | | |
| | | 通过`amixer -c 0 contents`可以查看音频硬件的当前状态和可能的设置 |
| | | |
| | |  |
| | | |
| | | 这里的 1 和 2 对应于 `Main Mic` 和 `SPK` 在各自列表中的索引。根据需要调整命令中的索引以设置所需的选项。 |
| | | |
| | | 可以使用如下命令切换至SPK输出 |
| | | |
| | | ``` |
| | | amixer cset name='Master Playback Volume' 'on','on' |
| | | amixer cset name='Master Playback Volume' '30','30' |
| | | amixer -c 0 cset numid=2 2 |
| | | |
| | | //linux5.10 |
| | | amixer -c 0 cset numid=12 3 //HP输出 |
| | | ``` |
| | | |
| | |  |
| | | |
| | | 使用aplay播放WAV格式音乐 |
| | | |
| | |
| | | |
| | | 点击 [下载地址](https://pyropus.ca./software/memtester/),即可下载memtester。 |
| | | |
| | | ##### 编译方法1: |
| | | 编译方法1: |
| | | |
| | | 打开终端进入到该路径下,输入解压命令: |
| | | |
| | |
| | | 进入到解压出来的文件夹后打开conf-cc文件,行首更改如下,并保存 |
| | | |
| | | ``` |
| | | /home/tangjunfeng/rk3568/sdkv1.3.0_linux4.19/buildroot/output/rockchip_rk3568/host/usr/bin/aarch64-buildroot-linux-gnu-cc -O2 -DPOSIX -D_POSIX_C_SOURCE=200809L -D_FILE_OFFSET_BITS=64 - |
| | | ~/rk3568/sdkv1.3.0_linux4.19/buildroot/output/rockchip_rk3568/host/usr/bin/aarch64-buildroot-linux-gnu-cc -O2 -DPOSIX -D_POSIX_C_SOURCE=200809L -D_FILE_OFFSET_BITS=64 - |
| | | ``` |
| | | |
| | | 打开conf-ld文件,行首更改如下,并保存 |
| | | |
| | | ``` |
| | | /home/tangjunfeng/rk3568/sdkv1.3.0_linux4.19/buildroot/output/rockchip_rk3568/ host/usr/bin/aarch64-buildroot-linux-gnu-cc -s |
| | | ~/rk3568/sdkv1.3.0_linux4.19/buildroot/output/rockchip_rk3568/ host/usr/bin/aarch64-buildroot-linux-gnu-cc -s |
| | | ``` |
| | | |
| | | 在memtester-4.6.0路径下,进行编译: |
| | |
| | | |
| | | |
| | | |
| | | ##### 编译方法2: |
| | | 编译方法2: |
| | | |
| | | 可以使用郭工的编译脚本进行编译,只需修改脚本的编译目标即可 |
| | | |
| | |
| | | |
| | | ### 3.8.1 内核修改支持 |
| | | |
| | | #### Iperf下载 |
| | | **Iperf下载** |
| | | |
| | | iperf官网:[iperf.fr](https://iperf.fr/) |
| | | |
| | |
| | | 2.cd iperf-3.x 进入目录,执行git tag查看历史版本。 |
| | | 3.执行git checkout 3.1.3 回退到3.1.3的历史版本。 |
| | | |
| | | #### 网络连接和IP配置 |
| | | **网络连接和IP配置** |
| | | |
| | | 服务端与客户端的网口通过网线和交换机连接,两者IP需要保持在同一网段,如下所示: |
| | | |
| | |
| | | |
| | | Linux系统终端:192.168.10.50 |
| | | |
| | | #### 服务端iperf的安装与使用 |
| | | **服务端iperf的安装与使用** |
| | | |
| | | 关闭Windows系统的防火墙与杀毒软件或允许iperf通过防火墙。 |
| | | 拷贝iperf-3.0.11-win32.rar并解压至Windows系统的的英文路径的目录(如D盘根目录)。 |
| | |
| | | |
| | |  |
| | | |
| | | #### 客户端iperf的安装与使用 |
| | | **客户端iperf的安装与使用** |
| | | |
| | | 直接使用郭工安装库脚本文件build.sh,并做修改 |
| | | |
| | |
| | | 12 LIB_URL=$LY_FTP |
| | | 13 |
| | | 14 # Cross compiler for cross compile on Linux server |
| | | 15 #CROSS_COMPILE=/home/anheng/rk3568/sdkv1.3.0_linux4.19/buildroot/output/ rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu- |
| | | 15 #CROSS_COMPILE=~/rk3568/sdkv1.3.0_linux4.19/buildroot/output/ rockchip_rk3568/host/bin/aarch64-buildroot-linux-gnu- |
| | | 16 CROSS_COMPILE=/opt/gcc-aarch64-10.3-2021.07/bin/aarch64-none-linux-gnu- |
| | | 17 # compile jobs |
| | | 18 JOBS=`cat /proc/cpuinfo |grep "processor"|wc -l` |
| | |
| | | 在/install/bin,生成可执行文件 iperf3 |
| | | |
| | | ``` |
| | | lingyun@9d57f9229b66:/home/anheng/install/bin$ ls |
| | | lingyun@9d57f9229b66:~/install/bin$ ls |
| | | gpiodetect gpiofind gpioget gpioinfo gpiomon gpioset iperf3 |
| | | ``` |
| | | |
| | | 将 iperf3拷贝到开发板 |
| | | |
| | | #### 测试TCP |
| | | **测试TCP** |
| | | |
| | | 在Linux终端执行 |
| | | |
| | |
| | | |
| | | |
| | | ### 3.10.2 应用程序测试 |
| | | |
| | | #### 模块开关机 |
| | | |
| | | **开机方式** |
| | | |
| | |
| | | |
| | | |
| | | |
| | | #### PPP拨号方式 |
| | | **PPP拨号方式** |
| | | |
| | | 内核配置好后,编译生成新的镜像烧录到开发板中 |
| | | |
| | |
| | | |
| | | ppp拨号方式需要编写三个脚本文件存放在/etc/ppp/peers下 |
| | | |
| | | 默认是没有这些文件夹的,所以需要去创建ppp和peer文件夹,创建好后在peers下创建如下三个脚本文件 |
| | | 默认是没有这些文件夹的,所以需要去创建ppp和peers文件夹,创建好后在peers下创建如下三个脚本文件 |
| | | |
| | | **rasppp.sh** |
| | | |
| | |
| | | |
| | |  |
| | | |
| | | #### ECM模式拨号上网 |
| | | **ECM模式拨号上网** |
| | | |
| | | 上面的ppp模式拨号较为繁琐,需要大量的步骤依赖pppd软件,并且ppp拨号的稳定性不强,所以接下来介绍ECM模式,只需要AT命令就可以拨号上网 |
| | | |
| | |
| | | 同样,我们可以ping百度测试上网功能 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | **如果使用Linux5.10内核版本,默认内核是没有开启cdc_ether模块即ECM模式,所以要配置内核驱动ECM模式** |
| | | |
| | | `cdc_ether`是Linux操作系统中的一个内核模块,用于支持USB CDC(Communications Device Class)以太网设备。这个模块允许系统将某些USB设备(例如4G/5G调制解调器、智能手机、USB以太网适配器)识别和配置为网络接口,使其能够像传统的以太网设备一样进行网络通信。 |
| | | |
| | | 当切换到ECM模式后,cdc_ether模块会自动加载,加载`cdc_ether`模块后,系统会创建一个新的网络接口(例如`usb0`),用户可以通过该接口进行网络配置和通信。 |
| | | |
| | | 内核配置如下 |
| | | |
| | | ``` |
| | | Device Drivers -> |
| | | [*] Network device support -> |
| | | <*> USB Network Adapters ---> |
| | | <*> Multi-purpose USB Networking Framework ----> |
| | | -*- CDC Ethernet support (smart devices such as cable modems) |
| | | ``` |
| | | |
| | | |
| | | |
| | | ## 3.11 RK3568自带的NPU |
| | | |
| | | ### 3.11.1 应用程序测试 |
| | | |
| | | 测试的程序是一个yolov5的目标识别demo,编译环境是Linux arm64系统 |
| | | |
| | | 先去github下载RKNPU2并解压生成rknpu2-master文件夹 |
| | | |
| | | [GitHub - rockchip-linux/rknpu2](https://github.com/rockchip-linux/rknpu2?tab=readme-ov-file) |
| | | |
| | | 1. 进入~/rk3568/rknpu2-master/examples/rknn_yolov5_demo目录 |
| | | |
| | | 2. `vim build-linux_RK3566_RK3568.sh` |
| | | |
| | | 3. 更改交叉编译器路径 |
| | | |
| | |  |
| | | |
| | | 4. 授予build-linux_RK3566_RK3568.sh执行权限,./build-linux_RK3566_RK3568.sh |
| | | |
| | | 编译好了之后会生成install文件,里面就有官方提供的rknn模型,可执行程序,以及相应的动态库文件,如下 |
| | | |
| | |  |
| | | |
| | | 5. 用adb命令将~/rk3568/rknpu2-master/examples/rknn_yolov5_demo/install目录下的rknn_yolov5_demo_Linux文件夹上传到开发板的/data目录下 |
| | | |
| | | 6. 指定库文件路径 `export LD_LIBRARY_PATH=/data/rknn_yolov5_demo_Linux/lib ` |
| | | |
| | | 7. 运行程序识别相应的图片中物体的类别。`./rknn_yolov5_demo ./model/RV1106/yolov5s-640-640.rknn ./model/bus.jpg ` |
| | | |
| | |  |
| | | |
| | | 识别的结果会以out.jpg保存在当前目录 |
| | | |
| | |  |
| | | |
| | | ## 3.12 DIO测试 |
| | | |
| | | ### 3.12.1 硬件原理图说明 |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | ### 3.12.2 Din测试 |
| | | |
| | |  |
| | | |
| | | 按照上图的说明方法,将Din-0短接GND,此时Din-0输出低电平,测量R6114两侧的电压值,红表笔接一侧,黑笔接地。此时可以发现万用表显示电压为0.17v左右。其他的三个Din均是相同的方法。 |
| | | |
| | | **注意:为什么不是0V而是0.17v的微弱电压?** |
| | | |
| | | **因为从下图可以看出光耦内置三极管的CE结,饱合导通时会存在一定的压降,这个0.17v即为压降。** |
| | | |
| | |  |
| | | |
| | | ### 3.12.3 Dout测试 |
| | | |
| | |  |
| | | |
| | | 如上图所示连接好电路,以Dout-0为例说明,其他的Dout的测试方法均相同 |
| | | |
| | | 输入`gpioset 0 4=0`,使gpio输出为低电平,用万用表测试R6211两端的电压正常情况均为0v。 |
| | | |
| | | 输入`gpioset 0 4=1`,使gpio输出为高电平,用万用表测试R6211两端的电压正常情况均为3.3v。 |
| | | |
| | | |
| | | |
| | | **注意:在RK3568上如果某个gpio没有被复用,默认情况下该引脚的模式是gpio模式,但是此处的GPIO0_PA4例外,所以需要在设备树中特殊配置一下该引脚使用gpio模式。** |
| | | |
| | |  |
| | | |
| | | ### 3.12.4 Dout/ Din 联合测试 |
| | | |
| | |  |
| | | |
| | | 如上图所示将Din与Dout连接好,通过改变Dout的输出电平,检测Din是否收到对应的电平,以Din-0和Dout-0为例说明 |
| | | |
| | | 输入`gpioset 0 4=0` `gpioget 3 3`,显示Din-0的电平应为0 |
| | | |
| | | 输入`gpioset 0 4=1` `gpioget 3 3`,显示Din-0的电平应为1 |
| | | |
| | | |
| | | |
| | | ## 3.13 AIN 电流电压测试 |
| | | |
| | | ### 3.13.1 硬件原理图说明 |
| | | |
| | |  |
| | | |
| | |  |
| | | |
| | | ### 3.13.2 AIN 电流测试 |
| | | |
| | | 首先我们需要将ADC采样程序烧录到开发板上的单片机中 |
| | | |
| | | 连接J6000 TTL下载调试串口 Debug_RXD_CN连接串口的TXD Debug_TXD_CN连接串口的RXD GND相连 |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | **打开FlyMcu.exe烧录工具,选择准备好的.hex 的单片机程序** |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | **点击开始编程后就开始烧录程序,烧录成功如下图,并且可以看到单片机的LED灯在闪烁绿光** |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 单片机程序烧录好后,我们需要使能RK3568的UART6,根据原理图可以看到,RK3568和MCU通信串口为UART6,所以需要在设备树中设置UART6设备节点 |
| | | |
| | | 打开`~/rk3568/sdkv1.4.0_linux5.10/kernel/arch/arm64/boot/dts/rockchip/rk3568-evb1-ddr4-v10-linux.dts` |
| | | |
| | | 加入URAT6节点 |
| | | |
| | | ``` |
| | | &uart6{ |
| | | dma-names = "tx", "rx"; |
| | | pinctrl-names = "default"; |
| | | pinctrl-0 = <&uart6m1_xfer>; |
| | | status = "okay"; |
| | | }; |
| | | ``` |
| | | |
| | | |
| | | |
| | | 重新编译设备树后烧录到开发板中启动开发板,在/dev下看看是否有ttyS6 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 按照上图连接电路后,用XCOM软件打开单片机的调试串口,配置如下图所示 |
| | | |
| | |  |
| | | |
| | | |
| | | |
| | | 在RK3568上运行comport程序,此程序可以配置串口的波特率,停止位,数据位,奇偶校验以及指定使用哪个串口设备 |
| | | |
| | | 源代码在[framwork.git - Gitblit (iot-yun.club)](http://main.iot-yun.club:8088/tree/framwork.git/master/booster) |
| | | |
| | | 但是这个代码需要做一定的修改,因为这个程序只能让串口输出字符串数据,但是我们在测试中需要发送十六进制数据给单片机。 |
| | | |
| | | |
| | | |
| | | 此时就需要了解ADC串口协议,RK3568发送读指令给MCU,MCU会响应RK3568返回ADC采样数据 |
| | | |
| | |  |
| | | |
| | | 示例如下: |
| | | |
| | | 示例: |
| | | |
| | | 1、读第0通道电压: |
| | | |
| | | AA 55 02 00 30 8C //CRC:0x8C30 |
| | | |
| | | AA 55 02 00 EE 0D 99 C0 //0D EE -> 3566mv, CRC:0x0C99 |
| | | |
| | | 2、读第1路通道电压: |
| | | |
| | | AA 55 02 01 F1 4C |
| | | |
| | | AA 55 02 01 06 00 47 C5 //00 06 -> 6mv |
| | | |
| | | 3、读第2路通道电压: |
| | | |
| | | AA 55 02 02 B1 4D |
| | | |
| | | AA 55 02 02 06 00 B7 C5 //6mv |
| | | |
| | | 4、读第3路通道电压: |
| | | |
| | | AA 55 02 03 70 8D |
| | | |
| | | AA 55 02 03 06 00 E6 05 //6mv |
| | | |
| | | 5、读第0路电流 |
| | | |
| | | AA 55 01 00 30 7C |
| | | |
| | | AA 55 01 00 95 01 BB 71 //01 95 -> 405 单位0.01mA,即4.05mA, CRC:0x71BB |
| | | |
| | | 6、读第1路电流 |
| | | |
| | | AA 55 01 01 F1 BC |
| | | |
| | | AA 55 01 01 95 01 EA B1 |
| | | |
| | | 7、读第2路电流 |
| | | |
| | | AA 55 01 02 B1 BD |
| | | |
| | | AA 55 01 02 95 01 1A B1 |
| | | |
| | | 8、读第3路电流 |
| | | |
| | | AA 55 01 03 70 7D |
| | | |
| | | AA 55 01 03 95 01 4B 71 |
| | | |
| | | |
| | | |
| | | 以下AIN电流测试以测试第0路电流为例 |
| | | |
| | | 在RK3568上输入`./comport -d /dev/ttyS6 -b 115200 -s 8N1N -x` |
| | | |
| | | 在XCOM上可以看到MCU的调试信息,旋转电位器旋钮至最左或最右分别测量最小电流和最大电流,量程约为1.22mA~22.79mA(测试其他三路电流时最小电流约为0.006mA) |
| | | |
| | | |
| | | |
| | |  |
| | | |
| | | ### 3.12.3 AIN 电压测试 |
| | | |
| | | 准备工作和AIN电流测试一样,不再赘述 |
| | | |
| | |  |
| | | |
| | | 运行comport程序让rk3568输出读取电压的指令给mcu |
| | | |
| | | 同样在XCOM上也能看到MCU的采样调试信息,旋转电位器旋钮至最左或最右分别测量最小电流和最大电流,量程约为0.017V~5.882V |
| | | |
| | |  |