## 1.准备物品

**Ultra96V2**开发板x1

![在这里插入图片描述](https://img-blog.csdnimg.cn/3de804bc19bb46049e4340c9f84e8da4.jpg?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_30)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/7e818811829041d5889a1106bc92d063.png)

32GB **SD卡**以及读卡器 x1

WiFi

## 2.烧写镜像

点击[PYNQ网站](http://www.pynq.io/board.html)并下载对应的镜像文件,这里我下载的版本是V2.6。

![在这里插入图片描述](https://img-blog.csdnimg.cn/51c5ff51e8c841498522c91f2c28f1b0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_20,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/3babf6b5b518433ba1f40c5f35b8f3e7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_30)

在将读卡器插入电脑后,可以**先对SD卡进行一次格式化**,然后打开上面的软件,依次选择对应的磁盘,对应的镜像,然后点击写入,烧录时间大概5到10分钟左右,烧录结束后取下读卡器,**将SD卡插入到开发板中**。

## 3.运行jupyter

用microB线连接开发板以及电脑,插上开发板的电源,并按开发板的**SW4按键**打开开发板。接下里需要使用串口工具来连接开发板,串口工具比较多,我使用的是[MobaXterm](https://mobaxterm.mobatek.net/)。

![在这里插入图片描述](https://img-blog.csdnimg.cn/063814e5a0034c318e7c993e7aacdc03.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_20,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_70)

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

![在这里插入图片描述](https://img-blog.csdnimg.cn/a1a84b32fcc44f79928863421a968fc0.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_30)

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

```bash

ifconfig

```

![在这里插入图片描述](https://img-blog.csdnimg.cn/046b69660e9044ed826aa6d1fbaddf6c.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_20,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_70)

用浏览器输入网址

```bash

192.168.3.1

```

即可以打开jupyter文件

![在这里插入图片描述](https://img-blog.csdnimg.cn/4aebbaf7df2f4970a5962933f7055a5e.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_30)

## 4.安装dpu-pynq

因为需要使用**vitis-a**i导出来的**xmodel**文件,这里配置了dpu-pynq来调用dpu。

首先保证你的开发板能够连接到网络,在**jupyter的common/wifi.ipynb**中已经提供了网络连接的代码。SSID中输入wifi的名称,password中输入wifi的密码。

![在这里插入图片描述](https://img-blog.csdnimg.cn/4ef542259b524d69878c89c6085a57f7.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_20,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3FxXzM4ODYzODQy,size_16,color_FFFFFF,t_70)

在[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数据集的方法]

```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)

```