本文档系列是我在实践将简单的神经网络LeNet-5实现到Xilinx 的zynq-7z035的FPGA上遇到的问题和解决方法。
背景:我们用vivado HLS对相关软件生成了相应的IP core,并且对相应的IP core进行系统集成,验证并生成了比特流,并且将其烧录到板子上。
目的:FPGA的运行需要片上ARM的控制,所以需要针对片上ARM编写的源码并且需要片上ARM执行源码。本部分介绍如何用服务器编译源码以及如何用FPGA的片上ARM执行编译好的程序。
编译过程:cd到目录——source env——gcc编译
程序运行过程:mkdir挂载目录——mount挂载u盘——cp把程序拷入常用目录——./运行程序
1.用服务器编译程序
为了更快编译,我们用服务器编译相应的单片机程序。
1.1背景知识
1.1.1 cd与mkdir指令
我们用linux在服务器上进行相应的编译,注意cd与cd /的区别,若想看到根目录下的文件可以用ls /
mkdir -p:创建目录
1.1.2.显示相应挂载信息
df:disk info;-h: human readable.
df -h:用kb以上单位显示,可读性高
df -a:显示所有文件系统
1.2 进入相应的目录
/lenz/luoqr/yolo/test
1.3 进行相应的环境设定
source setup_env.sh
1.4 编译程序
gcc -o 编译生成特定的输出文件 gcc -o <目标文件> <源文件>
1.5 file指令对相应的文件进行检查
1.6 编译好的文件拷入u盘,插到FPGA板子上
相应的linux指令
cd /lenz/luoqr/yolo/test
source setup_env.sh
arm-xilinx-gnueabi-gcc -o dmabench dmabench.c
file dmabench
2.导出程序到单片机运行
这一步我们要让FPGA的片上单片机找到u盘里面的可执行程序并且可以运行程序
2.1输入df -h查看相应挂载信息,我们程序在u盘里面,所以需要创建一个挂载,让系统能读取u盘里面的东西。
2.2创建目录mkdir -p /temp/usb
2.3把相应的usb挂载到目录上,然后打开挂在目录就是u盘里面的内容。注意这里u盘必须是fat32格式不是ntfs格式,不然系统不会读。然后我们就能打开相应的目录运行相应的程序。
2.5我们可以将程序拷入sd卡,这样就每次开关机不用每次都挂载u盘,并且直接打开相关的目录就能运行程序 cp /u/<program> /mnt/mmcblk1p1
2.6./程序就能直接运行
相应的linux指令
mkdir /u
mount /dev/sda1 /u
cd /u
cp /u/<program> /mnt/mmcblk1p1
cd /mnt/mmcblk1p1