作者:Adam Taylor
在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来配置它:
该选项允许你配置所需的lwIP,然而你的实际应用需要定义包含IP地址和子网的参数。使用lwIP的一种途径是嵌入提供系统遥测的web网页。通过使用HTTP命令,你可以使用相同的网页来控制系统。对于以太网连接的嵌入式系统,这些类型的Web界面很有用。
我们还需要一个文件系统来嵌入一个web网页。该文件系统包含在Zynq SoC系统的DDR内存中。启动该文件系统的过程和配置lwIP栈的过程很相似。选上xilmfs选项来定义文件系统保留的内存位置:
如果有必要,我们在Vivado tcl命令行中使用mfsgen命令来创建一个文件。通过使用该命令,我们还可以把网页和图像引入到文件系统中,并且被lwIP栈通过。
在软件开发过程中,我们将使用SDK核JTAG来下载和运行lwIP应用。SDK下载ELF应用的时候,它也必须把文件系统内存内容下载到恰当的位置中去。这可以通过添加由mfsgen为运行和调试配置而创建的文件系统镜像来实现。接着在应用执行前,该镜像被下载到恰当的内存位置中去,这样确保应用找到需要的文件(比如要服务的网站)。
如果文件系统和lwIP均已正确安装,我们现在就可集中精力在应用开发上面。下面是两种把我们的应用和lwIP栈接口的主要方法:
• Raw——这是没有操作系统时使用的基本API。它基于事件驱动。使用lwIP的应用在该模式下在触发如接收数据等事件时调用相应的回调函数。
• Sockets——使用在运行操作系统的Zynq SoC上。该方法使用到线程,应用使用其来和lwIP栈通信。
XAPP1026(轻量级IP应用例程)是一个囊括了上述所有概念并且提供Raw和Socket使用范例的例程,它实现了一个简单回显服务器和网页服务器。注意到我们在这些系列中使用的是MicroZed开发板而不是ZC7002开发板,因此我们需要使用zedboard.org网站提供的端口。
接下来,我想研究一些Zynq领域中非常新奇有趣的开发。稍后我将会回到Zynq SoC的IP使用主题。
现在,你可以方便地获取第一年的Adam Taylor MicroZed开发板编年史Kindle电子书版本了,很实惠仅需7.5美元。
原文链接: