Bruceou 发表于 2023-11-3 22:10

【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 开发板测评

<h1>1 LicheePi 4A 开发板简介</h1>

<div>LicheePi 4A 是基于 Lichee Module 4A 核心板的国产高性能 RISC-V Linux开发板, 以 TH1520 为主控核心(4xC910@1.85G, RV64GCV,4TOPS@Int8 NPU, 50GFLOP GPU), 板载最大 16GB 64bit LPDDR4X,128GB eMMC,支持 HDMI+MIPI 双4K 显示输出,支持 4K 摄像头接入, 双千兆网口(其中一个支持POE供电)和 4 个 USB3.0 接口,多种音频输入输出(由专用 C906 核心处理)。</div>

<div></div>

<div>LicheePi 4A开发平台核心板和底板采用接插件的连接方式,板载外设资源和接口很多。</div>

<div>顶部视图:</div>

<div></div>

<div>底部视图:</div>

<div></div>

<div>LicheePi 4A核心板基础参数如下:</div>

<table border="1">
        <tbody>
                <tr>
                        <td>处理器</td>
                        <td>TH1520</td>
                </tr>
                <tr>
                        <td>CPU</td>
                        <td>RISC-V 64GCV C910*4@1.85GHz<br />
                        &middot; 每核支持 64KB I cache 和 64KB D Cache<br />
                        &middot; 四核共享 1MB L2 Cache<br />
                        &middot; 支持 TEE 和 REE,TEE/REE 支持核数启动时可配置<br />
                        &middot; 支持自定义且接口兼容 RISC-V 的多核调试框架<br />
                        &middot; 独立电源域,支持 DVFS</td>
                </tr>
                <tr>
                        <td>GPU</td>
                        <td>&middot; OpenCL 1.1/1.2/2.0<br />
                        &middot; OpenGL ES 3.0/3.1/3.2<br />
                        &middot; Vulkan 1.1/1.2<br />
                        &middot; Android NN HAL</td>
                </tr>
                <tr>
                        <td>NPU</td>
                        <td>支持 4TOPS@INT8 通用 NNA 算力,主频 1GHz<br />
                        &middot; 支持 TensorFlow、ONNX、Caffe<br />
                        &middot; 支持 CNN、RNN、DNN 等</td>
                </tr>
                <tr>
                        <td>VPU</td>
                        <td>实时解码器,支持 H.265/H.264/VP9/8/7/6/AVS/AVS+/AVS2.0/VC1/MPEG4<br />
                        &middot; 支持 H.264 BP/MP/HP@level 5.1 解码,最大 4K 分辨率<br />
                        &middot; 支持 H.265/HEVC Main Profile@level 5.1 解码,最大 4K 分辨率<br />
                        &middot; 支持 VP9 Profile-2 解码,最大 4K 分辨率<br />
                        &middot; 支持 AVS2.0 解码,最大 4K 分辨率<br />
                        &middot; 支持 VP6/7/8/AVS/AVS+/VC1/MPEG4 解码,最大 1920x1080 分辨率<br />
                        &middot; 解码性能最大 4K@75fps<br />
                        &middot; 支持 H.264 BP/MP/HP@level4.2 编码,最大 4K 分辨率<br />
                        &middot; 支持 H.265/HEVC Main Profile 编码,最大 4K 分辨率<br />
                        &middot; 仅支持 I 帧和 P 帧<br />
                        &middot; 编码性能最大 4K@40fps</td>
                </tr>
                <tr>
                        <td>RAM</td>
                        <td>&middot; 8GB 64bits LPDDR4X<br />
                        &middot; 16GB 64bits LPDDR4X</td>
                </tr>
                <tr>
                        <td>ROM</td>
                        <td>&middot; eMMC: 可选 空贴、 8G、 32G、 128G</td>
                </tr>
                <tr>
                        <td>OS</td>
                        <td>Debian、Android、OpenWRT等</td>
                </tr>
                <tr>
                        <td>工作电压</td>
                        <td>12V供电</td>
                </tr>
                <tr>
                        <td>工作温度</td>
                        <td>-20℃ ~60℃</td>
                </tr>
        </tbody>
</table>

<div>硬件特性如下表所示。</div>

