前言
研究生跟着导师做项目,买了两块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,实验完成。文章来源:https://www.toymoban.com/news/detail-818990.html
结语
新人第一次发文,无论是文章有问题还是技术有问题,欢迎批评指正。文章来源地址https://www.toymoban.com/news/detail-818990.html
到了这里,关于zynq板zedboard+vitis设计 (一) hello world实验的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!