Adam Taylor玩转MicroZed系列第80部分

Adam Taylor玩转MicroZed系列第80部分,第1张

Adam Taylor玩转MicroZed系列的前期部分中,我们介绍了IP栈的概念。(见“Adam Taylor玩转MicroZed系列第79部分:Zynq SoC以太网第3部分”)接下来就是在我们的设计中使用该协议栈了。SDK开发环境允许我们创建BSP的时候包含一个轻量级的IP栈(lwIP)。lwIP是个在一系列嵌入式系统中使用到的开源IP栈。原先由瑞典计算机科学学院为了减少创建IP栈的工作而开发。

在Zynq系统中包含lwIP很简单。你可以仅仅在BSP设置概览标签页中检查lwIP选项即可。如果你计划使用Zynq系统来嵌入一个web网页,你还需要检查xilmfs(赛灵思内存文件系统)选择框来利用Zynq系统的DDR内存去建立一个文件系统。

一旦你包含了该库,你可以通过在下面所示的standalone中选择lwIP来配置它:

Adam Taylor玩转MicroZed系列第80部分,Adam Taylor玩转MicroZed系列第80部分,第2张

该选项允许你配置所需的lwIP,然而你的实际应用需要定义包含IP地址和子网的参数。使用lwIP的一种途径是嵌入提供系统遥测的web网页。通过使用HTTP命令,你可以使用相同的网页来控制系统。对于以太网连接的嵌入式系统,这些类型的Web界面很有用。

我们还需要一个文件系统来嵌入一个web网页。该文件系统包含在Zynq SoC系统的DDR内存中。启动该文件系统的过程和配置lwIP栈的过程很相似。选上xilmfs选项来定义文件系统保留的内存位置:

Adam Taylor玩转MicroZed系列第80部分,Adam Taylor玩转MicroZed系列第80部分:LWIP栈配置,第3张

 

如果有必要,我们在Vivado tcl命令行中使用mfsgen命令来创建一个文件。通过使用该命令,我们还可以把网页和图像引入到文件系统中,并且被lwIP栈通过。

在软件开发过程中,我们将使用SDK核JTAG来下载和运行lwIP应用。SDK下载ELF应用的时候,它也必须把文件系统内存内容下载到恰当的位置中去。这可以通过添加由mfsgen为运行和调试配置而创建的文件系统镜像来实现。接着在应用执行前,该镜像被下载到恰当的内存位置中去,这样确保应用找到需要的文件(比如要服务的网站)。

Adam Taylor玩转MicroZed系列第80部分,Adam Taylor玩转MicroZed系列第80部分,第4张

 

如果文件系统和lwIP均已正确安装,我们现在就可集中精力在应用开发上面。下面是两种把我们的应用和lwIP栈接口的主要方法:
 Raw——这是没有 *** 作系统时使用的基本API。它基于事件驱动。使用lwIP的应用在该模式下在触发如接收数据等事件时调用相应的回调函数。
 Sockets——使用在运行 *** 作系统的Zynq SoC上。该方法使用到线程,应用使用其来和lwIP栈通信。

XAPP1026(轻量级IP应用例程)是一个囊括了上述所有概念并且提供Raw和Socket使用范例的例程,它实现了一个简单回显服务器和网页服务器。注意到我们在这些系列中使用的是MicroZed开发板而不是ZC7002开发板,因此我们需要使用zedboard.org网站提供的端口。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/dianzi/2539073.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-05
下一篇 2022-08-05

发表评论

登录后才能评论

评论列表(0条)

保存