Ultra96V2开发板配置pynq以及dpu-pynq
## 1.准备物品
**Ultra96V2**开发板x1

一根**usb3.0A公对microB移动硬盘数据线**x1

32GB **SD卡**以及读卡器 x1
WiFi
## 2.烧写镜像
点击[PYNQ网站](http://www.pynq.io/board.html)并下载对应的镜像文件,这里我下载的版本是V2.6。

烧写镜像需要使用工具,这里我使用的是[Win32 Disk Imager](https://win32diskimager.org/)

在将读卡器插入电脑后,可以**先对SD卡进行一次格式化**,然后打开上面的软件,依次选择对应的磁盘,对应的镜像,然后点击写入,烧录时间大概5到10分钟左右,烧录结束后取下读卡器,**将SD卡插入到开发板中**。
## 3.运行jupyter
用microB线连接开发板以及电脑,插上开发板的电源,并按开发板的**SW4按键**打开开发板。接下里需要使用串口工具来连接开发板,串口工具比较多,我使用的是[MobaXterm](https://mobaxterm.mobatek.net/)。

按照图中所示配置一下串口,然后点开串口,出现下面的界面表示连接成功。

这里我们可以先看一下网络
```bash
ifconfig
```

用浏览器输入网址
```bash
192.168.3.1
```
即可以打开jupyter文件

## 4.安装dpu-pynq
因为需要使用**vitis-a**i导出来的**xmodel**文件,这里配置了dpu-pynq来调用dpu。
首先保证你的开发板能够连接到网络,在**jupyter的common/wifi.ipynb**中已经提供了网络连接的代码。SSID中输入wifi的名称,password中输入wifi的密码。

在[dpu-pynq](https://github.com/Xilinx/DPU-PYNQ)已经给出了具体的安装方法。
(1)在串口工具中输入**su**运行管理员权限,密码默认为**xilinx**。
(2)在窗口输入以下命令
```bash
git clone https://github.com/Xilinx/DPU-PYNQ.git
cd DPU-PYNQ/upgrade
make
```
*Tips1* 如果网络不好的话,可以先下好这个文件,再直接通过文件夹导入jupyter中。
再文件夹中输入下面的地址,弹出的界面中用户和密码均为xilinx
```bash
\\192.168.3.1\xilinx\jupyter_notebooks
```
*Tips2* 如果一直make失败,你可以先同步一下linux的时间,再多make几次,但是仍然有可能失败,建议在网络比较好的时间段进行,如果网络是不能连接上github,那肯定会失败的,实际make的时间大约在40分钟到1小时。
(3)在窗口输入以下命令
```bash
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数据集的方法](https://blog.csdn.net/qq_37337494/article/details/102313480)
```python
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文件**。
浙公网安备 33010602011771号