<table border="1">
        <tbody>
                <tr>
                        <td>以太网</td>
                        <td>&middot; 2 x 千兆以太网接口,可选 POE</td>
                </tr>
                <tr>
                        <td>USB</td>
                        <td>&middot;&middot; USB3.0 x 4<br />
                        &middot; USB2.0 x 1(仅用于烧录)</td>
                </tr>
                <tr>
                        <td>音频接口</td>
                        <td>&middot; 1 x 3.5mm 耳机接口<br />
                        &middot; 一个扬声器接口<br />
                        &middot; 两个板载麦克风</td>
                </tr>
                <tr>
                        <td>显示接口</td>
                        <td>&middot; 1 x HDMI2.0<br />
                        &middot; 1 x 4-lane MIPI DSI</td>
                </tr>
                <tr>
                        <td>摄像头接口</td>
                        <td>&middot; 2 x 2-lane MIPI CSI<br />
                        &middot; 1 x 4-lane MIPI CSI</td>
                </tr>
                <tr>
                        <td>GPIO</td>
                        <td>&middot; UART<br />
                        &middot; IIC<br />
                        &middot; SPI</td>
                </tr>
        </tbody>
</table>

<div>详细的功能参数以及接口请参看LicheePi 4A开发板的产品简介。</div>

<h1>2 LicheePi 4A测试</h1>

<div>下面对LicheePi 4A进行功能以及接口测试。</div>

<h2>2.1 准备工作</h2>

<div>在测试之前,需要准备以下材料:</div>

<div>1.12V2A DC 电源线</div>

<div>2.网线</div>

<div>3.Type-C数据线</div>

<div>4.鼠标键盘</div>

<div>5.HDMI线(非必须)</div>

<div>值得注意的是,HDMI、 MIPI-DSI等显示方式默认都打开了,可根据自己手头的显示设备选择相应的显示方式,当然,不使用显示设备也可以的。</div>

<div>Sipeed 官方镜像基于 Debian 系统修改适配。,默认镜像的帐号密码配置如下:</div>

<div>账户:debian,密码: debian;</div>

<div>账户: sipeed,密码:licheepi;</div>

<div>root 账户默认没有设置密码。</div>

<h2>2.2 登录系统</h2>

<div>进入设备的方式有很多种,如果不使用屏幕,可以使用串口和SSH登录,但是SSH登录需要先连接网络。</div>

<h3>2.2.1 HDMI连接</h3>

<div>笔者这里使用的是HDMI的方式,连接设备后界面如下:</div>

<div></div>

<div>可以插入鼠标键盘直接操作。</div>

<div></div>

<div>当然也可通过串口或者网络登录系统。</div>

<h3>2.2.2 VNC登录</h3>

<div>VNC(Virtual Network Computing)是一种基于图形界面的远程控制技术,它可以让用户通过互联网或局域网远程控制另一台计算机。在Linux系统中,VNC也被广泛应用于远程管理和维护。</div>

<div><strong>常见的</strong><strong>VNC</strong><strong>工具</strong></div>

<ul>
        <li>RealVNC:是一款功能强大的VNC工具,支持多种操作系统,包括Windows、Linux、Mac OS X等,具有高安全性和可靠性。</li>
        <li>UltraVNC:是一款免费的VNC客户端和服务器软件,支持Windows操作系统,提供了远程桌面、文件传输、文本聊天等功能。</li>
        <li>TightVNC:是一个小巧而强大的VNC工具,支持Windows、Linux以及Unix等多种操作系统,具有较高的安全性和性能。</li>
        <li>TigerVNC:是一个开源的VNC工具,支持Windows、Linux以及Mac OS X等多种操作系统,具有稳定性和高性能。</li>
        <li>TeamViewer:是一款针对远程支持、远程控制和在线协作的应用软件,可以实现桌面共享、远程协助、文件传输等功能。</li>
</ul>

<div>笔者使用的是RealVNC。</div>

<h4>安装VNC Server</h4>

<div>首先需要安装VNC Server,可使用以下命令进行安装:</div>

<div>#sudo apt-get install tightvncserver</div>

<div>安装完成后,使用以下命令启动VNC Server:</div>

<div>#tightvncserver或者vncserver</div>

<div></div>

<div>然后回提示设置VNC密码。</div>

<div>启动VNC Server后,会提示设置VNC密码,输入两次密码即可。</div>

