![](https://img-blog.csdnimg.cn/20190906131126914.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
ZYNQ 裸机开发
文章平均质量分 89
coding
Vuko-wxh
道阻且长 行则将至。
展开
-
GD(兆易创新)系列FLASH进行FPGA和ZYNQ配置固化相关操作
本文主要针对使用GD(兆易创新)系列的FLASH做启动配置片时,遇到的相关问题进行简单整理复盘,避免后人踩坑。本人操作固化芯片型号为:ZYNQ7045、690T(复旦微替代型号V7 690T)。原创 2023-04-19 13:32:59 · 5764 阅读 · 6 评论 -
ZYNQ - 以太网远程更新SD卡应用程序
对于ZYNQ系列的板卡固化,可以通过JTAG接口,使用SDK固化到FLASH中,或者可将SD卡取出将SD卡中保存的固化工程进行修改,但在很多情况下,离线更新会很不方便,本文借鉴网上常见的远程更新QSPI FLASH的相关示例,对表贴式SD卡的应用程序进行了在线更新的操作适配,便于ZYNQ设备进行远程更新保存在表贴式SD卡中的固化程序。原创 2022-12-29 23:08:33 · 2773 阅读 · 0 评论 -
ZYNQ - 无DDR固化程序(代码运行在OCM上)
ZYNQ固化时,正常情况下都需要DDR参与,但是有时硬件设计时,可能将DDR去掉或设计出错,这将导致ZYNQ无法正常固化,之前有写过一个使用静态链接库进行无DDR固化的文章,当时那个是压缩了FSBL的相关代码只保留FLASH模式下的功能,对于其他模式可能无法正常使用,本文将无DDR固化的情况进一步进行介绍,讲解如何修改FSBL实现ZYNQ的程序固化,给出一个demo进行演示测试。原创 2022-11-20 12:48:31 · 4850 阅读 · 13 评论 -
ZYNQ - 无DDR固化程序(压缩FSBL以能固化更大的应用程序在OCM上)
应用背景由于ZYNQ去掉DDR之后,arm空间仅剩余256kbit(192+64),而FSBL占用资源过多,所以对FSBL的配置相关操作进行压缩裁剪,整合到静态链接库,可以用于无FSBL的固化启动。 在FPGA端不ENABLE DDR,在SDK端正常建立工程,补充内容如下:移动部分文件将导入SDK的平台文件夹下的ps7_init.c和ps7_init.h移动到src添加静态链接库新建一个文件夹(可直接添加在src中)添加libno_ddr_boot.a,将no_ddr_boot.h添加到src中原创 2022-04-29 13:26:31 · 2483 阅读 · 1 评论 -
ZYNQ-pbuf操作指南
在网口调试中比较重要的部分就是对pbuf的操作,本文主要针对pbuf的结构体、pbuf层和pbuf的相关函数的操作指南进行讲解说明。pbuf结构体struct pbuf { struct pbuf *next; void *paylo原创 2021-08-06 21:41:22 · 1178 阅读 · 0 评论 -
ZYNQ -Lwip和TCP/IP简介
TCP/IPTCP/IP 通信协议是对计算机必须遵守的规则的描述,只有遵守这些规则,计算机之间才能进行通信。浏览器与服务器都在使用 TCP/IP 协议, E-Mail 使用 TCP/IP 协议,电子邮件也通过 TCP/IP 协议来发送和接收邮件。因特网地址是 TCP/IP 协议。因特网地址比如 “42.120.45.233” 就是一个 TCP/IP 协议。TCP/IP(Transmission Control Protocol/Internet Protocol,传输控制协议/网际协议)是指能够在多个不原创 2021-08-05 19:36:09 · 5027 阅读 · 0 评论 -
ZYNQ - RAWAPI编程指南
写在前面为了较好了解LWIP的相关内容,这里阅读了LWIP141版本的源代码的核心指文档(rawapi.txt)进行了解相关函数的用法以及相关概念。线程lwIP 开始针对单线程环境。在添加多线程支持时,不是使核心线程安全,而是选择了另一种方法:有一个主线程运行 lwIP 核心(也称为“tcpip_thread”)。原始 API 只能从此线程使用!使用顺序或套接字 API 的应用程序线程通过消息传递与此主线程进行通信。因此,可以从其他线程或 ISR 调用的函数列表非常有限! 只有来自这些 API 头文原创 2021-08-05 11:43:26 · 927 阅读 · 1 评论 -
ZYNQ-基于BRAM的PS和PL数据交互
学习内容本文介绍关于AXI BRAM控制器的相关内容,针对数据量较少、地址不连续、长度不规则的情况,通过 BRAM 来进行数据的交互。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。AXI BRAM控制器简介BRAM控制器可以用于与 AXI 互连和系统主设备的集成,以与本地块 RAM 进行通信。 内核支持到块 RAM 的单次和突发传输,并针对性能进行了优化。...原创 2021-07-31 10:24:13 · 7294 阅读 · 1 评论 -
ZYNQ-双核AMP通信(二)
写在前面承接前文:ZYNQ-双核AMP通信(一),前文对双核AMP架构通信的相关内容进行了简单的介绍,本文完成AMP架构通信的程序并验证。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。工程设计CPU0 接收串口的数据,并写入OCM 中,然后利用软件产生中断触发 CPU1; CPU1 接收到中断后,根据从 OCM 中读出的数据并用串口打印,并在控制结束后触发 CPU0 中断,实现了双核 CPU 通信的功能。系统框图硬件平台搭建首先新建工程,创建 block desig原创 2021-07-26 09:27:21 · 3748 阅读 · 7 评论 -
ZYNQ-双核AMP通信(一)
学习内容本文首先介绍了双核AMP通信的相关内容,接着进行设计AMP双核通信的工程,完成功能验证。原创 2021-07-24 16:19:22 · 6086 阅读 · 3 评论 -
ZYNQ-QSPI Flash读写操作
# 学习内容本文首先介绍Flash和QSPI Flash控制器的相关内容,然后使用 QSPI Flash 控制器,开发板上的 QSPI Flash 进行写、 读操作。通过对比读出的数据是否等于写入的数据, 从而验证读写操作是否正确。原创 2021-05-25 21:57:34 · 13088 阅读 · 14 评论 -
ZYNQ-XADC使用
学习内容本文首先介绍了ZYNQ的XADC的相关内容,并学习使用ZYNQ芯片中的XADC测量芯片内部的温度电压等参数,然后进行串口打印输出。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。XADC介绍简介Xilinx模拟信号转换模块,称为XADC,是一个硬核。它具有JTAG和DRP接口用于访问7系列FPGA中的XADC状态和控制寄存器。Zynq-7000 SoC器件添加了第三个接口,即PS-XADC接口,用于PS软件进行控制XADC。 Zynq-7000器件将灵活的模数转换器原创 2021-05-23 21:52:53 · 8204 阅读 · 11 评论 -
ZYNQ-定时器中断使用
学习内容本文首先介绍了ZYNQ的定时器的相关内容,并学习使用ZYNQ芯片中的定时器进行操作测试。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。定时器简介介绍ZYNQ有两个Cortex-A9处理器,每个Cortex-A9处理器都有自己的专用32位计时器和32位看门狗计时器。 两个都处理器共享一个全局64位计时器。 这些计时器始终以1/2的CPU频率计时(CPU_3x2x)。在系统层级,有一个24位看门狗定时器和两个16位三重定时器/计数器。系统看门狗定时器的时钟频率为CP原创 2021-05-22 19:52:53 · 3517 阅读 · 10 评论 -
ZYNQ-UART串口中断测试
学习内容本文主要介绍关于ZYNQ芯片的串口中断功能,并编写相关测试代码开发环境vivado 18.3&SDK,PYNQ-Z2开发板。UART控制器简介UART控制器是一个全双工异步接收和发送,支持可编程波特率和I/O信号格式。 该控制器可实现奇偶校验自动生成和多主检测模式。UART操作由配置和模式寄存器控制。FIFO、调制解调器信号和其他控制器功能的状态是使用状态、中断状态和调制解调器状态寄存器读取的。UART控制器有独立的RX和TX数据路径。每个路径包括一个64字节的FIFO。 控制原创 2021-05-18 19:45:48 · 5445 阅读 · 0 评论 -
ZYNQ-使用HDMI显示器进行SD卡图片读取显示
学习内容本文使用带有HDMI接口的显示器,构建图像视频显示的测试工程,利用VDMA进行传输图像视频数据,通过文件系统将SD卡中的照片读取出来然后在显示器显示。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。准备工作所用到的IP:VDMA、video out IP、Video Timing Controller、动态时钟配置 IP和DVI IP。详细介绍参考前文:ZYNQ-AXI_VDMA IP简介ZYNQ-Video out IP和Video Timing Contr原创 2021-05-08 21:09:39 · 3234 阅读 · 7 评论 -
ZYNQ-使用HDMI显示器进行VDMA彩条显示测试
学习内容本文使用带有HDMI接口的显示器,构建图像视频显示的测试工程,利用VDMA进行传输图像视频数据,进行彩条显示的测试。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。VDMA简介VDMA 用于将 AXI Stream 格式的数据流转换为 Memory Map 格式或将 Memory Map 格式的数据转换为 AXI Stream 数据流, 也就是说 VDMA 内核旨在提供从 AXI4 域到 AXI4-Stream 域的视频读/写传输功能,反之亦然,从而实现系统内存(主要原创 2021-05-03 20:19:51 · 5478 阅读 · 21 评论 -
ZYNQ-Video out IP和Video Timing Controller IP简介
学习内容本文对Video out IP和VTC IP核进行简要介绍,为后文完成使用带有HDMI接口的显示器构建图像视频显示的测试工程做准备。Video out IP简介AXI4-Stream to Video Out核心设计用于从实现视频协议的AXI4-Stream接口连接到视频源(并行视频数据、视频同步和空白)。该IP与Xilinx视频定时控制器(VTC)核心一起工作。该核心提供了一个具有AX14-Stream接口的视频处理核心和视频输出之间的桥梁。特点视频输出(带同步信号的特定时序下的并行原创 2021-05-02 19:06:02 · 3968 阅读 · 1 评论 -
ZYNQ-AXI_VDMA IP简介
学习内容本文主要介绍关于AXI4-Stream Video 协议和AXI_VDMA的IP核相关内容。AXI4-Stream Video 协议接口定义对于使用AXI4-Stream Video 协议的IP,对于接口的功能会进行拓展或者裁剪。下表列出了作为从机时,输入的接口信号名称和相关信息。下表列出了作为主机时,输出的接口信号名称和相关信息。这里的SOF 是用于指示起始帧的传输信号,SOF实际上是在AXI4-Stream的USER信号上进行传输的;EOL用于指示一行数据传输完成。EOL实际上是原创 2021-05-01 17:42:47 · 2107 阅读 · 0 评论 -
ZYNQ-AXI_GP接口和AXI_HP接口的异同
学习内容学习关于ZYNQ IP核中的GP接口和HP接口的异同,介绍关于AXI_GP接口和AXI_HP接口的相关内容。AXI_HP和AXI_GP异同首先给出ZYNQ SoC的系统框图,如下图所示。在图中,箭头方向代表主机到从机的方向。对于GP接口(general purpose)通用目的接口,有四个接口(两个从端口,两个主端口);HP接口(high-performance purpose)高性能接口,有四个接口(四个都是从端口)。GP接口直接连接到的是中央互联区(central interconne原创 2021-04-30 11:15:22 · 11976 阅读 · 2 评论 -
ZYNQ-使用SD卡读写文本数据
学习内容本文主要关于SD卡相关内容,然后使用SD卡进行TXT文本读写,并用串口打印出读写数据。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。SD卡简介SD卡(Secure Digital Card):安全数字卡,又叫安全数码卡。有体积小,容量大传输速度快,支持热插拔等特点。在ZYNQ开发板上这里是使用的是TF卡,也就是小卡(micro sd卡)又称TF卡。SD卡是在 MMC 卡( Multimedia Card,多媒体卡)的基础上发展而来,主要增加了两个特色:更高的安全原创 2021-04-29 14:46:18 · 6969 阅读 · 2 评论 -
ZYNQ-使用AXI DMA IP进行环路测试
学习内容前文对AXI DMA IP进行了简介,本文使用AXI DMA IP进行环路测试。开发环境vivado 18.3&SDK,PYNQ-Z2开发板。系统框图本次工程使用ZYNQ开发板上的AXI DMA IP核从DDR3中读取数据,并写回DDR3中。在实际应用中, DMA 一般与产生数据或需求数据的 IP 核相连接,在本次实验中,我们使用 AXI4 Stream Data FIFO IP 核来充当这类 IP 进行 DMA 环回实验。PS 开启 HP0 和 GP0 接口。 AXI DMA原创 2021-04-28 13:34:41 · 2271 阅读 · 0 评论 -
ZYNQ-AXI DMA IP简介
学习内容本文主要介绍关于AXI DMA的IP核相关内容。DMA简介DMA(Direct Memory Access,直接存储器访问)是计算机中一种内存访问技术。它允许某些硬件子系统可以独立地直接读写系统内存,而不需中央处理器( CPU)介入处理。DMA 是用硬件实现存储器与存储器之间或存储器与 I/O 设备之间直接进行高速数据传输。 使用 DMA时, CPU 向 DMA 控制器发出一个存储传输请求, 这样当 DMA 控制器在传输的时候, CPU 执行其它操作,传输操作完成时 DMA 以中断的方式通知原创 2021-04-27 18:28:10 · 4273 阅读 · 0 评论 -
ZYNQ-使用自定义AXI总线IP核进行DDR读写测试
学习内容本文首先进行自定义IP的AXI总线IP的设计,然后在SDK下编写代码进行DDR的读写数据的测试。开发环境vivado 18.3&SDKPYNQ-Z2开发板系统框图首先对本次工程进行简要说明:本次工程使用AXI-Full接口的IP进行DDR的读写测试。在我们的DDR读写IP中,我们把读写完成和读写错误信号关联到PL端的LED上,用于指示DDR读写IP的读写运行状态。然后使用PL部分消抖处理后的按键进行启动AXI总线工作,控制数据写入。通过AXI互联模块连接到AXI_HP0端口,由P原创 2021-04-23 21:56:47 · 5037 阅读 · 3 评论 -
ZYNQ-AXI总线的信号接口要求以及时序关系
学习内容学习关于AXI总线的信号接口的具体要求Single Interface RequirementsClock and Reset前面也提到了信号和复位的功能,这里对AXI全局时钟(ACLK)和复位信号(ARESETn)做进一步的解释说明。Clock: 每个AXI组件都要使用时钟信号(ACLK)。所有的输入信号都在ACLK的上升沿上采样。所有输出信号的变化必须发生在ACLK上升沿之后。在主机接口和从机接口上,输入和输出信号之间不能有组合路径。**Reset:**文:AXI使用一个单原创 2021-04-22 22:11:09 · 2504 阅读 · 0 评论 -
ZYNQ-AXI总线通道与总线信号概述
学习内容本文主要介绍了AXI通道以及在每个通道下每个信号的概述。AXI通道定义简单回顾前文提到的AXI的通道定义,AXI协议是基于突发的,并定义了以下独立的传输通道:• read address• read data• write address• write data• write response每个独立通道由一组信息信号、VALID信号和READY信号组成。用于提供双向握手机制。VALID信号: 信息源端使用VALID信号来显示何时是有效地址;数据或控制信息是否在通道上可用。RE原创 2021-04-21 21:30:41 · 1206 阅读 · 0 评论 -
ZYNQ-AXI Interconnect IP介绍
部分IP介绍基础架构IP基础的IP是用于帮助组装系统的构建块。基础架构IP往往是一个通用IP,它使用通用的AXI4接口在系统中移动或转换数据,而不解释数据。这些基础的IP各自有自己的常用的功能,下面列举出一部分AXI接口的基础构架IP。° AXI Register slices (for pipelining)用于流水线操作。° AXI FIFOs (for buffering/clock conversion)用于缓存和时钟转换。° AXI Interconnect IP and AXI Sm原创 2021-04-20 17:37:22 · 6857 阅读 · 0 评论 -
ZYNQ-AXI总线简介
学习内容关于AXI总线协议的一些简单知识,通过阅读Xilinx的使用指导手册(UG1037),结合正点原子的ZYNQ视频进行梳理总结。AXIAXI(Advanced eXtensible Interface) 高级扩展接口是ARM AMBA的一部分。(AMBA(Advanced Microcontroller Bus Architecture) 高级微控制器总线架构)AMBA:高级微控制器总线架构,是1996年首次引用的一组微控制器总线协议。开放的片内互联的总线标准,能在多主机设计中实现多个控制器和原创 2021-04-19 22:11:38 · 1121 阅读 · 0 评论 -
ZYNQ-BOOT介绍与程序固化
学习内容本文把程序存储在非易失性存储器中, 在上电或者复位时让程序自动运行,这个过程需要启动引导程序( Boot Loader) 的参与。 Boot Loader 会加载 FPGA 配置文件, 以及运行在 ARM 中的软件应用。开发环境vivado 18.3&SDKPYNQ-Z2开发板Boot和配置简介在 ZYNQ的启动和配置时, 既需要 PS 的配置信息,又需要 PL 的配置信息。ZYNQ无法纯FPGA像xilinx那样只进行FPGA端口的配置。在 ZYNQ 中, 我们可以理解为PS作原创 2021-04-17 22:55:28 · 2850 阅读 · 0 评论 -
ZYNQ-调用自定义AXI接口呼吸灯IP
学习内容本节使用前文实现AXI接口的呼吸灯的IP,挂载到AXI总线调用驱动axi呼吸灯IP。开发环境vivado 18.3&SDKPYNQ-Z2开发板硬件平台搭建新建工程,创建 block design。添加呼吸灯IP和ZYNQ7,对zynq进行初始化配置,然后进行自动连接。完成自动连线后,对AXI接口的led管脚进行引脚引出定义完整的平台设计图:然后我们进行generate output product 然后生成HDL封装。接着就对应引脚进行引脚约束即可(这里的LED是原创 2021-04-17 17:12:19 · 564 阅读 · 0 评论 -
ZYNQ-制作自定义AXI呼吸灯IP
学习内容本节使用正点原子提供的呼吸灯实验的Verilog代码用于实现AXI接口的呼吸灯的IP。在 Vivado 软件中,我们可以很方便的通过创建和封装 IP 向导的方式来自定义 IP 核。开发环境vivado 18.3&SDKPYNQ-Z2开发板自定义AXI 接口IP制作流程首先打开Vivado软件,在Tasks这里选择New IP lacation点击next,对IP的信息进行设置,这里我们使用默认配置即可。设置好我们IP要保存的位置。点击Tools中的创建和封装新的IP选项,原创 2021-04-17 16:26:48 · 856 阅读 · 0 评论 -
ZYNQ-AXI GPIO使用
学习内容前面简单学习了关于GPIO的操作,本次将使用PL 端调用 AXI GPIO IP 核, 并通过 AXI4-Lite 接口实现 PS 与 PL 中 AXI GPIO 模块的通信。开发环境vivado 18.3SDKPYNQ-Z2AXI_GPIO简介AXI GPIO IP 核为 AXI 接口提供了一个通用的输入/输出接口。 与 PS 端的 GPIO 不同, AXI GPIO 是一个软核( Soft IP),即 ZYNQ 芯片在出厂时并不存在这样的一个硬件电路, 而是由用户通过配置 PL 端原创 2021-04-16 19:12:31 · 3182 阅读 · 0 评论 -
ZYNQ-实现GPIO的中断控制
学习内容实现对GPIO的中断控制程序,实现按键按下使得led等闪亮一次,并结合前文的IIC工程,实现按键控制iic的数据采集。开发环境vivado 18.3SDKPYNQ-Z2中断初始化的设置对于熟悉ARM和32开发的人来说,中断的概念对其并不陌生。下面我给出按键在32开发时候的初始化的流程:按键中断编程步骤分析:使能相应的时钟配置GPIO管脚为中断功能设置中断优先级使能相应的中断实现中断服务程序然后我给出ZYNQ的中断初始化的设置流程:初始化CPU异常功能初始化中断控原创 2021-02-09 16:52:11 · 3649 阅读 · 1 评论 -
ZYNQ-实现外设驱动开发-iic接口的温湿度传感器si7021
学习内容进一步熟悉IIC接口的开发调试,上次工程只是模拟开发,本次将进行实践操作。开发环境vivado 18.3SDKpynq-z2硬件平台搭建参考前文-ZYNQ-实现外设驱动开发-iic接口的光强度传感器GY-30的搭建过程下面给出部分更改操作:这里我们需要把之前选到的MIO改成EMIO同时参考我们的pynq的电路图:进行管脚分配,这里我开始把管脚分配到了AR_SCL和AR_SDA上,试了很多次都不行,然后我就改到了相邻的AR12和A13上,就能正常工作了,这里应该是之前电平一直原创 2021-02-07 17:05:52 · 1369 阅读 · 9 评论 -
ZYNQ-利用PS引脚实现EMIO GPIO的驱动
学习内容使用SDK和提供的API进行初始化GPIO,并驱动led和btn进行操作,实现led呼吸灯效果,串口读取btn的值。开发环境vivado 18.3 && SDK开发板 pynq-z2建立工程vivado设计BD同样和前面相似,我们先添加IP ZYNQ7,然后进行IP配置,选中uart sd gpioEMIO的 gpioAPB AP transaction error, DAP status f0000021 问题解决方法我们可以简单的理解为zynq这个芯片是原创 2021-02-05 15:36:58 · 2333 阅读 · 1 评论 -
ZYNQ-实现外设驱动开发-iic接口的光强度传感器GY-30
学习内容使用SDK和提供的API进行初始化IIC,并驱动iic接口的光强度传感器GY-30。开发环境vivado 18.3 && SDK开发板 pynq-z2(由于这里的pynq的开发板没有相应的MIO可以供直接使用ARM端进行开发,所以本次内容仅仅用于模拟流程开发)IIC知识部分嵌入式-iic通信的一些概念网上自行查找,不再赘述。...原创 2021-02-03 11:38:16 · 1914 阅读 · 1 评论 -
ZYNQ-实现PL和PS端的协调设计
目录学习内容开发环境STEP 1:BD设计SDK学习内容建立BD工程关联LED和SW进行PS和PL端的协同设计开发环境vivado、sdk开发板:zedboard、PYNQ-Z2STEP 1:BD设计和上次的工程类似这里的话不在重复,大家新建BD后进行添加ZYNQ7的ip核,打开后先不要对默认引脚进行修改,由于我们要PS和PL端进行联合使用,所以要用AXI总线进行数据互通,同时添...原创 2019-10-14 19:29:37 · 1742 阅读 · 0 评论 -
ZYNQ-Black-Design最小系统搭建实现ZYNQ上面的helloworld
学习内容:1.建立BD的工程2.在ZYNQ实现Helloworld工程的demo开发环境:vivado(版本都可以吧) 、SDK开发板:这里我用的是:zedboard和PYNQ-Z2STEP 1:建立一个BD工程打开vivado后点击:点击添加IP将ZYNQ7的ip核给添加进去:因为这里仅仅想用PS端实现Helloworld,所以就把那些无用的去掉:...原创 2019-10-14 15:59:33 · 655 阅读 · 0 评论 -
ZYNQ-ZedBoard设置Quad-SPI启动和SD驱动
Zedboard是第一款面向开源社区的Zynq-7000系列开发板,而Zynq-7000系列FPGA,也称为完全可编程(All Programable)SoC,是Xilinx一个有重大意义的产品系列。在FPGA里集成高性能的处理器内核一直是众多FPGA厂商以及客户的需求,Zynq-7000的面世标志着Xilinx在SoC集成度上的一个突破,实现了双核Cortex-A9 MPcore和最新的...原创 2019-09-06 13:09:08 · 1253 阅读 · 0 评论 -
ZYNQ-ZedBoard 上运行桌面 LINUX
摘自李工出的zedboard教程学习内容本课程通过格式化 SD 盘分 2 个区,1 个区是 FAT32 保存 uboot 和 linux 的内核镜像,另一个 ext3 分区保存的是 linux 桌面文件系统。实现步骤Step1 格式化 SD 盘并分区1. 使用 DiskGenius 将 SD 盘分为两个 FAT32 区 右击 sd 盘,选择快速格式化,如图所示:...原创 2019-09-06 00:07:41 · 1327 阅读 · 1 评论