0023 MP2.5GTPU(M.2 E)

来自Mcuzone Wiki
Mcuadm留言 | 贡献2024年10月14日 (一) 09:03的版本 →‎4.3 固定2.5G网口的MAC地址
(差异) ←上一版本 | 最后版本 (差异) | 下一版本→ (差异)

Change the language to English

关键词

树莓派5、PCIe、Switch、RL8125、2.5Gbps、以太网、iperf3测速、TPU、DTPU、驱动安装、操作演示、AI、google、Coral、M.2 E key

一、简介

树莓派5具备一个16Pin的PCIe接口,我们可以利用该接口进行多种外设的扩展。这次我们利用PCIe接口,一路为M.2 E key接口,可外接A+E Key接口的TPU模组,一路通过RTL8125芯片2.5Gbps以太网扩展。该扩展板的2.5G以太网在树莓派系统下无需驱动上电后即可自动识别成eth1。如果使用Ubuntu系统则需要先安装RTL8125的驱动才可使用。而Coral M.2加速器是一款M.2尺寸的模组,可以通过PCIE接口为树莓派等平台扩展边缘TPU协处理器。

二、硬件资源

1. 采用0.5mm 16P PCIe线连接树莓派5的PCIE接口;

2. 一路PCIe扩展2.5Gbps以太网;

3. 一路PCIe扩展M.2 E-key接口,用于接Google coral Edge TPU,树莓派官方OS加载驱动;

4. 2.5Gbps以太网在树莓派官方OS和Openwrt系统免驱,Ubuntu系统下需安装驱动;

5. 采用优质电子元器件和沉金工艺,无铅生产;PCB板通过UL和ROHS认证,防火等级94V-0;

6. 四个M2.5固定孔,板子上方内凹设计,方便40Pin GPIO的操作使用;

0023_MP2_5GTPU_01.jpg

三、系统烧写及设置

3.1 概述

本文档采用树莓派OS、Ubuntu OS和OpenWrt系统进行测试。

1) 树莓派OS的版本为2024-07-04-raspios-bookworm-arm64.img.xz,树莓派OS下载地址:

https://www.raspberrypi.com/software/operating-systems/#raspberry-pi-os-64-bit

注意:如果需要在树莓派OS下运行TPU模组,烧写系统用的TF卡的容量至少为16G,否则可能会在安装配置过程中报空间不足!

2) Ubuntu OS的版本为ubuntu-24.04-preinstalled-desktop-arm64+raspi.img.xz,Ubuntu OS下载地址:

https://ubuntu.com/download/raspberry-pi

3) OpenWrt系统版本为:openwrt-bcm27xx-bcm2712-rpi-5-squashfs-sysupgrade-linux-6.1.100-20240805.img.gz

3.2 系统烧写在SD(TF)卡上

点击直达烧写方法说明

四、树莓派系统下使用演示

4.1 Internet网络测试

MP2.5GTPU扩展板上的2.5G网口在树莓派OS下免驱即插即用,系统起来后,在树莓派终端中输入ifconfig -a命令,2.5G网口被识别为eth1:

0015_MP2_5G_01.jpg

使用中国科技大学测速网站,对2.5G网口连外网(200M宽带)测速,结果如下:

0015_MP2_5G_02.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

4.2 2.5G内网测试

安装网络测速工具iperf3:

sudo apt install iperf3

0008_MPS2_5G_04.jpg

利用iperf3,通过2.5G路由器,在树莓派OS与PC之间进行测速。

eth1测速结果如下:

当树莓派OS作为client时,速度大约为2.35Gbps:

0015_MP2_5G_03.jpg

当树莓派OS作为server时,速度大约为1.82Gbps:

0015_MP2_5G_04.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

4.3 固定2.5G网口的MAC地址

2.5G网口为RTL8125网卡,在使用过程中的MAC地址是不固定的,每次重新上电后MAC地址都会随机改变。下面讲解如何为RTL8125网卡设置固定MAC地址。

本讲解也适用于Ubuntu系统。

首先在树莓派终端中查看RTL8125网卡的识别信息:

ipconfig -a

0015_MP2_5G_28.jpg

这里的RTL8125网卡为eth1,实际操作中可能会因为系统识别名称不同而不同。

然后输入:

sudo mousepad /etc/systemd/system/macspoof@eth1.service