<div>杀掉原桌面进程,输入命令(其中的:1是桌面号):</div>

<div>#vncserver -kill :1</div>

<div>然后配置/home/sipeed/.vnc/xstartup。</div>

<div></div>

<div>输入以下命令生成新的会话:</div>

<div>#vncserver :1</div>

<div>执行成功以后,如下图所示:</div>

<div></div>

<h4>VNC连接LicheePi 4A桌面</h4>

<div>下载地址:<a href="https://www.realvnc.com/en/" target="_blank">https://www.realvnc.com/en/</a></div>

<div></div>

<div>根据自己的系统下载相应的版本。然后安装即可,笔者就不再赘述了。</div>

<div>接下来就是设备连接了。打开realvnc,新建连接,输入IP和账号。</div>

<div></div>

<div>然后点击&ldquo;OK&rdquo;即可。</div>

<div></div>

<div>等待片刻即可输入登录密码。</div>

<div></div>

<div>登录成功后,界面如下。</div>

<div></div>

<p>&nbsp;
<h3>2.2.3 串口登录</h3>
</p>

<div>LicheePi 4A 的系统串口是 UART0,在侧边插针中有引出。</div>

<div>你可以使用 USB 转串口模块连接该串口,即 U0-RX 和 U0-TX,注意交叉连接,以及 GND 连接。如果串口驱动没有问题,在设备管理器可看到串口号。</div>

<div></div>

<div>接下来就可使用终端工具登录系统,笔者这里使用的是Xshell,当然也可使用其他的工具,比如putty。</div>

<div>登录成功后打印信息如下:</div>

<div></div>

<div>串口设置: 波特率 115200、数据位 8、停止位 1、无校验位、无流控制</div>

<h3>2.2.4 SSH登录</h3>

<div>在使用之前,需要事先连接网络,笔者这里使用的是以太网,事先需要使用串口的登录,然后输入以下命令查看IP地址:</div>

<div># ifconfig</div>

<div></div>

<div>也可修改网络 IP地址 ,使用以下命令:</div>

<div># ifconfig eth0 192.168.2.5</div>

<div>接下来就可使用SSH登录系统了,还是可以使用Xshell等工具,当然也可在Ubuntu系统中使用SSH登录。</div>

<div></div>

<div>值得注意的是,如果使用root,可以通过串口登录进系统,使用passwd修改。</div>

<div></div>

<div>和使用串口登录一样。</div>

<div></div>

<ul>
        <li><strong>Debian</strong><strong>中</strong><strong>ifconfig</strong><strong>命令无法使用</strong></li>
</ul>

<div>网络检查没有ifconfig命令。首先安装net-tools</div>

<div>#sudo apt-get install net-tools</div>

<div>若安装好之后,还是找不到该命令,如下。</div>

<div></div>

<div>依次输入以下命令:</div>

<div>#whereis ifconfig</div>

<div>#alias ifconfig=&#39;/sbin/ifconfig&#39;</div>

<div>之后再次启用ifconfig命令就可以正常使用了。</div>

<div></div>

<div>当然还可使用绝对路径。</div>

<div></div>

<div>当然还可使用ip addr或者ip a。</div>

<div></div>

<div>&nbsp;</div>

<h2>2.3 测试</h2>

<h3>2.3.1 系统信息</h3>

<div><strong>1.</strong><strong>硬件检测</strong></div>

<div># dmesg #检测硬件的boot启动信息,也就是系统启动的log信息。</div>

<div><strong>2.</strong><strong>查看内核和</strong><strong>CPU</strong><strong>信息</strong></div>

<div># uname -a #系统概述</div>

<div></div>

<div># cat /proc/cpuinfo # CPU信息</div>

<div></div>

<div><strong>3.</strong><strong>查看内存信息</strong></div>

<div># cat /proc/meminfo #内存参数</div>

<div></div>

<div># free -m # 内存使用情况(-m for MB)</div>

<div></div>

<div><strong>4.</strong><strong>设备信息</strong></div>

<div># cat /proc/devices # 显示设备以及对应的设备号</div>

<div></div>

<h3>2.3.2 存储设备速度测试</h3>

<div><strong>1.</strong><strong>DDR</strong><strong>读写测试</strong></div>

