0023 MP2.5GTPU(M.2 E):修订间差异
无编辑摘要 |
|||
第236行: | 第236行: | ||
== '''七、树莓派OS运行TPU模组''' == | == '''七、树莓派OS运行TPU模组''' == | ||
本章介绍如何在树莓派OS运行TPU模组。 | |||
本章的操作步骤同时适用于系统从TF卡启动和从SSD硬盘启动。 | |||
=== 4.1 TPU模组的使用 === | |||
==== 4.1.1 配置config.txt ==== | |||
系统启动后打开树莓派终端输入命令: | |||
<code>sudo nano /boot/firmware/config.txt</code> | |||
或者: | |||
<code>sudo mousepad /boot/firmware/config.txt</code> | |||
在文件最下方添加以下代码: | |||
<code>dtparam=pciex1</code> | |||
<code>kernel=kernel8.img</code> | |||
<code>dtoverlay=pineboards-hat-ai</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_01.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_02.jpg | |||
代码添加成功后,保存并重启系统: | |||
<code>sudo reboot</code> | |||
==== 4.1.2 确认软件环境 ==== | |||
系统重启后打开打开树莓派终端输入命令: | |||
<code>uname -r</code> | |||
确保内核版本大于4.18后输入: | |||
<code>lsmod | grep apex</code> | |||
确保没有输出则可以开始安装TPU驱动。 | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_03.jpg | |||
==== 4.1.3 安装必要软件 ==== | |||
确保网络能连通外网(需自备方法)后,添加Google TPU软件库: | |||
<code>echo "deb <nowiki>https://packages.cloud.google.com/apt</nowiki> coral-edgetpu-stable main" | sudo tee /etc/apt/sources.list.d/coral-edgetpu.list</code> | |||
<code>curl <nowiki>https://packages.cloud.google.com/apt/doc/apt-key.gpg</nowiki> | sudo apt-key add -</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_04.jpg | |||
添加完成后更新软件列表: | |||
<code>sudo apt-get update</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_06.jpg | |||
更新完成后安装必要的软件: | |||
<code>sudo apt-get install cmake libedgetpu1-std devscripts debhelper dkms dh-dkms</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_07.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_08.jpg | |||
==== 4.1.4 安装Gasket Driver ==== | |||
依次输入以下命令安装Gasket Driver: | |||
<code>git clone <nowiki>https://github.com/google/gasket-driver.git</nowiki></code> | |||
<code>cd gasket-driver</code> | |||
<code>sudo debuild -us -uc -tc -b</code> | |||
<code>cd ..</code> | |||
<code>sudo dpkg -i gasket-dkms_1.0-18_all.deb</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_09.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_10.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_11.jpg | |||
安装完成后输入以下命令确保驱动以及软件安装成功: | |||
<code>sudo apt-get install gasket-dkms libedgetpu1-std</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_12.jpg | |||
接下来添加udev rule去获得设备操作权限: | |||
<code>sudo sh -c "echo 'SUBSYSTEM==\"apex\", MODE=\"0660\", GROUP=\"apex\"' >> /etc/udev/rules.d/65-apex.rules"</code> | |||
添加用户到apex: | |||
<code>sudo groupadd apex</code> | |||
<code>sudo adduser $USER apex</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_13.jpg | |||
设置完成后重启系统: | |||
<code>sudo reboot</code> | |||
==== 4.1.5 验证模块检测以及驱动安装 ==== | |||
系统启动后验证模块检测以及驱动安装: | |||
<code>lspci -nn | grep 089a</code> | |||
这里需要看到TPU模块,如下图所示(具体参数显示以实际为准): | |||
<code>ls /dev/apex_0</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_14.jpg | |||
这里插了一个TPU模块,因此可以看到一个TPU模块。 | |||
输入<code>sudo lspci -v</code>可以看到驱动加载,其中必须包括TPU驱动,如果插了SSD硬盘,还需要包括SSD模块,如下图所示: | |||
http://www.mcuzone.com/wiki/0013_MPTPU_M/0013_MPTPU_M_01.jpg | |||
==== 4.1.6 代码运行环境配置 ==== | |||
Google TPU模块代码运行需要在Python3.6-3.9之间,而树莓派最新系统的Python版本为3.11,因此我们需要使用Pyenv来下载老版本Python。 | |||
首先进行依赖安装: | |||
<code>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</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_17.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_18.jpg | |||
依赖安装完成后进行pyenv的安装: | |||
<code>curl <nowiki>https://pyenv.run</nowiki> | bash</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_19.jpg | |||
输入: | |||
<code>sudo nano ~/.bashrc</code> | |||
或者: | |||
<code>sudo mousepad ~/.bashrc</code> | |||
在文件最下面添加以下代码: | |||
<code>export PYENV_ROOT="$HOME/.pyenv"</code> | |||
<code><nowiki>[[ -d $PYENV_ROOT/bin ]]</nowiki> && export PATH="$PYENV_ROOT/bin:$PATH"</code> | |||
<code>eval "$(pyenv init -)"</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_36.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_21.jpg | |||
添加完成后保存退出并重新加载shell: | |||
<code>exec "$SHELL"</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_22.jpg | |||
接下来我们可以利用pyenv安装老系统版本Python: | |||
<code>pyenv install -v 3.8.8</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_23.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_24.jpg | |||
等待安装成功后我们将系统Python版本更改为3.8.8: | |||
<code>pyenv global 3.8.8</code> | |||
更改成功后可以查看当前Python使用版本为3.8.8: | |||
<code>pyenv versions</code> | |||
<code>python3 -V</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_25.jpg | |||
==== 4.1.7 下载代码和运行模组 ==== | |||
依次输入以下命令进行下载: | |||
<code>mkdir coral && cd coral</code> | |||
<code>git clone <nowiki>https://github.com/google-coral/pycoral.git</nowiki></code> | |||
<code>cd pycoral</code> | |||
<code>cd test_data</code> | |||
<code>git clone <nowiki>https://github.com/google-coral/test_data.git</nowiki></code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_26.jpg | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_27.jpg | |||
接下来下载代码运行模组 | |||
<code>pip3 install numpy</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_28.jpg | |||
<code>pip3 install Pillow</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_29.jpg | |||
<code>pip3 install --extra-index-url <nowiki>https://google-coral.github.io/py-repo/</nowiki> pycoral</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_30.jpg | |||
==== 4.1.8 运行代码 ==== | |||
模组下载完成后返回 coral/pycoral路径下 | |||
<code>cd ..</code> | |||
输入以下代码进行代码运行 | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_39.jpg | |||
注意:我们可以复制下列代码,但是请先粘贴到文本软件中,按照上图的格式,删除多余的回车符,再复制然后粘贴到终端中运行: | |||
<code>python3 examples/classify_image.py \</code> | |||
<code>--model test_data/test_data/mobilenet_v2_1.0_224_inat_bird_quant_edgetpu.tflite \</code> | |||
<code>--labels test_data/test_data/inat_bird_labels.txt \</code> | |||
<code>--input test_data/test_data/parrot.jpg</code> | |||
http://www.mcuzone.com/wiki/0006_MPW7_TPU/0006_MPW7_TPU_31.jpg | |||
{{联系我们_图标}} | {{联系我们_图标}} |
2024年9月5日 (四) 08:36的版本
关键词
树莓派5、PCIe、Switch、RL8125、2.5Gbps、以太网、iperf3测速、TPU、DTPU、驱动安装、操作演示、AI、google、Coral
一、简介
树莓派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的操作使用;
三、系统烧写及设置
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
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:
使用中国科技大学测速网站,对2.5G网口连外网(200M宽带)测速,结果如下:
注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。
4.2 2.5G内网测试
安装网络测速工具iperf3:
sudo apt install iperf3
利用iperf3,通过2.5G路由器,在树莓派OS与PC之间进行测速。
eth1测速结果如下:
当树莓派OS作为client时,速度大约为2.35Gbps:
当树莓派OS作为server时,速度大约为1.82Gbps:
注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。
五、Ubuntu系统下使用演示
5.1 安装Ubuntu系统下RTL8125驱动
MP2.5GTPU扩展板上的2.5G网口在Ubuntu系统下不能即插即用,需要安装RTL8125驱动。
因为树莓派5的无线网卡模块在Ubuntu系统下是即插即用的,所以我们需要使用无线网卡连接无线网络:
也可以使用网线连接树莓派5上的原生网口。
Ubuntu系统默认不安装ifconfig工具,所以需要手动安装:
sudo apt install net-tools
输入ifconfig -a
,可见此时并没有显示2.5G网卡:
接下来我们开始安装RTL8125驱动。
首先需要更新系统:
sudo apt-get update
接着准备编译环境:
sudo apt-get install --reinstall linux-headers-$(uname -r) linux-headers-generic build-essential dkms
然后安装驱动:
sudo apt-get install r8125-dkms
按提示安装即可:
安装完成后输入:
sudo modprobe r8125
输入ifconfig -a
就可以看到一个enxxx的网卡接口,这样就安装完毕2.5G网卡驱动:
5.2 Internet网络测试
将2.5G网口连外网(200M宽带)测速,结果如下:
注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。
如果使用Ubuntu内置的Firefox浏览器时运行速度很慢或者经常无响应,建议安装轻量浏览器Falkon:
sudo apt install falkon
5.3 2.5G内网测试
安装网络测速软件iperf3:
sudo apt install iperf3
利用iperf3,在Ubuntu系统与PC之间进行测速。
测速结果如下:
当Ubuntu系统作为client时,速度大约为2.35Gbps:
当Ubuntu系统作为server时,速度大约为1.85Gbps:
注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。
六、OpenWrt系统操作演示
6.1 概述
MP2.5G扩展板在OpenWrt系统下,默认树莓派上的原生千兆网口为LAN口,我们可以把扩展板上的2.5G网口作为LAN口,而把树莓派5上的原生网口作为WAN口,这样就能利用2.5G网口在内网高速传输文件。
6.2 准备工作
本文档使用的OpenWrt系统为:openwrt-bcm27xx-bcm2712-rpi-5-squashfs-sysupgrade-linux-6.1.100-20240805.img.gz
烧写OpenWrt系统并上电启动后,我们将网线一端插在树莓派5的原生网口上,另一端插在PC上,待PC的网卡与树莓派5上的网口连接成功后,我们在Windows设置中找到网络和Internet,在以太网中打开连接的网络查看默认网关的IP地址,这个地址就是OpenWrt系统的后台配置页面地址,如图所示,本文测试的地址为192.168.198.1:
然后打开网页浏览器输入192.168.198.1进入OpenWrt系统。默认用户名为root
,默认密码为password
:
6.3 MP2.5G的2.5G网口的配置和应用
进入“系统 - TTYD终端”,输入ifconfig -a命令,可以看到有eth0和eth1两个网口,其中eth0为树莓派5的原生网口,eth1为扩展板的2.5G网口:
我们使用的宽带一般不会超过千兆,为了获得更好的内网性能,建议将树莓派5的原生千兆配置从默认的LAN配置为WAN,然后把扩展板的2.5G以太网口配置为LAN。
点击“网络 - 接口”,点击“修改”:
在“物理设置”中,把eth1选中,然后点击“保存&应用”按钮:
将网线从树莓派5的原生网口中拔出,插入2.5G网口,待PC的网卡与2.5G网口连接成功后,我们刷新管理页面,点击“网络 - 接口”,点击“修改”:
在“物理设置”中,把eth0前面的勾去掉,然后点击“保存”按钮:
回到“网络 - 接口”,点击“添加新接口”:
接口名称设置为WAN,接口协议选择DHCP客户端,接口选择eth0后点击“提交”按钮:
在防火墙设置中选择WAN口后点击“保存&应用”按钮:
把连接Internet网络的网线插到树莓派5的原生网口上,然后回到“网络 - 接口”,稍等片刻,就可以看见新建的WAN接口获取了IP地址,这样PC就可以通过连接2.5G网口进入内网上网了,此时网络结构为千兆网口(接Internet)进,2.5G网口(接内网)出:
我们在树莓派5的USB3.0接口上插入一个支持USB3.0的U盘或者移动硬盘,参考下面链接,将这个U盘或者移动硬盘配置为共享目录:
设置完毕后,我们在资源管理器中输入\\192.168.198.1
(地址为扩展板的地址,视实际情况而不同),就能看到所映射的共享目录了:
将任意文件拖拽到桌面进行读取速度测试:
将任意文件拖拽到SSD进行写入速度测试:
注意:网络测速受网络环境和测试方法影响,速度请以实际为准,本测试仅供参考。
6.4 其它应用
树莓派5的无线模块可以作为无线AP,也可以作为无线WAN口,关于这些应用的实现,请参考下列链接:
七、树莓派OS运行TPU模组
本章介绍如何在树莓派OS运行TPU模组。
本章的操作步骤同时适用于系统从TF卡启动和从SSD硬盘启动。
4.1 TPU模组的使用
4.1.1 配置config.txt
系统启动后打开树莓派终端输入命令:
sudo nano /boot/firmware/config.txt
或者:
sudo mousepad /boot/firmware/config.txt
在文件最下方添加以下代码:
dtparam=pciex1
kernel=kernel8.img
dtoverlay=pineboards-hat-ai
代码添加成功后,保存并重启系统:
sudo reboot
4.1.2 确认软件环境
系统重启后打开打开树莓派终端输入命令:
uname -r
确保内核版本大于4.18后输入:
lsmod | grep apex
确保没有输出则可以开始安装TPU驱动。
4.1.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 -
添加完成后更新软件列表:
sudo apt-get update
更新完成后安装必要的软件:
sudo apt-get install cmake libedgetpu1-std devscripts debhelper dkms dh-dkms
4.1.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
安装完成后输入以下命令确保驱动以及软件安装成功:
sudo apt-get install gasket-dkms libedgetpu1-std
接下来添加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
设置完成后重启系统:
sudo reboot
4.1.5 验证模块检测以及驱动安装
系统启动后验证模块检测以及驱动安装:
lspci -nn | grep 089a
这里需要看到TPU模块,如下图所示(具体参数显示以实际为准):
ls /dev/apex_0
这里插了一个TPU模块,因此可以看到一个TPU模块。
输入sudo lspci -v
可以看到驱动加载,其中必须包括TPU驱动,如果插了SSD硬盘,还需要包括SSD模块,如下图所示:
4.1.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
依赖安装完成后进行pyenv的安装:
curl https://pyenv.run | bash
输入:
sudo nano ~/.bashrc
或者:
sudo mousepad ~/.bashrc
在文件最下面添加以下代码:
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
添加完成后保存退出并重新加载shell:
exec "$SHELL"
接下来我们可以利用pyenv安装老系统版本Python:
pyenv install -v 3.8.8
等待安装成功后我们将系统Python版本更改为3.8.8:
pyenv global 3.8.8
更改成功后可以查看当前Python使用版本为3.8.8:
pyenv versions
python3 -V
4.1.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
接下来下载代码运行模组
pip3 install numpy
pip3 install Pillow
pip3 install --extra-index-url https://google-coral.github.io/py-repo/ pycoral
4.1.8 运行代码
模组下载完成后返回 coral/pycoral路径下
cd ..
输入以下代码进行代码运行
注意:我们可以复制下列代码,但是请先粘贴到文本软件中,按照上图的格式,删除多余的回车符,再复制然后粘贴到终端中运行:
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
联系我们
电话:13957118045
如本页面有任何疏漏、错误或者侵权,请通过上述途径联系我们,谢谢!
Copyright 2004-2024 野芯科技