1.准备物品
Ultra96V2开发板x1
一根usb3.0A公对microB移动硬盘数据线x1
32GB SD卡以及读卡器 x1
WiFi
2.烧写镜像
点击PYNQ网站并下载对应的镜像文件,这里我下载的版本是V2.6。
烧写镜像需要使用工具,这里我使用的是Win32 Disk Imager
在将读卡器插入电脑后,可以先对SD卡进行一次格式化,然后打开上面的软件,依次选择对应的磁盘,对应的镜像,然后点击写入,烧录时间大概5到10分钟左右,烧录结束后取下读卡器,将SD卡插入到开发板中。
3.运行jupyter
用microB线连接开发板以及电脑,插上开发板的电源,并按开发板的SW4按键打开开发板。接下里需要使用串口工具来连接开发板,串口工具比较多,我使用的是MobaXterm。
按照图中所示配置一下串口,然后点开串口,出现下面的界面表示连接成功。
这里我们可以先看一下网络
ifconfig
用浏览器输入网址
192.168.3.1
即可以打开jupyter文件
4.安装dpu-pynq
因为需要使用vitis-ai导出来的xmodel文件,这里配置了dpu-pynq来调用dpu。
首先保证你的开发板能够连接到网络,在jupyter的common/wifi.ipynb中已经提供了网络连接的代码。SSID中输入wifi的名称,password中输入wifi的密码。
在dpu-pynq已经给出了具体的安装方法。
(1)在串口工具中输入su运行管理员权限,密码默认为xilinx。
(2)在窗口输入以下命令
git clone https://github.com/Xilinx/DPU-PYNQ.git
cd DPU-PYNQ/upgrade
make
Tips1 如果网络不好的话,可以先下好这个文件,再直接通过文件夹导入jupyter中。
再文件夹中输入下面的地址,弹出的界面中用户和密码均为xilinx
\\192.168.3.1\xilinx\jupyter_notebooks
Tips2 如果一直make失败,你可以先同步一下linux的时间,再多make几次,但是仍然有可能失败,建议在网络比较好的时间段进行,如果网络是不能连接上github,那肯定会失败的,实际make的时间大约在40分钟到1小时。
(3)在窗口输入以下命令
pip3 install pynq-dpu
cd $PYNQ_JUPYTER_NOTEBOOKS
pynq get-notebooks pynq-dpu -p .
下面的指令会在jupyter中生成一个pynq-dpu文件,里面有一些使用dpu的工程示例文件。
5.MNIST手写数字识别示例
打开dpu-pynq中的dpu_mnist_classifier文件,依次代码块运行,在实际运行时我在读取标签时一直报错,所以我先将对应的数据集下载下来,再进行处理。
这里参考的是 本地加载mnist数据集的方法
def load_mnist():
path = 'mnist.npz' #放置mnist.py的目录。注意斜杠
f = np.load(path)
x_train, y_train = f['x_train'], f['y_train']
x_test, y_test = f['x_test'], f['y_test']
f.close()
return (x_train, y_train), (x_test, y_test)
(train_data,train_label),(test_data,test_label) = load_mnist()
normalized_data = np.asarray(test_data/255, dtype=np.float32)
test_data = np.expand_dims(normalized_data, axis=3)
print(test_data.shape)
print(test_label.shape)
最后的结果如下图所示
到这里为止,我们配置好了pynq以及dpu-pynq,实际上新版本dpu-pynq不再支持以前的模型格式,只能使用xmodel文件。