<div>在测试之前,需要安装测试工具,笔者这里使用开源的mbw工具。mbw作为一个内存宽带测试工具,可以测试在内存拷贝memcpy、字符串拷贝dumb、内存块拷贝mcblock三种不同方式下的内存拷贝速度。</div>

<div>下载地址:<a href="https://github.com/raas/mbw" target="_blank">https://github.com/raas/mbw</a></div>

<div>首先使用git下载源码,没有Git先安装。</div>

<div>#git clone <a href="https://github.com/raas/mbw.git" target="_blank">https://github.com/raas/mbw.git</a></div>

<div></div>

<div>然后进入源码目录中,使用make编译。</div>

<div></div>

<div>没有make和gcc工具先安装。</div>

<div># apt-get install make gcc</div>

<div>接下来就是测试过程。help获取相关参数说明:</div>

<div></div>

<div>一般会三种测试后查看平均值,平均值越高测试内存带宽越高。</div>

<div>读写速度测试命令如下:</div>

<div># ./mbw -n 10 256</div>

<div></div>

<div>读写速度3647.394M/s和596.984M/s。</div>

<div>读写速度还是可以的。</div>

<div><strong>2.</strong><strong>eMMC</strong><strong>读写测试</strong></div>

<div>eMMC读写速度测试命令如下:</div>

<div>写入测试:</div>

<div># time dd if=/dev/zero of=/test bs=1M count=500 conv=fsync</div>

<div>读取测试:</div>

<div># time dd if=/test of=/dev/null bs=1M</div>

<div></div>

<div>读写速率分别为2.1GB/s、83.4MB/s。</div>

<div><strong>3</strong><strong>.TF </strong><strong>卡测试</strong></div>

<div>在开启前将 TF 卡插入开发板底板上的 TF 卡插槽,终端打印信息如下:</div>

<div></div>

<div>将TF 卡挂载到文件系统 /media/目录</div>

<div>为了能够挂载U盘,需要在电脑上创建一个挂载点。可以使用以下命令:</div>

<div># mkdir /media/mmcblk</div>

<div>在这个例子中,我们将挂载点设置为&ldquo;/media/sda&rdquo;,但是具体位置可以根据需求进行更改。</div>

<div>在确定了U盘所在的设备以及创建挂载点之后,就可以进行挂载操作了。使用以下命令:</div>

<div># mount /dev/mmcblk1p1 /media/mmcblk</div>

<div></div>

<div>写入测试:</div>

<div># time dd if=/dev/zero of=/media/mmcblk/test bs=1M count=500 conv=fsync</div>

<div>读取测试:</div>

<div># time dd if=/media/mmcblk/test of=/dev/null bs=1M</div>

<div></div>

<div>读写速率分别为2.1GB/s、18.3MB/s,当然啦,不同品牌的TF卡速度会有差异。</div>

<div>值得注意的是,先要进行写测试在进行读测试。</div>

<div><strong>4.</strong><strong>USB 2.0/USB3.0</strong></div>

<div>LicheePi 4A支持USB接口,用户可以在任何一个板载USB HOST接口上连接USB鼠标、 USB键盘、 U盘等设备。</div>

<div>下面测试USB接口,插入U盘,打印信息如下:</div>

<div></div>

<div>在Linux操作系统下,如果想要挂载U盘,首先需要找到U盘所在的设备。可以通过以下命令来查看:</div>

<div># sudo fdisk -l</div>

<div></div>

<div>该命令会列出电脑中所有的储存设备,通过观察设备的大小来确定哪一个是U盘。</div>

<div>为了能够挂载U盘,需要在电脑上创建一个挂载点。可以使用以下命令:</div>

<div># mkdir /media/sda</div>

<div>在这个例子中,我们将挂载点设置为&ldquo;/media/sda&rdquo;,但是具体位置可以根据需求进行更改。</div>

<div>在确定了U盘所在的设备以及创建挂载点之后,就可以进行挂载操作了。使用以下命令:</div>

<div># mount /dev/sda /media/sda</div>

<div>该命令中,&ldquo;/dev/sda&rdquo;是U盘所在的设备的路径,在不同的电脑上可能会有所不同。如果在挂载的同时想要指定文件系统的格式,可以使用&ldquo;-t&rdquo;参数。例如:</div>

<div># mount -t ntfs /dev/sda /media/sda</div>

