From 60d102398ec777ee1a87d77390f1ffc4126c1f6a Mon Sep 17 00:00:00 2001
From: anheng <573219680@qq.com>
Date: Tue, 02 Apr 2024 15:14:33 +0800
Subject: [PATCH] v0.5

---
 images/work-led.png      |    0 
 images/RS232_result2.png |    0 
 images/RS485_rx.png      |    0 
 images/RS232_result.png  |    0 
 images/RS232.png         |    0 
 images/led_buzzer2.png   |    0 
 images/len_buzzer.png    |    0 
 images/audio.png         |    0 
 images/net2.png          |    0 
 images/CAN_result.png    |    0 
 images/net_result.png    |    0 
 images/RS485_2.png       |    0 
 images/net.png           |    0 
 images/memeroy.png       |    0 
 images/RS485.png         |    0 
 images/RTC.png           |    0 
 images/CAN.png           |    0 
 images/RS485_tx.png      |    0 
 images/audio2.png        |    0 
 RK3568开发文档v0.5.md        | 1018 +++++++++++++++++++++++++++++++++
 images/Relay.png         |    0 
 images/audio4.png        |    0 
 images/CAN1.png          |    0 
 /dev/null                |  725 ------------------------
 images/RTC_result.png    |    0 
 images/RTC_result2.png   |    0 
 images/audio3.png        |    0 
 27 files changed, 1,018 insertions(+), 725 deletions(-)