或:

sudo nano /etc/systemd/system/macspoof@eth1.service

eth1为上面显示的网卡识别名称。

运行上面的命令后会新建一个文档,输入以下文本:

[Unit]

Description=MAC Address Change %I

Wants=network-pre.target

Before=network-pre.target

BindsTo=sys-subsystem-net-devices-%i.device

After=sys-subsystem-net-devices-%i.device

[Service]

Type=oneshot

ExecStart=/usr/bin/ip link set dev %i address xx:xx:xx:xx:xx:xx

ExecStart=/usr/bin/ip link set dev %i up

[Install]

WantedBy=multi-user.target

其中“xx:xx:xx:xx:xx:xx”为想要指定的MAC地址,可以按MAC地址格式自行确定(不要和其它网络设备重复),设置完成后保存并退出。

随后输入下面的命令使能服务:

sudo systemctl enable macspoof@eth1.service

这样就完成了对eth1的固定MAC地址。

全部操作完毕后重启系统,系统重启完毕后,执行ipconfig -a即可看到MAC地址更改成功:

0015_MP2_5G_29.jpg

五、Ubuntu系统下使用演示

5.1 安装Ubuntu系统下RTL8125驱动

MP2.5GTPU扩展板上的2.5G网口在Ubuntu系统下不能即插即用,需要安装RTL8125驱动。

因为树莓派5的无线网卡模块在Ubuntu系统下是即插即用的,所以我们需要使用无线网卡连接无线网络:

0009_MP2_5GD_11.jpg

也可以使用网线连接树莓派5上的原生网口。

Ubuntu系统默认不安装ifconfig工具,所以需要手动安装:

sudo apt install net-tools

0008_MPS2_5G_13.jpg

输入ifconfig -a,可见此时并没有显示2.5G网卡:

0009_MP2_5GD_12.jpg

接下来我们开始安装RTL8125驱动。

首先需要更新系统:

sudo apt-get update

0009_MP2_5GD_13.jpg

接着准备编译环境:

sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms

0009_MP2_5GD_14.jpg

然后安装驱动:

sudo apt-get install r8125-dkms

按提示安装即可:

0009_MP2_5GD_15.jpg

安装完成后输入:

sudo modprobe r8125

0009_MP2_5GD_16.jpg

输入ifconfig -a就可以看到一个enxxx的网卡接口,这样就安装完毕2.5G网卡驱动:

0015_MP2_5G_05.jpg

5.2 Internet网络测试

将2.5G网口连外网(200M宽带)测速,结果如下:

0015_MP2_5G_06.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

如果使用Ubuntu内置的Firefox浏览器时运行速度很慢或者经常无响应,建议安装轻量浏览器Falkon:

sudo apt install falkon

5.3 2.5G内网测试

安装网络测速软件iperf3:

sudo apt install iperf3

0009_MP2_5GD_20.jpg

利用iperf3,在Ubuntu系统与PC之间进行测速。

测速结果如下:

当Ubuntu系统作为client时,速度大约为2.35Gbps:

0015_MP2_5G_07.jpg

当Ubuntu系统作为server时,速度大约为1.85Gbps:

0015_MP2_5G_08.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

六、OpenWrt系统操作演示

6.1 概述

MP2.5GTPU扩展板在OpenWrt系统下,默认树莓派上的原生千兆网口为LAN口,我们可以把扩展板上的2.5G网口作为LAN口,而把树莓派5上的原生网口作为WAN口,这样就能利用2.5G网口在内网高速传输文件。

6.2 准备工作

烧写OpenWrt系统并上电启动后,我们将网线一端插在树莓派5的原生网口上,另一端插在PC上,待PC的网卡与树莓派5上的网口连接成功后,我们在Windows设置中找到网络和Internet,在以太网中打开连接的网络查看默认网关的IP地址,这个地址就是OpenWrt系统的后台配置页面地址,如图所示,本文测试的地址为192.168.198.1:

2001_CM4_Ultra_53.jpg

然后打开网页浏览器输入192.168.198.1进入OpenWrt系统。默认用户名为root,默认密码为password

2001_CM4_Ultra_54.jpg

6.3 MP2.5GTPU的2.5G网口的配置和应用