<div>写入测试:</div>

<div># time dd if=/dev/zero of=/media/sda/test bs=1M count=100 conv=fsync</div>

<div>读取测试:</div>

<div># time dd if=/media/sda/test of=/dev/null bs=1M</div>

<div></div>

<div>当然啦,不同种类的U盘也会影响读写速度。</div>

<h3>2.3.3 网络测试</h3>

<div>LicheePi 4A开发板配备2个网口,网速测试方法都是一样的,这里使用系统自带的Iperf工具测试TCP带宽。</div>

<div>Iperf 是一个网络性能测试工具。Iperf可以测试TCP和UDP带宽质量。Iperf可以测量最大TCP带宽和UDP特性。</div>

<div>首先安装iperf工具。</div>

<div>#apt-get install iperf</div>

<div>TCP测试:</div>

<div>服务器执行:#iperf -s -i 1 -w 1M</div>

<div>客户端执行:#iperf -c host -i 1 -w 1M 其中-w表示TCP window size,host需替换成服务器地址。</div>

<div>UDP测试</div>

<div>服务器执行:#iperf -u -s</div>

<div>客户端执行:#iperf -u -c 10.32.0.254 -b 900M -i 1 -w 1M -t 60</div>

<div>下面以TCP为例进行测试,这里测试的是ETH0。</div>

<div>先打开服务器:</div>

<div># iperf -s -i 1 -w 1M</div>

<div></div>

<div>然后使用SSH登录,新建一个终端,再次打开一个终端:</div>

<div># iperf -c 192.168.2.3 -i 1</div>

<div></div>

<div>速度还是可以的。</div>

<h3>2.3.4 串行总线测试</h3>

<div><strong>1.</strong><strong>串口测试</strong></div>

<div>LicheePi 4A平台支持多路串口,用户可用串口分别为UART0-UART5, 在开发板中对应设备名称分别为ttyS0-ttyS5,引出了UART0-UART3,其中 UART0为调试串口。</div>

<div></div>

<div><strong>1</strong><strong>.</strong><strong>串口配置</strong></div>

<div>首先检查下设备。</div>

<div># ls /dev/ttyS*</div>

<div></div>

<div>然后配置串口,用stty工具查询其通信参数。</div>

<div># stty -F /dev/ttyS1</div>

<div></div>

<div>可以自行修改波特率,方法如下:</div>

<div># stty -F /dev/ttyS1 ispeed 115200 ospeed 115200</div>

<div>其中ispeed为输入速率,ospeed为输出速率</div>

<div><strong>2</strong><strong>.</strong><strong>串口发送</strong></div>

<div>使用 echo 命令向终端设备文件写入字符串</div>

<div># echo LicheePi 4A&gt; /dev/ttyS1</div>

<div></div>

<div><strong>3</strong><strong>.</strong><strong>串口接收</strong></div>

<div>使用 cat命令接受串口数据。</div>

<div># cat /dev/ttyS1</div>

<div>然后使用串口助手发送数据即可。</div>

<div></div>

<div>接收输出后会回显,关闭回显方法如下。</div>

<div># stty -F /dev/ttyS1 -echo</div>

<div>然后再次接收数据就不会有回显了。</div>

<div></div>

<div><strong>2</strong><strong>.I2C</strong></div>

<div>LicheePi 4A 上有多个 I2C 设备(I2C0/1/2/3),其中 0/1/3 用于连接 I2C IO 扩展芯片,I2C2 预留在对外插针上。</div>

<div>这里我们使用 i2c-tools 来进行 i2c 验证操作,镜像默认预装了 i2c-tools:</div>

<div></div>

<div>列出所有I2C总线:</div>

<div></div>

<div>检测 I2C 总线上的设备,可见 PCA9557PW 的 I2C 地址为 0x18,与原理图相符:</div>

<div></div>

<div>此外还可以使用 i2cdump 来 dump 指定 i2c 地址的所有寄存器,用 i2cget 来读出指定 i2c 地址的指定寄存器值,用 i2cset 来写入指定 i2c 地址的指定寄存器值。</div>

mu3692020 发表于 2024-3-6 08:26

强啊,顶起来。
页: [1]
查看完整版本: 【玄铁杯第三届RISC-V应用创新大赛】LicheePi 4A 开发板测评