zynq板zedboard+vitis设计 (一) hello world实验

前言

研究生跟着导师做项目,买了两块zedboard板子,我拿到一个,于是从零开始学zynq相关知识以及vivado的使用,经过两三个月的研究,终于开始入门了。开始写下这系列博客,一是整理记录自己所学,二是希望能够和大家进行交流探讨,共同进步。

开发板就是zedboard,vivado用的是2019.2。

本篇主要分三部分,首先我会讲一下自己了解的SDK与visit之间区别,然后是zedboard板子的一些主要的配置,最后是用zedboard+visit完成hello world实验的示例。

博客的书写主要参考了正点原子的启明星系列教程文档。

新人向文章,内容较简单

1.vitis与SDK的一些区别

vivado自2019版本开始,将原有的SDK替换成了vitis,乍一看变化很大,但其实使用几乎没有变化

首先,最直观的是SDK版本,在使用vivado建立好工程并导出hardware后,打开SDK就自动加载了platform,但vitis需要自己先手动添加platform然后再建立工程(具体操作见本文第三部分)。

其次,SDK导出的hardware的后缀是.hdf,而使用vitis生产的hardware后缀则是.xsa。后面如果用petalinux建立工程时,需要注意这点变化。

最后,是软件内一些文件位置和名称的变化。比如SDK中xilinx官方提供的模板位于system.mss文件中,而vitis中,可以在platform.spr中board support package文件内找到模板。

 这是目前我能想到的第一次使用vitis可能需要注意的与SDK的区别,其他视情况补充。

2.zedboard板需要了解的配置信息

首先是SOC型号:XC7Z020-CLG484-1

然后是DDR3型号:MT41J128M16HA-15E

最后是一些常用的引脚:

UART:MIO48(D11)、MIO49(C14)

LD0-7分别对应T22、T21、U22、U21、V22、W22、U19、U14

 BTNU、BTNL、 BTNC、BTNR、BTND分别对应T18、N15、P16、R18、R16

 以上就是zedboard主要需要注意的一些配置信息,即在将不同的zynq板实验移植到zedboard上时,一般都需要更改的地方,其他细节可以参照官网的原理图。

3.基于zedboard+vitis的hello world实验

vivado建立工程

点击create project

 编辑名称和工程路径,注意勾选create project subdirectory,方便后续管理。

鼠标放在一些选项上会有中文注释

 勾选do not specify source at this time,可以之后视情况添加设计文件和约束文件

选择SOC型号,这里推荐下面的第二种方法,即直接在boards页面搜索并选择zedboard 

 因为zedboard是xilinx公司和其他公司联合出的板子,所以可以直接在vivado内找到板子的信息,可以方便的配置板子参数,后面在block design内设计时,也有预设可以选择

点击create block design

 

 点击上方+号搜索并添加zynq

 双击zynq核进行编辑,此时可以选择presets内的zedboard,这样zynq就会被完全设置成zedboard的默认配置,自己只需根据需要另行添加端口和外设即可。

不过采用presets时,会有一些可能用不上的接口,有些臃肿,此时可以选择自行根据zedboard配置信息配置DDR、UART等。个人推荐直接使用presets,会方便很多。

本实验采用最小系统即可进行,无需另外配置

需要注意的是在选择presets后,需要如图连接FCLK_CLK0与M_AXI_GP0_ACLK,否则会报错

 

 点击上方run block automation

右击bd文件,并选择generate output products

再右击选择create HDL wrapper

点击generate bitstream生成比特流

 注意:比特流是对PL部分的配置信息,本实验没有对PL部分进行配置,其实不用生产比特流,但是通常来说这几步是做vitis实验的必要的几步,为了流程的完整性,本文提到此步骤

 选择export hardware,然后勾选include bitstream

注意:原理同上,其实本实验不需要勾选include bitstream

vitis部分

打开vitis

 使用SDK时,此时这里便会有platform信息,但是vitis需要自己添加

 这里选择application project和platform project都可以,platform project只是添加platform,application project可以同时添加platform并建立工程,推荐选择application project

 在为工程命名后开始选择platform,此时选择create a new platform from hardware,然后点击左上角加号,在导出hardware后,工程文件内会有对应的.xsa文件,具体路径见图所示,选择.xsa文件。

 添加好自己建立的platform后选择并继续

 这里直接选用软件给的hello world模板

 src目录下自动建立的helloworld.c文件就是main函数文件

blog_1_system就是工程文件,blog_1_wrapper是platform,同一个platform可以建立多个工程文件,根据工程文件后信息,可以了解工程文件是建立在那个platform上的。

代码如下

#include <stdio.h>
#include "platform.h"
#include "xil_printf.h"


int main()
{
    init_platform();

    print("Hello World\n\r");

    cleanup_platform();
    return 0;
}

 其中init_platform函数的作用是使能caches和初始化uart,cleanup_platform函数作用是取消caches使能,这两个是非必须的。

连接好开发板后,点击右下角terminal内的open a terminal,进行连接

 若是右下角没有terminal,可如图进行搜索打开

 

 然后右击工程文件并选择launch on hardware,程序加载完成后terminal内就会输出hello world,实验完成。

结语

新人第一次发文,无论是文章有问题还是技术有问题,欢迎批评指正。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值