问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 297 人浏览分享

开启左侧

01Vitis Soc开发入门

[复制链接]
297 0
AMD-FPGA课程
AMD课程: 05-典型入门实验 » 第一个ZYNQ实验
1.1概述
本实验是我们开始XILINX ZYNQ SOC的第一个入门demo。
实验目的:
1:掌握基于vitis-vivado创建SOC工程
2:掌握基于图形化Block Design的设计方法
3:掌握ZYNQ IP核的调用
4:掌握ZYNQ IP核的参数配置方法
5:掌握生成一个基于ZYNQ IP核的最小系统方法
6:导出硬件参数xsa文件
7:使用vitis-sdk创建sdk base工程
8:使用vitis-sdk创建自带sdk helloworld APP工程
10:使用vitis-sdk创建以太网测试程序



1.2系统框图
本方案构建基于ZYNQ IP核的最小系统,包含了PS DDR、FLASH、EMMC、TF-Card、Uart、USB、ETH以太网
image.jpg

1.3搭建SOC系统工程
Vitis-vivado和其他版本的vivado使用方法基本一致,只有最后导出的xsa文件是vitis才有的文件格式。对于初学者,请认真学习以下每一个步骤。
1.3.1创建soc_prj工程
1:创建工程路径
米联客新版本资料里面SOC工程一级目录一般包含3个文件夹,用于管理各类文件:
soc_hw:文件夹放system.xsa文件
soc_prj:文件夹放FPGA工程
soc_sdk:文件夹放SDK相关的开发文件
image.jpg
2:启动vivado
image.jpg
image.jpg
3:创建soc硬件工程
由于已经创建好了路径,所以不需要让软件再次创建以工程命名的路径
image.jpg
image.jpg
这一步选择芯片型号,一定要选择和自己开发板相匹配的型号(本实验使用的开发平台是米联客7x对应的芯片型号为xc7z020clg400-2)
image.jpg
image.jpg
image.jpg

1.3.2创建BD图形化模块
1:创建空的BD
image.jpg
米联客的BD统一命名为system
image.jpg
单击“+”号,双击ZYNQ7 Processing System
image.jpg
image.jpg
2:配置ZYNQ IP的参数
双击IP对IP的各个功能参数进行配置,这个配置必须参考硬件原理图完成,所以FPGA或者SOC工程师必须具备一定的硬件分析能力,可以阅读原理图,实现对硬件资料在软件上的定义分配。
image.jpg
这里我们使用已经提供的配置文件对参数进行位置。
image.jpg
在本demo配套工程的uisrc/06/doc路径下,提供了配置参数
image.jpg
等待配置完成即可
image.jpg

1.3.3ZYNQ IP的配置参数
  以上通过已经提供的配置参数,快速完成了IP的基本配置。这个过程在后续的demo中不再重复,后续demo会对用到的资源说明分析,或对IP部分功能重新配置。以下我们针对主要的外设资源对IP的配置说明。
1:MIO的BANK电压
MZ7020核心板的MIO BANK0对应核心板硬件原理图上的BANK500设置3.3V, MIO BANK1对应核心板硬件原理图上的BANK501设置1.8V
image.jpg
2:MIO接口功能定义
2-1:QSPI-FLASH接口
image.jpg
2-2:PS以太网接口
image.jpg
2-3:USB接口
image.jpg
2-4:SDIO0-SD卡
image.jpg
2-5:SDIO1-EMMC
image.jpg
2-6:串口1
image.jpg
2-7:剩余IO和以太网复位IO
image.jpg
2-8:DDR配置
image.jpg
2-9:时钟配置
image.jpg
相关PL的设置本demo没有用到,后面相关demo用到的时候再进行配置


1.3.4ZYNQ IP的配置参数保存
对于配置好的参数可以保存下来,方便后面新建工程使用,减少重复步骤
image.jpg
image.jpg


1.3.5自动连线
完成配置后,可以自动连线,让软件自动引出接口
image.jpg
image.jpg
这里需要注意:VIVADO的自动化连线可以完成一些简单的信号连线设计,前提是开发者必须知道原理,否则自动连线可能会导致错误。


1.3.6检验BD工程
通过Validate Design可以快速初步排查BD工程是否有错误
image.jpg
image.jpg


1.3.7地址空间分配
由于没有使用任何PL资源,本demo中不需要分配地址
image.jpg
1.3.8编译并导出平台文件
1:单击Block文件à右键àGenerate the Output ProductsàGlobalàGenerate。
image.jpg
image.jpg
image.jpg
image.jpg
2:单击Block文件à右键à Create a HDL wrapper(生成HDL顶层文件)àLet vivado manager wrapper and auto-update(自动更新)。
右击system.bd创建Create HDL Wrapper
image.jpg
image.jpg
该文件就是一个FPGA Verilog文件。而BD图形化工程,VIVADO把BD封装成了一个模块。顶层的verilog文件通过模块接口就可以调用BD图形代码了。
image.jpg
image.jpg
3:添加fpga_pin.xdc文件
该文件主要是对bit设置压缩,减少bit的大小
image.jpg
这个文件用户可以自己创建,也可以选择uisrc/04_pin路径下已经提供的fpga_pin.xdc文件
image.jpg
image.jpg
4:生成Bit文件。
image.jpg
单击Cancel
image.jpg
5:导出到硬件: FileàExport HardwareàInclude bitstream
image.jpg
image.jpg
image.jpg
image.jpg
image.jpg
6:导出完成后,对应工程路径的soc_hw路径下有硬件平台文件:system_wrapper.xsa的文件。根据硬件平台文件system_wrapper.xsa来创建需要Platform平台。
image.jpg


