拿到板子,当然上手就要试一试“HelloWorld”呀。在开始“Hello World”之前,让我们了解一下ZYNQ Ultrascale+ MPSoC芯片系列的开发流程。 ZYNQ Ultrascale+MPSoC系列芯片集成了ARM四核Cortex-A53,双核Cortex-R5,Mali-400 MP2图形处理单元和Kintex Ultrascale+FGPA。也就是说一块芯片上既有四个A53核心,两个R5核心,Mali-400 MP2图形计算与FPGA。但是它仍然是一块FPGA,因为这上面的所有功能都需要vivado软件进行配置才能使用。对PS部分,4个A53、2个R5与Mali-400 MP2图形处理器,我们可以根据我们项目的需求进行使用,比如项目中既需要实时性,又需要处理多媒体的情况下,就可以这6个核心一起使用。4核心A53跑linux,负责显示,网络,人机交互,Mali-400 MP2负责跑图形加速计算、图像处理等任务;R5跑实时嵌入式操作系统用于工业设备的控制,如驱动电机,读取传感器数值等。对于PL部分,FPGA用于跑接口与加速计算,例如PCIe接口、图形计算加速、MIPI-CSI摄像头、扩展通信接口等。 大致了解了ZYNQ Ultrascale+MPSoC 平台,实在是太强了,基本塞下了MCU,MPU,GPU与FPGA,将可编程电子电路系统全都塞进这个23mmX23mmX3.12mm的小芯片中,真的很惊艳。对于一个这么复杂的编程系统,我们应该如何下手呢。别着急,其实我们只要把它看成是ARM芯片与FPGA芯片结合就好。ARM部分开发ARM部分的软件程序、调试;FPGA部分做FPGA硬件电路的逻辑实现、综合、约束。那我们就赶紧动手,开始第一个工程实验吧。 实验目的: 1.熟悉vivado 2019.1软件的操作。 2.熟悉ZYNQ Ultrascale+ MPSoC 平台芯片的开发流程。 3.使用FZ3开发板实现串口打印“Hello World!” 实验要求: 使用FZ3板卡实现串口打印“Hello World”。 实验过程: 1.使用vivado软件新建工程。
首先打开vivado2019.1,进入软件。 Vivado设计得十分简洁,上方的导航栏只有File,Flow,Tools,Window,Help五个菜单。主窗体有三块。 快速开始,可以用于创建工程、打开工程、打开样例工程。 任务,可以用于管理IP,烧录FPGA程序,查看Tcl脚本商店。 学习中心,用于打开官方文档与教程
(1)点击create project或File的下拉菜单中Project->NEW. 输入工程名称,我这里使用Hello_World,并指定工程路径(不要有中文) 选择RTL工程,先不要添加指定源文件。 选择芯片型号,我们使用的芯片是xczu3eg-sfvc784-1-e,属于ZYNQ UltraScale+ MPSoC系列。 (2)下面我们来了解一下开发环境。 2.添加Cortex-A53核心到IP设计图中,并进行配置。
我们的任务是通过PS部分串口打印“hello world”,因此只使用了PS部分,通过添加PS部分并配置即可。首先点击Create Block Design。 指定块设计名称,我这里默认名称 在代码编辑区窗口添加Zynq UltraScale MPSoC的IP。 双击生成的ZYNQ ip并进行配置。 点击preset按钮->applyconfigration,使用文件对IP核进行配置。这里我们使用米尔官方资料中提供的配置文件(myir.tcl)。 使用该文件后,我们还要对配置进行一些裁剪。 将上面的IP进行修改,其原因是我们这个工程中没有使用到这些功能,参与配置可能会出现意想不到的错误。
然后生成output products。 随后,我们再生成顶层文件 3.生成bitstream,并导入SDK中。 经过2分钟时间的等待,终于成功生成bitstreram。 关闭上方窗口,输出hardware。 4.创建SDK软件工程,使用Hello World工程样例。 首先点击File->launchSDK。
注意:这里使用的vivado版本为2019.1,如果使用了更高版本的vivado,请在Tools菜单栏下选择launch SDK。 出现SDK启动图案。 进入Xilinx SDK软件界面,下面是xilinx SDK软件界面介绍。
我们要创建一个样例工程。
点击File->New->Application Project 输入工程名称,并配置BSP。 使用hello-world工程样例,点击finish。
5.编译工程,将生成的文件导入板卡中。
工程会自动进行编译。 编译后,为了可以烧录到FZ3板卡上,这里有两种方法。一种是通过SD卡启动板卡,第二种是使用xilinx下载器烧录到QSPI Flash中启动。由于手头没有xilinx下载器,所以这里选择第一种方法运行我们编译的程序。 这里,我们还需要新建一个FSBL工程。FSBL,全称是First Stage Bootloader,是Zynq Ultrascale+ MPSoC系列芯片的启动配置FPGA的bootloader,它用于配置FPGA,加载操作系统镜像,它支持多个分区,每个分区可以有自己的代码镜像与bit流。它用作引导U-Boot。使用SD卡跑我们SDK工程的程序,就需要把这个FSBL工程编译,并插入到当前Hello-World工程中,才可以顺利运行Hello-World。
和刚才创建Hello-World工程一样,创建FSBL工程。 填写工程名:fsbl,并配置工程。 选择Zynq MP FSBL样例工程,finish。
工程会自动编译。 编译完成后,我们要进行最后的操作,创建BOOT.bin启动文件。 右键单击hello-world工程,点击Create Boot Image。 点击添加按钮。 分区类型选择pmu,并选择pmufw.elf文件,文件由米尔官方工程提供。 把刚才的分区调整到第二位置,并点击Create Image。 在Hello_World工程下bootimage文件夹中生成BOOT.bin启动文件。将这个启动文件复制到FAT32分区的SD卡中即可。 6.观察现象。
设置串口波特率115200,开发板上电。
|