进入“系统 - TTYD终端”,输入ifconfig -a,可以看到有eth0和eth1两个网口,其中eth0为树莓派5的原生网口,eth1为扩展板的2.5G网口:

0015_MP2_5G_09.jpg

我们使用的宽带一般不会超过千兆,为了获得更好的内网性能,建议将树莓派5的原生千兆配置从默认的LAN配置为WAN,然后把扩展板的2.5G以太网口配置为LAN。

点击“网络 - 接口”,点击“修改”:

0015_MP2_5G_10.jpg

在“物理设置”中,把eth1选中,然后点击“保存&应用”按钮:

0015_MP2_5G_11.jpg

将网线从树莓派5的原生网口中拔出,插入2.5G网口,待PC的网卡与2.5G网口连接成功后,我们刷新管理页面,点击“网络 - 接口”,点击“修改”:

0015_MP2_5G_12.jpg

在“物理设置”中,把eth0前面的勾去掉,然后点击“保存”按钮:

0015_MP2_5G_13.jpg

回到“网络 - 接口”,点击“添加新接口”:

0015_MP2_5G_14.jpg

接口名称设置为WAN,接口协议选择DHCP客户端,接口选择eth0后点击“提交”按钮:

0015_MP2_5G_15.jpg

在防火墙设置中选择WAN口后点击“保存&应用”按钮:

0015_MP2_5G_16.jpg

把连接Internet网络的网线插到树莓派5的原生网口上,然后回到“网络 - 接口”,稍等片刻,就可以看见新建的WAN接口获取了IP地址,这样PC就可以通过连接2.5G网口进入内网上网了,此时网络结构为千兆网口(接Internet,树莓派上)进,2.5G网口(接内网,扩展板上)出:

0015_MP2_5G_17.jpg

我们在树莓派5的USB3.0接口上插入一个支持USB3.0的U盘或者移动硬盘,参考下面链接,将这个U盘或者移动硬盘配置为共享目录:

设置SSD硬盘为共享目录

设置完毕后,我们在资源管理器中输入\\192.168.198.1(地址为扩展板的地址,视实际情况而不同),就能看到所映射的共享目录了:

0015_MP2_5G_18.jpg

将任意文件拖拽到桌面进行读取速度测试:

0015_MP2_5G_19.jpg

将任意文件拖拽到SSD进行写入速度测试:

0015_MP2_5G_20.jpg

注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。

6.4 其它应用

树莓派5的无线模块可以作为无线AP,也可以作为无线WAN口,关于这些应用的实现,请参考下列链接:

树莓派自带WiFI做无线AP(master模式)使用

树莓派自带WiFi做Client使用

七、树莓派OS运行TPU模组

本章介绍如何在树莓派OS运行TPU模组。

注意:此操作演示需要确保能稳定连通外网(需自备方法),否则许多文件无法下载或下载不全,最后可能会造成代码运行失败。

7.1 配置config.txt

系统启动后打开树莓派终端输入命令:

sudo nano /boot/firmware/config.txt

或者:

sudo mousepad /boot/firmware/config.txt

在文件最下方添加以下代码:

dtparam=pciex1

kernel=kernel8.img

dtoverlay=pineboards-hat-ai

0006_MPW7_TPU_01.jpg

0006_MPW7_TPU_02.jpg

代码添加成功后,保存并重启系统:

sudo reboot

7.2 确认软件环境

系统重启后打开打开树莓派终端输入命令:

uname -r

确保内核版本大于4.18后输入:

lsmod | grep apex

确保没有输出则可以开始安装TPU驱动。

0006_MPW7_TPU_03.jpg

7.3 安装必要软件

确保网络能连通外网(需自备方法)后,添加Google TPU软件库:

echo "deb https://packages.cloud.google.com/apt coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list

curl https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add -

0006_MPW7_TPU_04.jpg

添加完成后更新软件列表:

sudo apt-get update

0006_MPW7_TPU_06.jpg

更新完成后安装必要的软件:

sudo apt-get install cmake libedgetpu1-std devscripts debhelper dkms dh-dkms

0006_MPW7_TPU_07.jpg

0006_MPW7_TPU_08.jpg

7.4 安装Gasket Driver

依次输入以下命令安装Gasket Driver:

git clone https://github.com/google/gasket-driver.git

cd gasket-driver

sudo debuild -us -uc -tc -b

cd ..