diff --git "a/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.4.md" "b/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.4.md"
deleted file mode 100644
index 7994508..0000000
--- "a/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.4.md"
+++ /dev/null
@@ -1,725 +0,0 @@
-# 1. 源码编译
-
-
-
-RK3568的 Linux SDK 或 Android 源码编译对服务器要求比较高,其中:
-
-* 系统依赖 Ubuntu20 及以上;
-* CPU 8核+、内存32GB+ 以上;
-* 硬盘空间 1TB+;
-
-推荐在凌云实验室的编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.3.0_linux4.19*** 版本。
-
-
-
-## 1.1 安装交叉编译环境
-
-
-
-首先安装交叉编译所需要的系统命令。
-
-```
-guowenxue@ubuntu22:~$ sudo apt install -y git ssh make gcc libssl-dev liblz4-tool \
-expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support unzip \
-qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
-device-tree-compiler python*-pip libncurses-dev libmpc-dev
-```
-
-
-
- 如果是 ***sdkv1.3.0_linux4.19*** 则需要将 python 的版本设置为 **python2**, 而 ***sdkv1.4.0_linux5.10*** 则需要选择 **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 --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
-
-Press <enter> to keep the current choice[*], or type selection number: 1
-
-guowenxue@ubuntu22:~$ python --version
-Python 2.7.18
-```
-
-
-
-## 1.2 解压缩获取SDK源码
-
-
-
-首先创建 RK3568 开发板的项目工作路径。
-
-```
-guowenxue@ubuntu20:~$ mkdir rk3568 && cd rk3568
-```
-
-
-
-如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,则可以使用下面命令从凌云实验室文件服务器上下载并解压缩。
-
-```
-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
-```
-
-
-
-解压缩出来的源码都在隐藏的 ***.repo*** 文件夹下,接下来我们使用 **repo** 命令将源码 checkout 出来。
-
-```
-guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls -a
-.  ..  .repo
-
-guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ 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.
-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
-```
-
-
-
-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
-```
-
-
-
-如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,还需要从凌云实验室文件服务器上下载buildroot源码并解压缩。
-
-```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 ..
-```
-
-
-
-## 1.3 Linux SDK源码编译
-
-
-
-首先使用下面命令选择要编译的目标开发板,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
-```
-
-
-
- ***sdkv1.3.0_linux4.19*** 和 ***sdkv1.4.0_linux5.10*** 版本SDK 都需要修改 IO Domain 电压如下。
-
-```
-guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
-
-... ... ...
-&pmu_io_domains {
-    status = "okay";
-    pmuio2-supply = <&vcc3v3_pmu>;
-    vccio1-supply = <&vccio_acodec>;
-    vccio3-supply = <&vccio_sd>;
-    vccio4-supply = <&vcc_1v8>;
-    vccio5-supply = <&vcc_3v3>;
-    vccio6-supply = <&vcc_1v8>;
-    vccio7-supply = <&vcc_3v3>;
-};
-```
-
-
-
-接下来运行 build.sh 脚本开始编译SDK,默认是 Buildroot 系统镜像。
-
-```
-guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ./build.sh
-```
-
-
-
-也可以通过设置坏境变量 **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)
-... ... ...
-```
-
-
-
-编译生成的文件将放在 **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
-```
-
-
-
-# 2. 系统烧录
-
-
-
-## 2.1 开发板烧录连接
-
-
-
-如下图所示:
-
-![Board_Connect](images/Board_Connect.png)
-
-
-
-* 使用 12V/1A 的电源给开发板供电;
-* 使用两端都是 TypeA接口的USB线连接开发板上的USB3.0接口到自己的PC上,该USB接口为系统烧录口;
-* 使用 TypeB 接口的USB线连接开发板上的 Console 调试串口到自己的PC上;
-
-
-
-***注: 开发板上电时,可以听到继电器上电后的咔嚓切换声音。***
-
-
-
-## 2.2 烧录软件下载
-
-
-
-将编译SDK生成的镜像文件(rockdev文件夹)下载到 Windwos下的相应路径下,如:
-
-![image_files](images/image_files.png)
-
-
-
-从凌云实验室文件服务器上下载并安装下面烧录软件。
-
-*  [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开发板驱动;
-
-*  [RKDevTool_Release_v2.86.zip](http://studio.iot-yun.club:2211/rockchip/tools/RKDevTool_Release_v2.86.zip) ,直接解压缩即可运行的 RK3568开发板烧录软件;
-
-
-
-下面是我 Windows下的开发板项目目录结构:
-
-![project_folder](images/project_folder.png)
-
-
-
-* **docs**      存放开发板相关文档、芯片datasheet等;
-* **images**    存放开发板编译出来系统镜像;
-* **installer**  项目相关的安装软件;
-* **RKDevTools_v2.86**  RK3568开发板烧录软件;
-
-
-
-双击运行 ***RKDevTools_v2.86*** 文件夹下的 **RKDevTool.exe** 可执行文件, 在下载镜像页面配置各个镜像文件及其烧录地址如下:
-
-![RKDevTool_conf](images/RKDevTool_conf.png)
-
-
-
-## 2.3 Maskrom烧录模式
-
-
-
-如果我们想烧录或更新系统镜像,必须要让CPU进入到 Maskrom 烧录模式。在RK3568开发板上,我们可以分别按住开发板上的不同按键进入到 Maskrom 烧录模式。下面是开发板上的各个按键说明:
-
-| 按键   | 作用           | 备注                                   |
-| ------ | -------------- | -------------------------------------- |
-| SW2101 | RK809_PWRON    | 长按8秒左右关机,再按开机              |
-| S1300  | A核Maskrom按键 | 按住该键+复位键系统将进入到MASKROM模式 |
-| SW1501 | Recovery Key   | 按住该键+复位键系统将进入到Loader模式  |
-| SW2100 | RESETN         | A核复位按键                            |
-| S6000  | M3核复位按键   | M核复位按键                            |
-| S6001  | M3核ISP按键    | 按下复位M核将进入UART ISP模式          |
-
-
-
-### 2.3.1 按住 Maskrom 按键进入
-
-
-
-如下图所示,将开发板上电后,按住 **S1300(Maskrom)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,接下来 **再释放S1300按键**,这时候CPU将会进入到 **Maskrom模式**,在该模式下我们可以烧录或升级系统镜像。
-
-![boot_maskrom](images/boot_maskrom.png)
-
-
-
-下面是开发板上的各个按键说明:
-
-| 按键   | 作用           | 备注                                   |
-| ------ | -------------- | -------------------------------------- |
-| SW2101 | RK809_PWRON    | 长按8秒左右关机,再按开机              |
-| S1300  | A核Maskrom按键 | 按住该键+复位键系统将进入到MASKROM模式 |
-| SW1501 | Recovery Key   | 按住该键+复位键系统将进入到Loader模式  |
-| SW2100 | RESETN         | A核复位按键                            |
-| S6000  | M3核复位按键   | M核复位按键                            |
-| S6001  | M3核ISP按键    | 按下复位M核将进入UART ISP模式          |
-
-
-
-此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个MASKROM设备**” 。
-
-![mode_maskrom](images/mode_maskrom.png)
-
-
-
-### 2.3.1 按住 Recovery 按键进入
-
-
-
-如下图所示,将开发板上电后,按住 **SW1501(Recovery)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,**继续SW1501(Recovery)按键 8秒后释放**,这时候CPU将会进入到 **Loader 模式**,在该模式下我们可以烧录或升级系统镜像。
-
-![boot_loader](images/boot_loader.png)
-
-
-
-此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个LOADER设备**”。
-
-![mode_loader](images/mode_loader.png)
-
-
-
-接下来切换到 “**高级功能**” 菜单下,并点击 “**进入Maskrom**” 按钮,这时候将会切换到 “**Maskrom**” 模式。
-
-![mode_switch](images/mode_switch.png)
-
-
-
-## 2.4 系统烧录与启动
-
-
-
-在 **RKDevTool.exe** 烧录软件上,确认设备已经进入到 Maskrom模式后,点击上面的 **“执行”** 按钮。
-
-![maskrom_program1](images/maskrom_program1.png)
-
-
-
-此时将会开始烧录系统镜像到开发板上,烧录完成后系统将会自动重启,系统启动后将会提示 “**发现一个ADB设备**”。
-
-![maskrom_program1](images/maskrom_program2.png)
-
-
-
-烧录完成第一次启动后,系统将会自动初始化。初始化完成之后将会再次重启,此时可以使用 Console 串口上登录到开发板的 Linux 系统中去。
-
-![console_login](images/console_login.png)
-
-
-
-# 3. 外设调试与测试
-
-
-
-## 3.1 系统心跳灯
-
-
-
-### 3.1.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.1.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.2 RGB灯和蜂鸣器扩展接口
-
-
-
-### 3.2.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.2.2 应用程序测试
-
-
-
-系统状态在系统启动后会默认工作在心跳灯模式,我们也可以使用下面命令修改为其他工作状态。
-
-
-
-## 3.3 RTC芯片
-
-
-
-### 3.3.1 内核修改支持
-
-
-
-DTS文件修改
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.3.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.4 RS232和RS485
-
-
-
-### 3.4.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.4.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.5 CAN总线
-
-
-
-### 3.5.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.5.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.6 声卡Codec
-
-
-
-### 3.6.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.6.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.7 内存压力测试
-
-
-
-### 3.7.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.7.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.8 网卡压力测试
-
-
-
-### 3.8.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.8.2 应用程序测试
-
-
-
-TBD
-
-
-
-## 3.9 4G模块
-
-
-
-### 3.9.1 内核修改支持
-
-
-
-原理图及分析
-
-
-
-DTS文件修改(如果有)
-
-```
-TBD
-```
-
-
-
-内核make menuconfig配置(如果有)
-
-```
-xxxx ->
-    xxxx ->
-         xxxx ->
-```
-
-
-
-### 3.9.2 应用程序测试
-
-
-
-TBD
-
diff --git "a/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md" "b/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md"
new file mode 100644
index 0000000..9c7e4e2
--- /dev/null
+++ "b/RK3568\345\274\200\345\217\221\346\226\207\346\241\243v0.5.md"
@@ -0,0 +1,1018 @@
+# 1. 源码编译
+
+
+
+RK3568的 Linux SDK 或 Android 源码编译对服务器要求比较高,其中:
+
+* 系统依赖 Ubuntu20 及以上;
+* CPU 8核+、内存32GB+ 以上;
+* 硬盘空间 1TB+;
+
+推荐在凌云实验室的编译服务器上编译,IGKBoard-RK3568开发板请选择使用 ***sdkv1.3.0_linux4.19*** 版本。
+
+
+
+## 1.1 安装交叉编译环境
+
+
+
+首先安装交叉编译所需要的系统命令。
+
+```
+guowenxue@ubuntu22:~$ sudo apt install -y git ssh make gcc libssl-dev liblz4-tool \
+expect g++ patchelf chrpath gawk texinfo chrpath diffstat binfmt-support unzip \
+qemu-user-static live-build bison flex fakeroot cmake gcc-multilib g++-multilib \
+device-tree-compiler python*-pip libncurses-dev libmpc-dev
+```
+
+
+
+ 如果是 ***sdkv1.3.0_linux4.19*** 则需要将 python 的版本设置为 **python2**, 而 ***sdkv1.4.0_linux5.10*** 则需要选择 **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 --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
+
+Press <enter> to keep the current choice[*], or type selection number: 1
+
+guowenxue@ubuntu22:~$ python --version
+Python 2.7.18
+```
+
+
+
+## 1.2 解压缩获取SDK源码
+
+
+
+首先创建 RK3568 开发板的项目工作路径。
+
+```
+guowenxue@ubuntu20:~$ mkdir rk3568 && cd rk3568
+```
+
+
+
+如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,则可以使用下面命令从凌云实验室文件服务器上下载并解压缩。
+
+```
+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
+```
+
+
+
+解压缩出来的源码都在隐藏的 ***.repo*** 文件夹下,接下来我们使用 **repo** 命令将源码 checkout 出来。
+
+```
+guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ls -a
+.  ..  .repo
+
+guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ 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.
+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
+```
+
+
+
+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
+```
+
+
+
+如果选择 ***sdkv1.3.0_linux4.19*** 版本SDK,还需要从凌云实验室文件服务器上下载buildroot源码并解压缩。
+
+```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 ..
+```
+
+
+
+## 1.3 Linux SDK源码编译
+
+
+
+首先使用下面命令选择要编译的目标开发板,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
+```
+
+
+
+ ***sdkv1.3.0_linux4.19*** 和 ***sdkv1.4.0_linux5.10*** 版本SDK 都需要修改 IO Domain 电压如下。
+
+```
+guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ vim kernel/arch/arm64/boot/dts/rockchip/rk3568-evb.dtsi
+
+... ... ...
+&pmu_io_domains {
+    status = "okay";
+    pmuio2-supply = <&vcc3v3_pmu>;
+    vccio1-supply = <&vccio_acodec>;
+    vccio3-supply = <&vccio_sd>;
+    vccio4-supply = <&vcc_1v8>;
+    vccio5-supply = <&vcc_3v3>;
+    vccio6-supply = <&vcc_1v8>;
+    vccio7-supply = <&vcc_3v3>;
+};
+```
+
+
+
+接下来运行 build.sh 脚本开始编译SDK,默认是 Buildroot 系统镜像。
+
+```
+guowenxue@ubuntu22:/build/rk3568/sdkv1.3.0_linux4.19$ ./build.sh
+```
+
+
+
+也可以通过设置坏境变量 **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)
+... ... ...
+```
+
+
+
+编译生成的文件将放在 **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
+```
+
+
+
+# 2. 系统烧录
+
+
+
+## 2.1 开发板烧录连接
+
+
+
+如下图所示:
+
+![Board_Connect](images/Board_Connect.png)
+
+
+
+* 使用 12V/1A 的电源给开发板供电;
+* 使用两端都是 TypeA接口的USB线连接开发板上的USB3.0接口到自己的PC上,该USB接口为系统烧录口;
+* 使用 TypeB 接口的USB线连接开发板上的 Console 调试串口到自己的PC上;
+
+
+
+***注: 开发板上电时,可以听到继电器上电后的咔嚓切换声音。***
+
+
+
+## 2.2 烧录软件下载
+
+
+
+将编译SDK生成的镜像文件(rockdev文件夹)下载到 Windwos下的相应路径下,如:
+
+![image_files](images/image_files.png)
+
+
+
+从凌云实验室文件服务器上下载并安装下面烧录软件。
+
+*  [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开发板驱动;
+
+*  [RKDevTool_Release_v2.86.zip](http://studio.iot-yun.club:2211/rockchip/tools/RKDevTool_Release_v2.86.zip) ,直接解压缩即可运行的 RK3568开发板烧录软件;
+
+
+
+下面是我 Windows下的开发板项目目录结构:
+
+![project_folder](images/project_folder.png)
+
+
+
+* **docs**      存放开发板相关文档、芯片datasheet等;
+* **images**    存放开发板编译出来系统镜像;
+* **installer**  项目相关的安装软件;
+* **RKDevTools_v2.86**  RK3568开发板烧录软件;
+
+
+
+双击运行 ***RKDevTools_v2.86*** 文件夹下的 **RKDevTool.exe** 可执行文件, 在下载镜像页面配置各个镜像文件及其烧录地址如下:
+
+![RKDevTool_conf](images/RKDevTool_conf.png)
+
+
+
+## 2.3 Maskrom烧录模式
+
+
+
+如果我们想烧录或更新系统镜像,必须要让CPU进入到 Maskrom 烧录模式。在RK3568开发板上,我们可以分别按住开发板上的不同按键进入到 Maskrom 烧录模式。下面是开发板上的各个按键说明:
+
+| 按键   | 作用           | 备注                                   |
+| ------ | -------------- | -------------------------------------- |
+| SW2101 | RK809_PWRON    | 长按8秒左右关机,再按开机              |
+| S1300  | A核Maskrom按键 | 按住该键+复位键系统将进入到MASKROM模式 |
+| SW1501 | Recovery Key   | 按住该键+复位键系统将进入到Loader模式  |
+| SW2100 | RESETN         | A核复位按键                            |
+| S6000  | M3核复位按键   | M核复位按键                            |
+| S6001  | M3核ISP按键    | 按下复位M核将进入UART ISP模式          |
+
+
+
+### 2.3.1 按住 Maskrom 按键进入
+
+
+
+如下图所示,将开发板上电后,按住 **S1300(Maskrom)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,接下来 **再释放S1300按键**,这时候CPU将会进入到 **Maskrom模式**,在该模式下我们可以烧录或升级系统镜像。
+
+![boot_maskrom](images/boot_maskrom.png)
+
+
+
+下面是开发板上的各个按键说明:
+
+| 按键   | 作用           | 备注                                   |
+| ------ | -------------- | -------------------------------------- |
+| SW2101 | RK809_PWRON    | 长按8秒左右关机,再按开机              |
+| S1300  | A核Maskrom按键 | 按住该键+复位键系统将进入到MASKROM模式 |
+| SW1501 | Recovery Key   | 按住该键+复位键系统将进入到Loader模式  |
+| SW2100 | RESETN         | A核复位按键                            |
+| S6000  | M3核复位按键   | M核复位按键                            |
+| S6001  | M3核ISP按键    | 按下复位M核将进入UART ISP模式          |
+
+
+
+此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个MASKROM设备**” 。
+
+![mode_maskrom](images/mode_maskrom.png)
+
+
+
+### 2.3.1 按住 Recovery 按键进入
+
+
+
+如下图所示,将开发板上电后,按住 **SW1501(Recovery)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,**继续SW1501(Recovery)按键 8秒后释放**,这时候CPU将会进入到 **Loader 模式**,在该模式下我们可以烧录或升级系统镜像。
+
+![boot_loader](images/boot_loader.png)
+
+
+
+此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个LOADER设备**”。
+
+![mode_loader](images/mode_loader.png)
+
+
+
+接下来切换到 “**高级功能**” 菜单下,并点击 “**进入Maskrom**” 按钮,这时候将会切换到 “**Maskrom**” 模式。
+
+![mode_switch](images/mode_switch.png)
+
+
+
+## 2.4 系统烧录与启动
+
+
+
+在 **RKDevTool.exe** 烧录软件上,确认设备已经进入到 Maskrom模式后,点击上面的 **“执行”** 按钮。
+
+![maskrom_program1](images/maskrom_program1.png)
+
+
+
+此时将会开始烧录系统镜像到开发板上,烧录完成后系统将会自动重启,系统启动后将会提示 “**发现一个ADB设备**”。
+
+![maskrom_program1](images/maskrom_program2.png)
+
+
+
+烧录完成第一次启动后,系统将会自动初始化。初始化完成之后将会再次重启,此时可以使用 Console 串口上登录到开发板的 Linux 系统中去。
+
+![console_login](images/console_login.png)
+
+
+
+# 3. 外设调试与测试
+
+
+
+## 3.1 系统心跳灯
+
+
+
+### 3.1.1 内核修改支持
+
+原理图
+
+![](/images/work-led.png)
+
+DTS文件修改(如果有)
+
+```
+        leds: leds {
+                compatible = "gpio-leds";
+                work_led: work {
+                        gpios = <&gpio0 RK_PC0 GPIO_ACTIVE_HIGH>;
+                        linux,default-trigger = "heartbeat";
+                        status = “okay”
+                };
+        };
+```
+
+
+
+内核make menuconfig配置(默认已使能)
+
+```
+Device Drivers ->
+    LED Support ->
+         LED Support for GPIO connected LEDs
+```
+
+```
+Device Drivers ->
+	LED Support ->
+		LED Trigger support ->
+			LED Heartbeat Trigger
+```
+
+
+
+### 3.1.2 应用程序测试
+
+
+
+设置好config之后重新编译内核并烧到开发板中,当系统启动时就会看到蓝色led灯闪烁。
+
+
+
+## 3.2 RGB灯和蜂鸣器扩展接口
+
+
+
+### 3.2.1 内核修改支持
+
+
+
+原理图及分析
+
+![len_buzzer](D:\Desktop\images\len_buzzer.png)
+
+
+
+这里的测试只要就是对这些gpio进行配置即可,利用gpioset来控制高低电平
+
+**注意:这四个gpio在设备树中可能会被其他设备所占用,导致不能操作gpio,所以要查看哪些设备占用着这几个gpio需要屏蔽掉这些设备。**
+
+
+
+#### 测试方法
+
+由于这四个引脚都是用MOS管控制的开漏输出,所以我们需要去测试MOS管的栅极看看是否是3.3V电平
+
+**规则:**
+
+**GPIO输出1的时候,对应的栅极是0V**
+**GPIO输出0的时候,对应的栅极是3.3V**
+
+利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。
+
+
+
+### 3.2.2 应用程序测试
+
+```c
+gpioset 0 18=1/0
+gpioset 0 20=1/0
+gpioset 0 22=1/0
+gpioset 3 21=1/0
+```
+
+利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。
+
+![](/images/led_buzzer2.png)
+
+
+
+## 3.3 RTC芯片
+
+
+
+### 3.3.1 内核修改支持
+
+
+
+内核make menuconfig配置
+
+默认已使能
+
+```
+Device Drivers  ->
+   Real Time Clock  ->
+         Rockchip RK805/RK808/RK809/RK816/RK817/RK818 RTC ->
+```
+
+
+
+### 3.3.2 应用程序测试
+
+输入命令:
+
+```
+date -s "2024-04-01 11:40:00"
+```
+
+![](images/RTC_result.png)
+
+设置完成后再次使用`date`命令查看一下当前时间就会发现时间改过来了
+
+大家注意我们使用`date -s`命令仅仅是修改了当前时间,此时间还没有写入到RK809内部 RTC 里面或其他的 RTC 芯片里面,因此系统重启以后时间又会丢失。我们需要将当前的时间写入到 RTC 里面,这里要用到`hwclock` 命令,输入如下命令将系统时间写入到 RTC 里面:
+
+```
+hwclock -w     /将当前系统时间写入RTC里面/
+```
+
+时间写入到 RTC 里面以后就不怕系统重启以后时间丢失了
+
+间隔时间输入如下命令:
+
+```
+hwclock -r    /读取当前系统时间/
+```
+
+![](images/RTC_result2.png)
+
+发现当前系统时间在走动,系统时间正常。
+
+## 3.4 RS232和RS485
+
+
+
+### 3.4.1 内核修改支持
+
+RS232 DTS文件修改
+
+```c
+&uart3{
+        dma-names = "tx", "rx";
+        pinctrl-names = "default";
+        pinctrl-0 = <&uart3m1_xfer>;
+        status = "okay";
+};
+
+&uart4{
+        dma-names = "tx", "rx";
+        pinctrl-names = "default";
+        pinctrl-0 = <&uart4m1_xfer>;
+        status = "okay";
+};
+```
+
+RS485 DTS文件修改
+
+```c
+&uart9 {
+        pinctrl-names = "default";
+        pinctrl-0 = <&uart9m1_xfer &rs485_ctrl>;
+        status = "okay";
+};
+
+//在rk3568-pinctrl.dtsi下加入
+rs485 {
+        rs485_ctrl: rs485-ctrl {
+        rockchip,pins =
+                <4 RK_PD2 RK_FUNC_GPIO &pcfg_output_low>;
+        };
+};
+```
+
+因为RS485是半双工的,所以要么先测接收功能要么测发送功能,从原理图上可以看到,接受与发送功能的切换是GPIO4_D2来控制的,默认情况是接收功能,我们可以利用gpioset命令拉高该gpio让其工作在发送模式
+
+### 3.4.2 应用程序测试
+
+RS232测试
+
+在/dev目录下的ttyS3和ttyS4为两路RS232设备,使用microcom  命令可以操作232串口。具体测试如下
+
+将两个232设备的RX和TX口用杜邦线进行连接,如下图所示
+
+![](images/RS232.png)
+
+连接好之后我们在设备1和设备2上均输入
+
+```c
+microcom /dev/ttyS3 -s 115200
+```
+
+测试结果
+
+![](images/RS232_result.png)
+
+![](images/RS232_result2.png)
+
+由于microcom没有回显,所以看不到自己发送的是什么,但是接受的结果是没错的
+
+
+
+RS485测试接受功能
+
+如图所示,利用TTL转RS485模块来作为另外一台RS485设备,连线如下图所示
+
+![](images/RS485_2.png)
+
+![](images/RS485_rx.png)
+
+
+
+RS485测试发送功能
+
+将控制引脚拉高电平,输入如下命令
+
+```c
+gpioset 4 28=1
+```
+
+![](images/RS485_tx.png)
+
+
+
+## 3.5 CAN总线
+
+
+
+### 3.5.1 内核修改支持
+
+DTS文件修改
+
+```c
+&can0 {
+        compatible = "rockchip,can-1.0";
+        assigned-clocks = <&cru CLK_CAN0>;
+        assigned-clock-rates = <150000000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&can0m1_pins>;
+        status = "okay";
+};
+
+&can1 {
+        compatible = "rockchip,can-1.0";
+        assigned-clocks = <&cru CLK_CAN1>;
+        assigned-clock-rates = <150000000>;
+        pinctrl-names = "default";
+        pinctrl-0 = <&can1m1_pins>;
+        status = "okay";
+};
+```
+
+
+
+内核make menuconfig配置
+
+```
+Networking support ->
+    CAN bus subsystem support ->
+         CAN Device Drivers  ->
+         		Platform CAN drivers with Netlink support  ->
+```
+
+### 3.5.2 应用程序测试
+
+我们可以用ifconfig -a来查看can的数量,如下图所示
+
+![](images/CAN.png)
+
+
+
+这里我们测试can1的收发功能,can0与之完全相同
+
+首先我们将两个can设备利用杜邦线进行连接,连接如下图所示
+
+![](images/CAN1.png)
+
+连接好之后,我们需要对can1进行配置,利用ip命令
+
+```c
+ip link set can1 down //关闭 can 网络
+ip link set can1 up type can bitrate 800000 //设置 can1 的波特率为 800kbps,can 网络波特率最大值为 1mbps
+ip link set can1 up type can //打开 can 网络
+```
+
+
+
+设置好之后,我们上图所示中的设备1作为接受方,设备2作为发送方
+
+在设备1上输入
+
+```c
+candump can1
+```
+
+在设备2上输入
+
+```c
+cansend can1 123#01020304050607
+```
+
+结果如图所示
+
+![](images/CAN_result.png)
+
+
+
+## 3.6 声卡Codec
+
+
+
+### 3.6.1 内核修改支持
+
+
+
+原理图及分析
+
+![](images/audio.png)
+
+GPIO管脚设置
+
+从原理图可以看出,GPIO3_C3管脚默认值是1,即关闭状态,我们要将其值设置为0
+
+输入命令:
+
+```
+root@RK356X:/usr/share/sounds# gpioset 3 19=0
+```
+
+再输入命令,进行查看确认:
+
+```
+root@RK356X:/usr/share/sounds# gpioget 3 19
+0
+```
+
+
+
+### 3.6.2 应用程序测试
+
+J5950端子上部为音频功放输出端口
+
+实物图连接:
+
+![](images/audio2.png)
+
+将.wav格式音乐拷贝到开发板/usr/share/sounds目录下,如图:
+
+![](images/audio4.png)
+
+
+
+使用amixer设置声卡
+
+```
+amixer cset name='Master Playback Volume' 'on','on'
+amixer cset name='Master Playback Volume' '30','30'
+```
+
+使用aplay播放WAV格式音乐
+
+```
+aplay /usr/share/sounds/C400004a29p81sntRV.wav
+```
+
+如果一切设置正常的话就会开始播放音乐。
+
+
+
+## 3.7 内存压力测试
+
+点击 [下载地址](https://pyropus.ca./software/memtester/),即可下载memtester。
+
+##### 编译方法1:
+
+打开终端进入到该路径下,输入解压命令:
+
+```
+tar xzvf memtester-4.6.0.tar.gz
+```
+
+进入到解压出来的文件夹后打开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 - 
+```
+
+打开conf-ld文件,行首更改如下,并保存
+
+```
+/home/tangjunfeng/rk3568/sdkv1.3.0_linux4.19/buildroot/output/rockchip_rk3568/        host/usr/bin/aarch64-buildroot-linux-gnu-cc -s
+```
+
+在memtester-4.6.0路径下,进行编译:
+
+```
+sudo make
+```
+
+编译之后,进行安装:
+
+```
+sudo make install 
+```
+
+
+
+##### 编译方法2:
+
+可以使用郭工的编译脚本进行编译,只需修改脚本的编译目标即可
+
+
+
+安装完成后,会在memtester-4.6.0路径下生成memtester可执行文件,将memtester执行文件传到RK3568开发板中,给予memtester权限
+
+```
+chmod 777 memtester
+```
+
+输入`free -h`查看开发版剩余空间,可以看到还剩余3.6G
+
+![](images/memeroy.png)
+
+输入命令(3.6G=3687M,跑3轮),即可测试
+
+```
+./memtester 3687 3
+```
+
+
+
+## 3.8 网卡压力测试
+
+
+
+### 3.8.1 内核修改支持
+
+#### Iperf下载
+
+iperf官网:[iperf.fr](https://iperf.fr/)
+
+iperf源码下载地址:[https://github.com/esnet/iperf](https://github.com/esnet/iperf)
+
+Windows版本二进制文件下载:[32位&64位](https://iperf.fr/iperf-download.php#windows)
+
+Linux系统terminal终端下载指定版本:
+
+1.执行git clone [https://github.com/esnet/iperf.git](https://github.com/esnet/iperf.git) 默认下载最新版本。
+2.cd iperf-3.x 进入目录,执行git tag查看历史版本。
+3.执行git checkout 3.1.3 回退到3.1.3的历史版本。
+
+#### 网络连接和IP配置
+
+服务端与客户端的网口通过网线和交换机连接,两者IP需要保持在同一网段,如下所示:
+
+Windows系统终端:192.169.10.200
+
+Linux系统终端:192.168.10.50
+
+#### 服务端iperf的安装与使用
+
+关闭Windows系统的防火墙与杀毒软件或允许iperf通过防火墙。
+拷贝iperf-3.0.11-win32.rar并解压至Windows系统的的英文路径的目录(如D盘根目录)。
+按"win + R"打开Dos窗口,执行“d:” 进入D盘,再执行“cd iperf-3.0.11-win32”进入iperf3.exe所在目录。
+执行iperf3 -s 运行iperf作为服务端
+
+![](images/net.png)
+
+#### 客户端iperf的安装与使用
+
+直接使用郭工安装库脚本文件build.sh,并做修改
+
+```c
+ 1 #!/bin/bash
+  2
+  3 # library name and version
+  4 # Official: https://git.kernel.org/pub/scm/libs/libgpiod/libgpiod.git
+  5 LIB_NAME=iperf
+  6 PACK_SUFIX=tar.gz
+  7
+  8 # LingYun source code FTP server
+  9 LY_FTP=http://main.iot-yun.club:2211/src/
+ 10
+ 11 # library download URL address
+ 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-
+ 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`
+ 19
+ 20 # this project absolute path
+ 21 PRJ_PATH=$(cd $(dirname "${BASH_SOURCE[0]}") && pwd)
+ 22
+ 23 # top project absolute path
+ 24 TOP_PATH=$(realpath $PRJ_PATH/..)
+ 25
+ 26 # binaries install path
+ 27 PREFIX_PATH=$TOP_PATH/install
+ 28 BIN_PATH=$PREFIX_PATH/bin
+ 29 LIB_PATH=$PREFIX_PATH/lib
+ 30 INC_PATH=$PREFIX_PATH/include
+ 31
+......
+155 function do_build()
+156 {
+157     cd $LIB_NAME
+158
+159     do_export
+160
+161     echo "ac_cv_func_malloc_0_nonnull=yes" > arm-linux.cache
+162     ./configure --prefix=${PREFIX_PATH} ${CONFIG_CROSS} --enable-static
+163     check_result "ERROR: configure ${LIB_NAME} failure"
+164
+165     make -j ${JOBS} && make install
+166     check_result "ERROR: compile ${LIB_NAME} failure"
+167 }
+......
+```
+
+执行脚本文件,自动安装下载
+
+```
+./build.sh
+```
+
+在/install/bin,生成可执行文件 iperf3
+
+```
+lingyun@9d57f9229b66:/home/anheng/install/bin$ ls
+gpiodetect  gpiofind  gpioget  gpioinfo  gpiomon  gpioset  iperf3
+```
+
+将 iperf3拷贝到开发板
+
+#### 测试TCP
+
+在Linux终端执行
+
+```
+iperf3 -c 192.168.10.200  -d -t 60
+```
+
+![](images/net2.png)
+
+测试结果
+
+![](images/net_result.png)
+
+
+
+## 3.9 继电器
+
+
+
+### 3.9.1 内核修改支持
+
+
+
+原理图及分析
+
+![](images/Relay.png)
+
+### 3.9.2 应用程序测试
+
+利用gpioset来控制继电器的开与关,当我们设置这两个gpio的电平时会听到继电器发出“咔嚓”的声音,此时证明继电器是正常的。
+
+例如输入
+
+```c
+gpioset 3 28=0
+gpioset 3 28=1
+```
+
+
+
+## 3.10 4G模块
+
+
+
+### 3.10.1 内核修改支持
+
+
+
+原理图及分析
+
+
+
+DTS文件修改(如果有)
+
+```
+TBD
+```
+
+
+
+内核make menuconfig配置(如果有)
+
+```
+xxxx ->
+    xxxx ->
+         xxxx ->
+```
+
+
+
+### 3.10.2 应用程序测试
+
+
+
+TBD
+
diff --git a/images/CAN.png b/images/CAN.png
new file mode 100644
index 0000000..bf3a014
--- /dev/null
+++ b/images/CAN.png
Binary files differ
diff --git a/images/CAN1.png b/images/CAN1.png
new file mode 100644
index 0000000..588125b
--- /dev/null
+++ b/images/CAN1.png
Binary files differ
diff --git a/images/CAN_result.png b/images/CAN_result.png
new file mode 100644
index 0000000..bae7d96
--- /dev/null
+++ b/images/CAN_result.png
Binary files differ
diff --git a/images/RS232.png b/images/RS232.png
new file mode 100644
index 0000000..ba44a6a
--- /dev/null
+++ b/images/RS232.png
Binary files differ
diff --git a/images/RS232_result.png b/images/RS232_result.png
new file mode 100644
index 0000000..f53f88a
--- /dev/null
+++ b/images/RS232_result.png
Binary files differ
diff --git a/images/RS232_result2.png b/images/RS232_result2.png
new file mode 100644
index 0000000..eca7907
--- /dev/null
+++ b/images/RS232_result2.png
Binary files differ
diff --git a/images/RS485.png b/images/RS485.png
new file mode 100644
index 0000000..4cd9d13
--- /dev/null
+++ b/images/RS485.png
Binary files differ
diff --git a/images/RS485_2.png b/images/RS485_2.png
new file mode 100644
index 0000000..d59d541
--- /dev/null
+++ b/images/RS485_2.png
Binary files differ
diff --git a/images/RS485_rx.png b/images/RS485_rx.png
new file mode 100644
index 0000000..1e05ae2
--- /dev/null
+++ b/images/RS485_rx.png
Binary files differ
diff --git a/images/RS485_tx.png b/images/RS485_tx.png
new file mode 100644
index 0000000..1234f95
--- /dev/null
+++ b/images/RS485_tx.png
Binary files differ
diff --git a/images/RTC.png b/images/RTC.png
new file mode 100644
index 0000000..05d8967
--- /dev/null
+++ b/images/RTC.png
Binary files differ
diff --git a/images/RTC_result.png b/images/RTC_result.png
new file mode 100644
index 0000000..f41e1ce
--- /dev/null
+++ b/images/RTC_result.png
Binary files differ
diff --git a/images/RTC_result2.png b/images/RTC_result2.png
new file mode 100644
index 0000000..7b6a923
--- /dev/null
+++ b/images/RTC_result2.png
Binary files differ
diff --git a/images/Relay.png b/images/Relay.png
new file mode 100644
index 0000000..4f290be
--- /dev/null
+++ b/images/Relay.png
Binary files differ
diff --git a/images/audio.png b/images/audio.png
new file mode 100644
index 0000000..ff4a5bc
--- /dev/null
+++ b/images/audio.png
Binary files differ
diff --git a/images/audio2.png b/images/audio2.png
new file mode 100644
index 0000000..26a1bd2
--- /dev/null
+++ b/images/audio2.png
Binary files differ
diff --git a/images/audio3.png b/images/audio3.png
new file mode 100644
index 0000000..f66ea9b
--- /dev/null
+++ b/images/audio3.png
Binary files differ
diff --git a/images/audio4.png b/images/audio4.png
new file mode 100644
index 0000000..3f158bc
--- /dev/null
+++ b/images/audio4.png
Binary files differ
diff --git a/images/led_buzzer2.png b/images/led_buzzer2.png
new file mode 100644
index 0000000..d48490b
--- /dev/null
+++ b/images/led_buzzer2.png
Binary files differ
diff --git a/images/len_buzzer.png b/images/len_buzzer.png
new file mode 100644
index 0000000..124faa4
--- /dev/null
+++ b/images/len_buzzer.png
Binary files differ
diff --git a/images/memeroy.png b/images/memeroy.png
new file mode 100644
index 0000000..a87b95e
--- /dev/null
+++ b/images/memeroy.png
Binary files differ
diff --git a/images/net.png b/images/net.png
new file mode 100644
index 0000000..4a5e192
--- /dev/null
+++ b/images/net.png
Binary files differ
diff --git a/images/net2.png b/images/net2.png
new file mode 100644
index 0000000..e1ff961
--- /dev/null
+++ b/images/net2.png
Binary files differ
diff --git a/images/net_result.png b/images/net_result.png
new file mode 100644
index 0000000..665d600
--- /dev/null
+++ b/images/net_result.png
Binary files differ
diff --git a/images/work-led.png b/images/work-led.png
new file mode 100644
index 0000000..b17827e
--- /dev/null
+++ b/images/work-led.png
Binary files differ

--
Gitblit v1.9.1