问答 店铺
热搜: ZYNQ FPGA discuz

QQ登录

只需一步,快速开始

微信登录

微信扫码,快速开始

微信扫一扫 分享朋友圈

已有 237 人浏览分享

开启左侧

01 Vitis Soc 开发入门

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


1.2 系统框图
       本方案构建基于 ZYNQ MPSOC IP 核的最小系统,包含了 PS DDR、FLASH、EMMC、TF-Card、Uart、USB、ETH 以太网、NVMEDP 显示器接口(MiLianKe8x-2cg 作为学习入门级,不焊接 EMMC FLASH)。
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
        这一步选择芯片型号,一定要选择和自己开发板相匹配的型号(本实验使用的开发平台是 MiLlianKe8X-2CG 对应的芯片型号为 XCZU2CG-SFVC784-1E
       以下教程也同样适用于 MiLlianKe8X-3EG MiLlianKe8X-4EV,如果暂时 MiLlianKe8X-3EG MiLlianKe8X-4EV 没有提供配套源码,我们会给出从 MiLlianKe8X-2CG 如何升级的办法。
关于详细的硬件参数请阅读硬件手册。
image.jpg
image.jpg
image.jpg

1.3.2 创建 BD 图形化模块
1:创建空的 BD
image.jpg
米联客的 BD 统一命名为 system
image.jpg
单击“+”号,双击 ZYNQ UltraScale+ MPSOC
image.jpg
image.jpg

2:配置 ZYNQ IP 的参数
       双击 IP 对 IP 的各个功能参数进行配置,这个配置必须参考硬件原理图完成,所以 FPGA 或者 SOC 工程师必须具备一定的硬件分析能力,可以阅读原理图,实现对硬件资料在软件上的定义分配。
image.jpg
这里我们使用已经提供的配置文件对参数进行位置。
image.jpg
在本 demo 配套工程的 uisrc/06/doc 路径下,提供了配置参数
以下教程也同样适用于 MiLlianKe8X-3EG 和 MiLlianKe8X-4EV,如果暂时 MiLlianKe8X-3EG 和 MiLlianKe8X-4EV 没有提供配套源码,我们会给出从 MiLlianKe8X-2CG 如何升级的办法。
关于详细的硬件参数请阅读硬件手册。
对于 MiLlianKe8X-3EG 的文件名为:milianke8x3eg_zynq_cfg.tcl
对于 MiLlianKe8X-4EV 的文件名为:milianke8x4ev_zynq_cfg.tcl
image.jpg
等待配置完成即可
image.jpg

1.3.3ZYNQ MPSOC IP 的配置参数
以上通过已经提供的配置参数,快速完成了 IP 的基本配置。这个过程在后续的 demo 中不再重复,后续 demo会对用到的资源说明分析,或对 IP 部分功能重新配置。以下我们针对主要的外设资源对 IP 的配置说明。
1:时钟输入设置
PS 输入参考时钟 33.333333MHZ
红框内为 GTR 的参考时钟
image.jpg
2:DDR 参数设置
image.jpg
3:MIO 接口定义
Zynq MPSOC 的 4 个 MIO BANK 电压全部设置为 LVCMOS18(取决于硬件,米联客的 Zynq MPSOC MIO 都是 1.8V)

image.jpg
3-1:QSPI-FLASH 接口
image.jpg
3-2:SD0 接口
image.jpg
3-3:SD1 接口
image.jpg
3-4:CAN0 接口
image.jpg
3-5:CAN1 接口
image.jpg
3-6:IIC0 接口
image.jpg
3-7:PMU 接口
image.jpg
3-8:UART0 接口
image.jpg
3-9:PS 以太网接口
image.jpg
3-10:USB0 接口
image.jpg
4:TTC 和看门狗设置
image.jpg
5:GTR-功能设置
5-1USB3.0 GTR 设置
image.jpg
5-2:DP 显示器接口占用 GTR 设置
image.jpg
5-3:PCIE ROOT 配置
设置 PCIE 所占用的 GTR 通道,设置 PCIEX1 模式
image.jpg
勾选高级配置 PCIE 为 ROOT 模式
image.jpg
6:时钟输出设置
1-1:低功率时钟域设置
image.jpg
image.jpg
1-2:全功率时钟域设置
image.jpg
image.jpg
相关 PL 的设置本 demo 没有用到,后面相关 demo 用到的时候再进行配置

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

1.3.5 自动连线
ZYNQ MPSOC 配置完成后无需自动连线,保留该步骤是为了确保课程目录和 ZYNQ 一致性

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
      该文件就是一个 FPGAVerilog 文件。而 BD 图形化工程,VIVADO 把 BD 封装成了一个模块。顶层的 verilog 文件通过模块接口就可以调用 BD 图形代码了,ZYNQ 的调用相比,ZYNQ MPSOC 没有了 DDR 等内部信号接口,简洁了很多。
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系以及新ZYNQ开发板列网口芯片是工业级RTL8211FDI(商业级为RTL8211FD),由于默认的驱动不支持,需要手动自己修改库文件。我们这里已经提供了修改好的库,解压到vivado的安装路径下的对于路径下:

image.jpg
image.jpg
修改好后,需要关闭vitis-sdk然后重新打开sdk,否则无法识别修改的库
2:为了创建lwip工程需要先对soc_base中的board support package简称bsp设置lwip库的支持
image.jpg
3:对lwip库参数修改以达到最佳性能。
本例程使用 RAW API,即函数调用不依赖操作系统。传输效率也比 SOCKET API 高,(具体可参考 xapp1026)。 将 use_axieth_on_zynq 和 use_emaclite_on_zynq 设为 0。如下图所示。
修改 lwip_memory_options 设置,将 mem_size,memp_n_pbuf,mem_n_tcp_pcb,memp_n_tcp_seg 这 4 个参数 值设大,这样会提高 TCP 传输效率。如下图所示。
修改 pbuf_options 设置,将 pbuf_pool_size 设大,增加可用的 pbuf 数量,这样同样会提高 TCP 传输效率。如下 图所示。
修改 tcp_options 设置,将 tcp_snd_buf,tcp_wnd 参数设大,这样同样会提高 TCP 传输效率。如下图所示。
修改 temac_adapter_options 设置,将 n_rx_descriptors 和 n_tx_descriptors 参数设大。这样可以提高 zynq 内部 emac dma 的数据迁移效率,同样能提高 TCP 传输效率。如下图所示。
最后,右击soc_base完成编译

1.4.2创建hello_world APP工程






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

1.4.3以太网测试1:创建lwip echo APP工程
用同样的方法创建lwip_echo_server
2:创建lwip_tcp_perf_client APP工程

1.5程序分析
hello_word APP就是简单通过串口输出一些字符信息,本文重点演示软件使用方法,程序代码不做分析,后面SDK高级篇到以太网部分,用到相关功能再分析代码。


1.6 方案演示
1.6.1 硬件准备
JTAG 启动 000 而模式开关为 ON ON ON
image.jpg
开发板已经集成了 USB 转串口,所以只需要插入 USB 延长线即可,接上 JTAG,最后给开发板通电。
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


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

本版积分规则

0

关注

10

粉丝

90

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

        • 扫描访问手机版