Zynq

ZYNQ开发基本流程

ZYNQ内部的总体框架如所示,PS中包含2个ARM Cortex-9的内核,一些基本的外设扩展口以及Memory接口。PS和PL的相互通信通过两个通路完成,分别是GP(General Purpose)Ports和HP(High Performance)Ports。GP Ports包含2个Master接口和2个Slave接口,符合标准的AXI协议数据位宽是32bit。HP Ports包含4个接口,全部是PL作为Master

学会Zynq(20)TCP echo服务器(接收回调)

前两篇我们学习了TCP的发送,本文学习如何处理接收数据。本文使用TCP设计一个echo服务器,开发板将来自所有IP地址和端口的数据原路发送回去,功能和本系列第15篇的UDP echo服务器相同。本文实例与SDK提供的“lwip echo server”例程相比要简化许多,没有使用DHCP协议。本文主要是学习TCP的接收回调,DHCP的内容会在后面专门讲述。

学会Zynq(19)TCP发送Hello World(server模式)

上文介绍了用TCP发送“Hello World”的实例,工作在client模式下。本文实现同样的功能,但让TCP工作在server模式下。把开发板当作服务器,远程主机为客服端访问服务器,实现被动连接。TCP client和TCP server在lwIP中的连接流程和区别可参考本系列前面与lwIP相关的文章

ZYNQ--从入门到起飞--AXI总线接口分析(LITE)

在ZYNQ中有支持三种AXI总线,拥有三种AXI接口,当然用的都是AXI协议。其中三种AXI总线分别为

学会Zynq(18)TCP发送Hello World(client模式)

TCP的工作机制比UDP要复杂的多。本文介绍用TCP发送“Hello World”的实例,讨论程序设计中几个关键的问题。本文撰写思路假设您已经阅读了本系列前几篇与lwIP、UDP相关的文章,重复性语言不过多描述。本文TCP工作在client模式。TCP内容较多,后面的文章会逐步深入介绍

学会Zynq(17)pbuf操作函数介绍与示例程序

从前面几个UDP的程序实例中我们可以体会到pbuf的重要性,对pbuf的灵活操作也是完成程序功能和提高代码效率的关键。本篇总结lwip的pbuf.c中的常用函数并给出示例程序,其中部分函数和string.h文件中提供的传统内存操作函数功能相同

学会Zynq(16)UDP echo服务器(接收回调)

前两篇我们学习了UDP的发送,本文学习如何处理接收数据。lwIP为UDP接收提供了回调机制,学会回调机制的使用可以为学习更复杂的TCP回调打下基础。本文使用UDP设计一个echo服务器,开发板将来自所有IP地址和端口的数据原路发送回去,功能和SDK提供的“lwip echo server”例程一样,只不过例程使用的是TCP协议。

学会Zynq(15)UDP sendto函数的使用

上文从“UDP发送Hello World”的实例体会了lwIP的使用。在user_udp_init函数中我们按照“创建UDP PCB->绑定本地端口->连接远程主机”的顺序完成初始化,发送时使用send函数将数据发送至连接的主机

学会Zynq(14)UDP发送Hello World

本系列前面几篇介绍了lwIP的相关知识和官方给出的应用实例。从本文开始将进入“实操”阶段,详细介绍Zynq如何使用UDP和TCP两种协议进行通信。建议阅读本文前先了解lwIP相关知识,重复的内容在本文只会简单讲述。

学会Zynq(13)lwIP官方应用程序示例

XAPP1026中记录一些lwIP的应用程序示例和性能测试情况,不过提供的示例工程都是在几个Xilinx的官方板子中跑的。可能很多学生没有机会碰到这些板子。。。另外这份应用笔记使用的SDK 2014.3版本也比较老,那个版本lwip还没有直接集成到SDK中。本文将这份笔记其中比较有用的代码编写思路和性能测试结果部分摘取出来