From 306fdcbbc02c32db317b1acd89b7dd2b950a93a7 Mon Sep 17 00:00:00 2001
From: anheng <12857953+aahh123456@user.noreply.gitee.com>
Date: Mon, 13 May 2024 12:11:06 +0800
Subject: [PATCH] DIO

---
 RK3568_Linux_SDK开发文档/RK3568_Linux_SDK开发文档.md |  120 +++++++++++++++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 98 insertions(+), 22 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 738e23d..ea79ccc 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"
@@ -397,7 +397,7 @@
 
 ![](images/work-led.png)
 
-DTS文件修改(如果有)
+DTS文件修改(默认已经添加节点)
 
 ```
         leds: leds {
@@ -455,9 +455,7 @@
 
 **注意:这四个gpio在设备树中可能会被其他设备所占用,导致不能操作gpio,所以要查看哪些设备占用着这几个gpio需要屏蔽掉这些设备。**
 
-
-
-#### 测试方法
+### 3.2.2 应用程序测试
 
 由于这四个引脚都是用MOS管控制的开漏输出,所以我们需要去测试MOS管的栅极看看是否是3.3V电平
 
@@ -465,12 +463,6 @@
 
 **GPIO输出1的时候,对应的栅极是0V**
 **GPIO输出0的时候,对应的栅极是3.3V**
-
-利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。
-
-
-
-### 3.2.2 应用程序测试
 
 ```c
 gpioset 0 18=1/0
@@ -481,7 +473,7 @@
 
 利用万用表,将万用表调到直流电压20V这一档,这四个模块对应的三极管如下图所示,利用gpioset来控制四个gpio的高低电平,看看是否符合上述规则。
 
-![](/images/led_buzzer2.png)
+![](./images/led_buzzer2.png)
 
 
 
