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 开发板烧录连接 - - - -如下图所示: - - - - - -* 使用 12V/1A 的电源给开发板供电; -* 使用两端都是 TypeA接口的USB线连接开发板上的USB3.0接口到自己的PC上,该USB接口为系统烧录口; -* 使用 TypeB 接口的USB线连接开发板上的 Console 调试串口到自己的PC上; - - - -***注: 开发板上电时,可以听到继电器上电后的咔嚓切换声音。*** - - - -## 2.2 烧录软件下载 - - - -将编译SDK生成的镜像文件(rockdev文件夹)下载到 Windwos下的相应路径下,如: - - - - - -从凌云实验室文件服务器上下载并安装下面烧录软件。 - -* [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下的开发板项目目录结构: - - - - - -* **docs** 存放开发板相关文档、芯片datasheet等; -* **images** 存放开发板编译出来系统镜像; -* **installer** 项目相关的安装软件; -* **RKDevTools_v2.86** RK3568开发板烧录软件; - - - -双击运行 ***RKDevTools_v2.86*** 文件夹下的 **RKDevTool.exe** 可执行文件, 在下载镜像页面配置各个镜像文件及其烧录地址如下: - - - - - -## 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模式**,在该模式下我们可以烧录或升级系统镜像。 - - - - - -下面是开发板上的各个按键说明: - -| 按键 | 作用 | 备注 | -| ------ | -------------- | -------------------------------------- | -| 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设备**” 。 - - - - - -### 2.3.1 按住 Recovery 按键进入 - - - -如下图所示,将开发板上电后,按住 **SW1501(Recovery)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,**继续SW1501(Recovery)按键 8秒后释放**,这时候CPU将会进入到 **Loader 模式**,在该模式下我们可以烧录或升级系统镜像。 - - - - - -此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个LOADER设备**”。 - - - - - -接下来切换到 “**高级功能**” 菜单下,并点击 “**进入Maskrom**” 按钮,这时候将会切换到 “**Maskrom**” 模式。 - - - - - -## 2.4 系统烧录与启动 - - - -在 **RKDevTool.exe** 烧录软件上,确认设备已经进入到 Maskrom模式后,点击上面的 **“执行”** 按钮。 - - - - - -此时将会开始烧录系统镜像到开发板上,烧录完成后系统将会自动重启,系统启动后将会提示 “**发现一个ADB设备**”。 - - - - - -烧录完成第一次启动后,系统将会自动初始化。初始化完成之后将会再次重启,此时可以使用 Console 串口上登录到开发板的 Linux 系统中去。 - - - - - -# 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 开发板烧录连接 + + + +如下图所示: + + + + + +* 使用 12V/1A 的电源给开发板供电; +* 使用两端都是 TypeA接口的USB线连接开发板上的USB3.0接口到自己的PC上,该USB接口为系统烧录口; +* 使用 TypeB 接口的USB线连接开发板上的 Console 调试串口到自己的PC上; + + + +***注: 开发板上电时,可以听到继电器上电后的咔嚓切换声音。*** + + + +## 2.2 烧录软件下载 + + + +将编译SDK生成的镜像文件(rockdev文件夹)下载到 Windwos下的相应路径下,如: + + + + + +从凌云实验室文件服务器上下载并安装下面烧录软件。 + +* [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下的开发板项目目录结构: + + + + + +* **docs** 存放开发板相关文档、芯片datasheet等; +* **images** 存放开发板编译出来系统镜像; +* **installer** 项目相关的安装软件; +* **RKDevTools_v2.86** RK3568开发板烧录软件; + + + +双击运行 ***RKDevTools_v2.86*** 文件夹下的 **RKDevTool.exe** 可执行文件, 在下载镜像页面配置各个镜像文件及其烧录地址如下: + + + + + +## 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模式**,在该模式下我们可以烧录或升级系统镜像。 + + + + + +下面是开发板上的各个按键说明: + +| 按键 | 作用 | 备注 | +| ------ | -------------- | -------------------------------------- | +| 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设备**” 。 + + + + + +### 2.3.1 按住 Recovery 按键进入 + + + +如下图所示,将开发板上电后,按住 **SW1501(Recovery)按键** 同时,然后 **按下并释放 SW2100(Reset)按键** 将开发板重启,**继续SW1501(Recovery)按键 8秒后释放**,这时候CPU将会进入到 **Loader 模式**,在该模式下我们可以烧录或升级系统镜像。 + + + + + +此时在 **RKDevTool.exe** 软件底行会显示 “**发现一个LOADER设备**”。 + + + + + +接下来切换到 “**高级功能**” 菜单下,并点击 “**进入Maskrom**” 按钮,这时候将会切换到 “**Maskrom**” 模式。 + + + + + +## 2.4 系统烧录与启动 + + + +在 **RKDevTool.exe** 烧录软件上,确认设备已经进入到 Maskrom模式后,点击上面的 **“执行”** 按钮。 + + + + + +此时将会开始烧录系统镜像到开发板上,烧录完成后系统将会自动重启,系统启动后将会提示 “**发现一个ADB设备**”。 + + + + + +烧录完成第一次启动后,系统将会自动初始化。初始化完成之后将会再次重启,此时可以使用 Console 串口上登录到开发板的 Linux 系统中去。 + + + + + +# 3. 外设调试与测试 + + + +## 3.1 系统心跳灯 + + + +### 3.1.1 内核修改支持 + +原理图 + + + +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 内核修改支持 + + + +原理图及分析 + + + + + +这里的测试只要就是对这些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的高低电平,看看是否符合上述规则。 + + + + + +## 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" +``` + + + +设置完成后再次使用`date`命令查看一下当前时间就会发现时间改过来了 + +大家注意我们使用`date -s`命令仅仅是修改了当前时间,此时间还没有写入到RK809内部 RTC 里面或其他的 RTC 芯片里面,因此系统重启以后时间又会丢失。我们需要将当前的时间写入到 RTC 里面,这里要用到`hwclock` 命令,输入如下命令将系统时间写入到 RTC 里面: + +``` +hwclock -w /将当前系统时间写入RTC里面/ +``` + +时间写入到 RTC 里面以后就不怕系统重启以后时间丢失了 + +间隔时间输入如下命令: + +``` +hwclock -r /读取当前系统时间/ +``` + + + +发现当前系统时间在走动,系统时间正常。 + +## 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口用杜邦线进行连接,如下图所示 + + + +连接好之后我们在设备1和设备2上均输入 + +```c +microcom /dev/ttyS3 -s 115200 +``` + +测试结果 + + + + + +由于microcom没有回显,所以看不到自己发送的是什么,但是接受的结果是没错的 + + + +RS485测试接受功能 + +如图所示,利用TTL转RS485模块来作为另外一台RS485设备,连线如下图所示 + + + + + + + +RS485测试发送功能 + +将控制引脚拉高电平,输入如下命令 + +```c +gpioset 4 28=1 +``` + + + + + +## 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的数量,如下图所示 + + + + + +这里我们测试can1的收发功能,can0与之完全相同 + +首先我们将两个can设备利用杜邦线进行连接,连接如下图所示 + + + +连接好之后,我们需要对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 +``` + +结果如图所示 + + + + + +## 3.6 声卡Codec + + + +### 3.6.1 内核修改支持 + + + +原理图及分析 + + + +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端子上部为音频功放输出端口 + +实物图连接: + + + +将.wav格式音乐拷贝到开发板/usr/share/sounds目录下,如图: + + + + + +使用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 + + + +输入命令(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作为服务端 + + + +#### 客户端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 +``` + + + +测试结果 + + + + + +## 3.9 继电器 + + + +### 3.9.1 内核修改支持 + + + +原理图及分析 + + + +### 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