Zynq

Zynq Xilinx SDK下载与调试教程

一.新建HelloWorld工程

二、下载bitstream文件

1、点击vivado菜单栏上的File->Launch SDK,然后点击OK进入SDK界面:

2、点击SDK菜单栏上的Xilinx Tools->Program FPGA

点击Search...,选择design_1_wrapper.bit (design_1_wrapper.bit要放到helloworld.sdk/design_1_wrapper_hw_platform_0/才能找到)

3、点击Program按钮开始下载:

1、背景介绍

局部硬件简图如下:

局部硬件简图

如上图所示,ZYNQ中使用了AXI_PCIE IP核,作为PCIE RC节点,交换芯片作为PCIE EP节点,两者之间通过PCIE总线相连。ZYNQ通过PCIE配置交换芯片,实现路由配置和转发等功能。

2、问题描述
Linux启动后能枚举到交换芯片,也可以通过PCIE命令读写交换芯片寄存器,但交换芯片在每次上电时需要启动DMA引擎从ZYNQ端的DDR获取描述符,这时发现ARM能给出ACK信号,但却没有数据返回,导致DMA引擎取数失败。

3、解决思路
首先可以确认这种情况下是PCIE的EP访问RC,由于ZYNQ已经实现了RC对EP的正确读写,不可能去向正常而回向异常,可以确认链路应该不存在问题。

通过盛科SDK给出的信息发现DMA引擎去取描述符的地址如下:

Zynq轻量级以太网控制器LWIP传输速度优化

在sdk中选择lwip模板,编译调试可轻松连接成功并进行通信,模板中代码完成的任务是client给server发什么,server就会回复什么。

但是传输速度非常低下,只有50KB左右,所以需要改进速度,修改lwip BSP中的设置参数可明显改进传输速度,默认BSP参数是:

需要修改的参数如下:

MEM_SIZE 524288
MEMP_NUM_PBUF 1024
MEMP_NUM_TCP_SEG 1024
PBUF_POOL_SIZE 8192
N_RX_DESCRIPTORS = 512
N_TX_DESCRIPTORS = 512
TCP_SND_BUF 65535
TCP_WND 65535
TCP_IP_TX_CHECKSUM_OFFLOAD= true

读zynq_ebook笔记知识点(三)

作者:llc1991

第十一章:硬件/软件划分

FPGA 可编程逻辑适合解决那种能高效地划分为多道并行任务的问题。由于可编程逻辑固有的并行执行方式,多个运算可以被同时处理,用比串行处理更短的时间计算出最终的结果。FPGA 实现的例子应用包括数字过滤计算、波束形成和图像处理。传统上这些任务是重复的,而且计算的过程本质上是完全静态的。另一方面,存在一些更动态、不可预测的问题,这些任务更适合在基于处理器的系统上实现。

读zynq_ebook笔记知识点(二)

作者:llc1991

第九章:一般嵌入式系统架构

本文转载自: http://blog.chinaaet.com/llc1991/p/5100051309

读zynq_ebook笔记知识点(—)

作者:llc1991

1. PS和PL 分工:

软件(在PS 端)常常用来完成一些一般性的顺序执行的任务,比如操作系统、用户应用程序以及图形界面,而偏向于数据流计算的任务则更加适合于在PL 端实现。。另外,那些具有并行限制的软件算法,也应该考虑在PL 端实现。这比较近似于“ 协处理器” 模型,可以把处理器从那些重在计算并且具有并行性的任务中解放出来,改为硬件处理,从而在整体上提升性能。

2. 选择PS的操作系统:

操作系统:它可以是例如Linux 或者Android 这样的成熟的操作系统;也可以是嵌入式操作系统;对于时序

LWIP数据通路

实验准备:

基础概念
以太网MAC是一个基础模块,它使得我们可以实现一个TCP/IP协议栈,协议使得应用可以基于网络来通信。如果想要解析一个TCP/IP协议栈,需要了解以下层次:
• 第一层——物理层:(描述物理连接)主要由外部物理层芯片实现
• 第二层——数据链路层:(描述物理层上数据传输的途径)可以由PS的MAC实现
• 第三层——网络层:(描述不同网络间数据传输的途径)提供网络路由和寻址层,可以使IPv4或者IPv6
• 第四层——传输层:(提供终端用户间的数据传输)TCP
• 第五层——应用层:应用层操作数据

ZYNQ基础系列(五) AMP模式 双裸核CPU同时运行

AMP模式 双核CPU同时运行

从软件的角度来看,多核处理器的运行模式有三种:
AMP(非对称多进程):多个核心相对独立的运行不同的任务,每个核心可能运行不同的操作系统或裸机程序,但是有一个主要核心,用来控制整个系统以及其它从核心
SMP(对称多进程):一个操作系统同等的管理各个内核,例如PC机
BMP(受约束多进程):与SMP类似,但开发者可以指定将某个任务仅在某个指定内核上执行
默认情况下,ZYNQ仅运行一个CPU,这里主要研究AMP模式下,两个CPU同时运行

实验目的
使用ZYNQ7010完成
1> CPU0在裸核下运行helloworld,CPU1在裸核下运行流水灯

硬件环境
硬件环境过于简单,这里只文字描述
1.创建原理图,添加PS核,双击进入PS的配置界面
2.peripheral I/O pin里开启串口和EMIO和SD卡
3.在MIO configuration中,配置EMIO宽度为4
4.在clock configuration和DDR configuration中,设置对应的时钟频率和DDR型号
5.关闭配置界面,原理图如下

1、背景介绍
最近为了使用PCIe驱动,对Linux内核进行了升级,目前ZYNQ发布的最新版内核为2017.4(对应内核版本4.9),升级虽然解决了PCIe驱动问题,但却引入了另一个奇怪的问题-挂载JFFS2文件系统时会出现如下错误:
jffs2: jffs2_scan_eraseblock(): Node at 0x0000225c {0x1985, 0xe002, 0xe002e002) has invalid CRC 0x84d1586d (calculated 0x1d56aca6)
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002260: 0xe002 instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002264: 0x586d instead
jffs2: jffs2_scan_eraseblock(): Magic bitmask 0x1985 not found at 0x00002268: 0x0002 instead

ZYNQ7010把SD卡的图片显示到HDMI
在ZYNQ基础系列(三)中有相关IP核的初步介绍,在已有的基础上可以搭建一个基础的显示通路了
实验目的:在Mi701N开发板的基础上,驱动800*600的显示屏输出图片(图片文件[.bin文件]存放SD卡中)

一、PL部分实现
大体框图:

AXI接口连接模块和复位模块是通过自动生成的

rgb2dvi模块:用于IO口输出HDMI信号 [在ZYNQ基础系列(二)],也可以不加该模块直接以VGA形式输出,或者加一个驱动HDMI芯片的IP核输出

PS模块:注意根据板子具体情况设置PS时钟和PL时钟以及DDR型号

同步内容