1.4搭建Vitis-sdk工程
创建soc_base sdk platform和APP工程。


1.4.1创建SDK Platform工程
启动Vitis-Sdk
image.jpg
设置好路径
image.jpg
米联客资料中的路径规范如下图:
soc_prj里面是基于SOC的硬件工程源码
soc_hw里面是xsa格式文件,soc_prj编译会导出system_wrapper.xsa到这个文件
soc_sdk里面是裸机的sdk工程,sdk工程创建依赖soc_hw中的system_wrapper.xsa
image.jpg
单击Create Platform Project 创建基于开发平台的工程
image.jpg
image.jpg
添加之前创建的system_wrapper.xsa文件
image.jpg
image.jpg
创建完成后
image.jpg
LWIP库的修改:
1:ZU系以及米联客7x开发板列网口芯片是工业级RTL8211FDI(商业级为RTL8211FD),由于默认的驱动不支持,需要手动自己修改库文件。我们这里已经提供了修改好的库,解压到vivado的安装路径下的对于路径下:
image.jpg
image.jpg
修改好后,需要关闭vitis-sdk然后重新打开sdk,否则无法识别修改的库
2:为了创建lwip工程需要先对zu_base中的board support package简称bsp设置lwip库的支持
image.jpg
3:对lwip库参数修改以达到最佳性能。
本例程使用 RAW API,即函数调用不依赖操作系统。传输效率也比 SOCKET API 高,(具体可参考 xapp1026)。 将 use_axieth_on_zynq 和 use_emaclite_on_zynq 设为 0。如下图所示。
image.jpg
修改 lwip_memory_options 设置,将 mem_size,memp_n_pbuf,mem_n_tcp_pcb,memp_n_tcp_seg 这 4 个参数 值设大,这样会提高 TCP 传输效率。如下图所示。
image.jpg
修改 pbuf_options 设置,将 pbuf_pool_size 设大,增加可用的 pbuf 数量,这样同样会提高 TCP 传输效率。如下 图所示。
image.jpg
修改 tcp_options 设置,将 tcp_snd_buf,tcp_wnd 参数设大,这样同样会提高 TCP 传输效率。如下图所示。
image.jpg
修改 temac_adapter_options 设置,将 n_rx_descriptors 和 n_tx_descriptors 参数设大。这样可以提高 zynq 内部 emac dma 的数据迁移效率,同样能提高 TCP 传输效率。如下图所示。
image.jpg
最后,右击soc_base完成编译
image.jpg
image.jpg



1.4.2创建hello_world APP工程

image.jpg
image.jpg
image.jpg
image.jpg
image.jpg
可以看到,工程模板包括:
1-空的C或者C++工程
2-Hello World测试工程
3-lwip echo Server工程
4-lwip TCP Perf Client TCP 性能测试
等等….
我们开发的SDK应用方案大多都基于XILINX SDK模板来实现,本方案通过模板创建要给HelloWorld工程
image.jpg
image.jpg
第一种编译方法,右击编译只产生elf文件
image.jpg
image.jpg
第二种编译方法,右击编译可以产生elf文件,和BOOT.BIN文件,但是时间较长一些
image.jpg
image.jpg

1.4.3以太网测试1:创建lwip echo APP工程
用同样的方法创建lwip_echo_server
image.jpg
2:创建lwip_tcp_perf_client APP工程
image.jpg
1.5程序分析
image.jpg
hello_word APP就是简单通过串口输出一些字符信息,本文重点演示软件使用方法,程序代码不做分析,后面SDK高级篇到以太网部分,用到相关功能再分析代码。

1.6方案演示

1.6.1硬件准备
       本实验需要用到JTAG下载器、USB转串口外设,另外需要把核心板上的模式开关设置到JTAG模式,即ON ON ON(注意新版本的米联客F3P,支持JTAG模式,对于老版本的核心板,JTAG调试的时候一定要拔掉TF卡,并且设置模式开关为OFF OFF)
image.jpg


1.6.2hello_world实验结果
为了观察实现结果,需要打开串口
image.jpg
image.jpg
如果不清楚串口号的,可以查看下设备管理器,如果发现没装串口驱动的安装上驱动
image.jpg
选中hello_world APP并且右击,然后单击Debug As->Debug Configuration
image.jpg
双击Single Application Debug,之后选Debug
image.jpg
程序运行停在debug入口,单击 image.jpg 运行
image.jpg
输出打印结果
image.jpg

1.6.3以太网测试1:lwip_echo_server APP实验结果
给开发板通电,连接网口, 并且根据以下步骤,设置电脑端IP地址
image.jpg
image.jpg
image.jpg
image.jpg
调试程序
image.jpg
image.jpg
打开网络调试助手,并且设置如下
image.jpg
单击发送数据
image.jpg
2:lwip_tcp_perf_server APP实验结果
给开发板通电,连接网口, 并且根据以下步骤,设置电脑端IP地址
image.jpg
image.jpg
image.jpg
image.jpg
打开网络调试助手,设置接收数据不显示,否则速度太快会卡死
image.jpg
调试程序
image.jpg
image.jpg
image.jpg





您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

0

关注

10

粉丝

90

主题
精彩推荐
热门资讯
    网友晒图
      图文推荐
        
        • 微信公众平台

        • 扫描访问手机版