sudo dpkg -i gasket-dkms_1.0-18_all.deb

0006_MPW7_TPU_09.jpg

0006_MPW7_TPU_10.jpg

0006_MPW7_TPU_11.jpg

安装完成后输入以下命令确保驱动以及软件安装成功:

sudo apt-get install gasket-dkms libedgetpu1-std

0006_MPW7_TPU_12.jpg

接下来添加udev rule去获得设备操作权限:

sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules"

添加用户到apex:

sudo groupadd apex

sudo adduser $USER apex

0006_MPW7_TPU_13.jpg

设置完成后重启系统:

sudo reboot

7.5 验证模块检测以及驱动安装

系统启动后验证模块检测以及驱动安装:

lspci -nn | grep 089a

这里需要看到TPU模块,如下图所示(具体参数显示以实际为准):

ls /dev/apex_0

0006_MPW7_TPU_14.jpg

这里插了一个TPU模块,因此可以看到一个TPU模块。

输入sudo lspci -v可以看到驱动加载,其中必须包括TPU驱动,如果插了SSD硬盘,还需要包括SSD模块,如下图所示:

0013_MPTPU_M_01.jpg

7.6 代码运行环境配置

Google TPU模块代码运行需要在Python3.6-3.9之间,而树莓派最新系统的Python版本为3.11,因此我们需要使用Pyenv来下载老版本Python。

首先进行依赖安装:

sudo apt-get install -y make build-essential libssl-dev zlib1g-dev \libbz2-dev libreadline-dev libsqlite3-dev wget curl llvm libncurses5-dev \libncursesw5-dev xz-utils tk-dev libffi-dev liblzma-dev python3-openssl

0006_MPW7_TPU_17.jpg

0006_MPW7_TPU_18.jpg

依赖安装完成后进行pyenv的安装:

curl https://pyenv.run | bash

0006_MPW7_TPU_19.jpg

输入:

sudo nano ~/.bashrc

或者:

sudo mousepad ~/.bashrc

在文件最下面添加以下代码:

export PYENV_ROOT="$HOME/.pyenv"

[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"

eval "$(pyenv init -)"

0006_MPW7_TPU_36.jpg

0006_MPW7_TPU_21.jpg

添加完成后保存退出并重新加载shell:

exec "$SHELL"

0006_MPW7_TPU_22.jpg

接下来我们可以利用pyenv安装老系统版本Python:

pyenv install -v 3.8.8

0006_MPW7_TPU_23.jpg

0006_MPW7_TPU_24.jpg

等待安装成功后我们将系统Python版本更改为3.8.8:

pyenv global 3.8.8

更改成功后可以查看当前Python使用版本为3.8.8:

pyenv versions

python3 -V

0006_MPW7_TPU_25.jpg

7.7 下载代码和运行模组

依次输入以下命令进行下载:

mkdir coral && cd coral

git clone https://github.com/google-coral/pycoral.git

cd pycoral

cd test_data

git clone https://github.com/google-coral/test_data.git

0006_MPW7_TPU_26.jpg

0006_MPW7_TPU_27.jpg

接下来下载代码运行模组

pip3 install numpy

0006_MPW7_TPU_28.jpg

pip3 install Pillow

0006_MPW7_TPU_29.jpg

pip3 install --extra-index-url https://google-coral.github.io/py-repo/ pycoral

0006_MPW7_TPU_30.jpg

7.8 运行代码

模组下载完成后返回 coral/pycoral路径下

cd ..

输入以下代码进行代码运行

0006_MPW7_TPU_39.jpg

注意:我们可以复制下列代码,但是请先粘贴到文本软件中,按照上图的格式,删除多余的回车符,再复制然后粘贴到终端中运行:

python3 examples/classify_image.py \

--model test_data/test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \

--labels test_data/test_data/inat_bird_labels.txt \

--input test_data/test_data/parrot.jpg

0006_MPW7_TPU_31.jpg

联系我们

4f7e81daf8791971.jpg 79c020da7ad0af9b.jpg 2851e01a0549e6f7.gif 0003_bb.jpg 0005_qq.jpg QQ:8204136

邮件:mcuzone@vip.qq.com

电话:13957118045

如本页面有任何疏漏、错误或者侵权,请通过上述途径联系我们,谢谢!

Copyright 2004-2024 野芯科技