@@ -776,7 +768,7 @@
 
 点击 [下载地址](https://pyropus.ca./software/memtester/),即可下载memtester。
 
-##### 编译方法1:
+编译方法1:
 
 打开终端进入到该路径下,输入解压命令:
 
@@ -810,7 +802,7 @@
 
 
 
-##### 编译方法2:
+编译方法2:
 
 可以使用郭工的编译脚本进行编译,只需修改脚本的编译目标即可
 
@@ -840,7 +832,7 @@
 
 ### 3.8.1 内核修改支持
 
-#### Iperf下载
+**Iperf下载**
 
 iperf官网:[iperf.fr](https://iperf.fr/)
 
@@ -854,7 +846,7 @@
 2.cd iperf-3.x 进入目录,执行git tag查看历史版本。
 3.执行git checkout 3.1.3 回退到3.1.3的历史版本。
 
-#### 网络连接和IP配置
+**网络连接和IP配置**
 
 服务端与客户端的网口通过网线和交换机连接,两者IP需要保持在同一网段,如下所示:
 
@@ -862,7 +854,7 @@
 
 Linux系统终端:192.168.10.50
 
-#### 服务端iperf的安装与使用
+**服务端iperf的安装与使用**
 
 关闭Windows系统的防火墙与杀毒软件或允许iperf通过防火墙。
 拷贝iperf-3.0.11-win32.rar并解压至Windows系统的的英文路径的目录(如D盘根目录)。
@@ -871,7 +863,7 @@
 
 ![](images/net.png)
 
-#### 客户端iperf的安装与使用
+**客户端iperf的安装与使用**
 
 直接使用郭工安装库脚本文件build.sh,并做修改
 
@@ -939,7 +931,7 @@
 
 将 iperf3拷贝到开发板
 
-#### 测试TCP
+**测试TCP**
 
 在Linux终端执行
 
@@ -1013,8 +1005,6 @@
 
 
 ### 3.10.2 应用程序测试
-
-#### 模块开关机
 
 **开机方式**
 
@@ -1109,7 +1099,7 @@
 
 
 
-#### PPP拨号方式
+**PPP拨号方式**
 
 内核配置好后,编译生成新的镜像烧录到开发板中
 
@@ -1262,7 +1252,7 @@
 
 ![](./images/4g-12.png)
 
-#### ECM模式拨号上网
+**ECM模式拨号上网**
 
 上面的ppp模式拨号较为繁琐,需要大量的步骤依赖pppd软件,并且ppp拨号的稳定性不强,所以接下来介绍ECM模式,只需要AT命令就可以拨号上网
 
@@ -1284,3 +1274,89 @@
 同样,我们可以ping百度测试上网功能
 
 ![](./images/4g-15.png)
+
+## 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. 进入/home/anheng/rk3568/rknpu2-master/examples/rknn_yolov5_demo目录
+
+2. `vim build-linux_RK3566_RK3568.sh`
+
+3. 更改交叉编译器路径
+
+   ![image-20240425173202774](./images/image-20240425173202774.png)
+
+4. 授予build-linux_RK3566_RK3568.sh执行权限,./build-linux_RK3566_RK3568.sh
+
+​       编译好了之后会生成install文件,里面就有官方提供的rknn模型,可执行程序,以及相应的动态库文件,如下
+
+![image-20240425173407578](./images/image-20240425173407578.png)
+
+5. 用adb命令将/home/anheng/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 `
+
+   ![eb02125fb19e15ed9b3fdd421be39b5](./images/eb02125fb19e15ed9b3fdd421be39b5.png)
+
+   识别的结果会以out.jpg保存在当前目录
+
+   ![b2a248d83fc722b08b2d0bfb24f84a0](./images/b2a248d83fc722b08b2d0bfb24f84a0.png)
+   
+## 3.12 DIO测试
+   
+### 3.12.1 硬件原理图说明
+   
+   ![8d0dcd185714d7a482bc6e537d904837_](./images/8d0dcd185714d7a482bc6e537d904837_.jpg)
+   
+   ![d3348419dd510670f7c897be5dec417e_](./images/d3348419dd510670f7c897be5dec417e_.jpg)
+   
+   ![image-20240513112427985](./images/image-20240513112427985.png)
+   
+   ![image-20240513112435295](./images/image-20240513112435295.png)
+   
+### 3.12.2 Din测试
+   
+   ![d4220b70053963e8c9846de84e68b129_](./images/d4220b70053963e8c9846de84e68b129_.jpg)
+   
+   按照上图的说明方法,将Din-0短接GND,此时Din-0输出低电平,测量R6114两侧的电压值,红表笔接一侧,黑笔接地。此时可以发现万用表显示电压为0.17v左右。其他的三个Din均是相同的方法。
+   
+   **注意:为什么不是0V而是0.17v的微弱电压?**
+   
+   **因为从下图可以看出光耦内置三极管的CE结,饱合导通时会存在一定的压降,这个0.17v即为压降。**
+   
+   ![ea23d8f7b3f22251da9646a52106a24](./images/ea23d8f7b3f22251da9646a52106a24.jpg)
+   
+### 3.12.3 Dout测试
+   
+   ![f96ddb352acf28b8a7088acf58e72ab6_](./images/f96ddb352acf28b8a7088acf58e72ab6_.jpg)
+   
+   如上图所示连接好电路,以Dout-0为例说明,其他的Dout的测试方法均相同
+   
+   输入`gpioset 0 4=0`,使gpio输出为低电平,用万用表测试R6211两端的电压正常情况均为0v。
+   
+   输入`gpioset 0 4=1`,使gpio输出为高电平,用万用表测试R6211两端的电压正常情况均为3.3v。
+   
+   
+   
+   **注意:在RK3568上如果某个gpio没有被复用,默认情况下该引脚的模式是gpio模式,但是此处的GPIO0_PA4例外,所以需要在设备树中特殊配置一下该引脚使用gpio模式。**
+   
+   ![image-20240513115053582](./images/image-20240513115053582.png)
+   
+### 3.12.4 Dout/ Din 联合测试
+   
+   ![57c8bc8656696e1eff33f79e808344e2_](./images/57c8bc8656696e1eff33f79e808344e2_.jpg)
+   
+   如上图所示将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

--
Gitblit v1.9.1