LwIP协议栈在SoPC系统中的实现
LWIP协议栈详解

LWIP协议栈详解LWIP(Lightweight IP)是一个轻量级的开源 TCP/IP 协议栈,旨在为嵌入式系统提供网络连接功能。
它非常适合资源受限的系统,如单片机和小型处理器,因为它非常小巧且具有很好的可移植性。
首先,让我们来看看LWIP的核心协议。
LWIP提供了IP协议、ARP协议、ICMP协议和UDP协议的实现。
IP协议层负责数据包的路由和分段,ARP协议层负责解析IP地址和MAC地址的映射,ICMP协议用于网络探测和错误报告,UDP协议提供简单的不可靠数据传输。
除了核心协议,LWIP还提供了一些可选的协议功能,如TCP协议和DHCP协议的实现。
TCP协议提供了可靠的数据传输,而DHCP协议用于自动获取IP地址。
LWIP的另一个重要特性是它的可移植性。
LWIP设计了一个适配层,将操作系统相关的功能与核心协议分离开来。
适配层提供了一组标准的API,操作系统只需要实现这些API就可以使用LWIP协议栈。
LWIP支持的平台非常广泛,包括常见的操作系统如Windows、Linux和FreeRTOS,以及嵌入式系统如ARM Cortex-M和Microchip PIC等。
最后,让我们来看看LWIP的应用协议扩展能力。
应用协议可以通过注册回调函数来扩展LWIP的功能。
例如,应用程序可以注册一个回调函数来处理HTTP请求,或者注册一个回调函数来处理自定义的应用层数据。
这种扩展机制使得LWIP非常灵活,可以满足各种应用需求。
总结起来,LWIP是一个轻量级的开源TCP/IP协议栈,适用于资源受限的嵌入式系统。
它将TCP/IP协议栈分为核心协议和应用协议两层,提供了IP、ARP、ICMP、UDP等核心协议的实现,并通过可移植的适配层支持各种平台。
此外,LWIP还提供了应用协议扩展的能力,通过注册回调函数来扩展功能。
无论是大型操作系统还是小型嵌入式系统,LWIP都是一个很好的选择。
μCOS-II-下-LwIP-协议栈的移植和测试

1、引言为了实现嵌入式系统终端连入互联网,而有必要为其引入了网络功能。
μC/OS II 是一个源代码开放的实时操作系统,但是它只是一个实时的任务调度及通信内核,并没有集成TCP/IP 通信协议,为了实现网络功能,需要在μC/OS II 移植一个轻量级的TCP/IP 通信协议LwIP。
本文主要论述μC/OS II 下通信协议LwIP 的移植以及测试。
2、LwIP 简介LwIP ( light weight IP)是瑞士计算机科学院的Adam Dunkels 等开发的一套开放TCP/IP 协议栈源代码。
LwIP 既可以移植到操作系统上,又可以在无操作系统的情况下独立运行。
LwIP 实现的重点是在保持TCP/IP 协议主要功能的基础上减少对RAM 的占用,这使LwIP 适合在低端嵌入式系统中使用。
其主要特点如下:(1)支持多网络接口下IP 转发;(2)支持ICMP 协议;(3)包括试验性扩展的UDP;(4)包括简单的拥塞控制,RTT 估算和快速恢复和快速转发的TCP;(5)提供专门的内部回调接口(Raw API)用于提高应用程序性能;(6)可选择的Berkeley 接口API;3、LwIP 协议栈移植到μC/OS II 操作系统的具体实现3.1 嵌入式系统结构和LwIP 接口整个嵌入式系统的结构如图 1 所示,由ARM 微处理器、网卡、网络设备驱动、μC/OSII 操作系统、LwIP 协议栈和应用程序组成。
图 1 嵌入式系统结构图LwIP 在设计时为了适应不同的操作系统,并没有在代码中使用和某个特定的操作系统相关的系统调用和数据结构,而是在LwIP 和操作系统之间提供了一个接口层(sys_arch interface),该接口主要实现的功能包括数据类型的定义、存储模式的选择、任务间的同步、时间和内存的管理等。
因此,完成LwIP 在μC/OS II 移植,我们就是要通过修改这个接口层来实现。
同时,还要根据自己所要实现的具体目的,可以对LwIP 协议栈进行一定的裁减。
基于_C_OS_和LwIP的嵌入式Web服务器实现

《电气自动化》2011年第33卷第3期嵌入式系统Embedded SystemsElectrical Automation基于μC /OS-Ⅱ和LwIP 的嵌入式Web 服务器实现杨俊吕建平徐峰柳(苏州大学电子信息学院,江苏苏州215006)摘要:采用以ARM Cortex -M3为内核的32位微控制器LPC1768,利用其内置以太网控制器搭建web 服务器。
web 服务器以μC /OS-II 为操作系统,并在其基础上,成功移植了LwIP 协议栈,通过该协议栈,实现了HTTP (超文本传输协议)服务。
文中介绍了该系统的硬件设计和软件开发过程,涉及μC /OS -II 的移植、LwIP 协议栈的总体架构和移植、LwIP 协议栈数据包处理流程、以及网络应用层程序的编写。
关键词:ARM Cortex -M3μC /OS -II LwIP 浏览器[中图分类号]TP332[文献标志码]A [文章编号]1000-3886(2011)03-0062-03Realizing of Embedded Web Server Based onLight Weight Protocal Stack LwIP and μC /OS-ⅡYang JunLu JianpingXu Fengliu(School of Electronics and Information Engineering ,Soochow University ,Su 'z hou Jiangsu 215006,China )Abstract :A 32bit-microcontroller LPC1768based on the core of ARM Cortex-M3was adopted in this server.Its embedded Ethernet controllerwas used to construct a web server with μC /OS-Ⅱas the operating system (OS ).On the basis of μC /OS-Ⅱ,a LwIP protocal stackwas transplanted successfully and HTTP (Hyper Text Ttransfer Protocal )service was realized.The process of hardware designing and software developing was introduced in the paper.Adding to it ,the paper included transplanting of μC /OS-Ⅱ,the general structureand transplanting of LwIP protocal stack ,the handling proceeding of LwIP protocal stack packet ,as well as programming of application layer.Keywords :ARM Cortex-M3μC /OS-ⅡLwIPbroswer收稿日期:2010-11-290引言随着嵌入式系统和单片机技术的发展,嵌入式以太网的设计越来越受关注。
基于LwIP的嵌入式以太网系统的设计与实现

基于LwIP的嵌入式以太网系统的设计与实现作者:胡龙腾田雨来源:《数字技术与应用》2010年第07期[摘要]针对uC/OS-II操作系统没有TCP/IP通信功能,本文给出一种将LwIP协议栈移植到 uC/OS-II的方法,使其具有TCP/IP通信功能,并通过测试,实际应用效果良好。
[关键词]uC/OS-II操作系统 TCP/IP LwIP协议[中图分类号]TP316 [文献标识码]A [文章编号]1007-9416(2010)07-0044-011 LwIP协议栈简介LwIP是瑞士计算机科学院的Adam Dunkels等开发的一套用于嵌入式系统的开放源代码TCP/IP协议栈。
LwIP既可移植到操作系统上。
LwIP实现了较为完备的lP、ICMP、UDP、TCP协议,具有超时时间估计、快速恢复和重发、窗口调整等功能。
还有一个重要的特点就是协议栈只需要几十K的RAM和40K左右的ROM就可以运行,这样我们就可以在一些低端的嵌入式系统中使用LwIP协议栈。
2 uC/OS-II操作系统简介uC/OS-II是一个开源的占先式多任务的实时操作系统。
它的执行时间可确定,内核可剪裁,可移植,可固化,代码量小,这对于嵌入式有限的资源是非常重要的。
它支持x86、ARM、PowerPC、MIPS等众多体系结构,其稳定性和可用性是经过实验验证的,因此被广泛应用于各种嵌入式设备中。
3 LwIP协议栈移植到uC/OS-II操作系统的实现方法整个嵌入式系统主要由ARM微处理器、网卡芯片、网络设备驱动、lwip、uC/OS-II和应用程序组成。
LwIP在设计时就充分考虑了移植的问题,因此把与操作系统、硬件、编译器相关的部分都放在源码的/src/arch目录下,所以我们主要修改这目录里面的文件。
3.1 编写和CPU及编译器相关的头文件这些头文件包括cc.h、cpu.h、perf.h等,在这里都定义了和使用的CPU以及编译器相关的内容,如数据类型,存储模式的选择等。
LwIP协议栈的设计与实现_中文译稿

TCP/IP协议栈LwIP的设计与实现Design and Implementation of the LwIPTCP/IP Stack[瑞典]Adam Dunkels著adam@sics.se翻译 焦海波marsstory99@Swedish Institute of Computer ScienceFebruary 20, 2001摘要LwIP是TCP/IP协议栈的一个实现。
它的目的是减少内存使用率和代码大小,使LwIP适用于资源受限系统比如嵌入式系统。
为了减少处理和内存需求,LwIP使用不需要任何数据复制的经过裁剪的API。
本文描述了LwIP的设计与实现。
描述了在协议栈实现中以及像内存与缓冲管理这样的子系统中使用的算法和数据结构。
本文还包括LwIP的参考手册以及使用LwIP的代码例子。
1简介最近几年,人们对计算机互联以及计算机无线网络支撑设备的兴趣一直不断的增长。
计算机逐渐与日常使用的设备无缝集成在了一起,并且价格一直在下降。
与此同时,无线网络技术比如蓝牙(Bluetooth)[HNI+98]及IEEE 802.11b WLAN[BIG+97]正逐渐的出现在人们的视野中。
这些新技术的出现,在许多诸如卫生保健、安全保密、运输及工业处理等领域提供了一个非常诱人的应用前景。
一些像传感器一类的轻便设备可以连入互联网,以便随时随地进行监控。
在过去的近十年的时间里,互联网技术被证明拥有足够的灵活性以适应不断变化的网络环境。
从原始的ARPNET一类的低速网络发展起来的互联网,发展到今天,在带宽和误码率方面拥有巨大差异的光纤连接技术已经使互联网实现了巨大的跨越。
相当多的以互联网为基础的应用技术被开发出来。
因此,未来的无线网络——使用已经存在的互联网技术成为人们的首选。
同样,互联网在全球范围内的连通性也成为了人们选择它的动机之一。
一些轻便设备,比如在身体上使用的传感器,体积小而且便宜,内部的运算及存储资源有限,因此就必须在资源受限的情况下实现及处理Internet协议。
stm32的lwip的skocet编程

stm32的lwip的skocet编程STM32是一种广泛应用于嵌入式系统开发的微控制器系列,而lwIP (light-weight IP) 是一个轻量级的开源TCP/IP协议栈,具有高度可移植性和灵活性。
在STM32的嵌入式系统中,使用lwIP库进行网络通信是一种常见的选择。
本文将介绍如何使用lwIP的socket编程在STM32上实现网络通信。
我们需要在STM32上配置lwIP库。
lwIP提供了一些示例代码,可以帮助我们快速上手。
我们可以从lwIP的官方网站上下载最新的版本,并解压缩到工程目录中。
然后,在工程的配置文件中引入lwIP 的头文件和源文件,并配置相应的宏定义。
在进行socket编程之前,我们需要先初始化lwIP协议栈。
在main 函数中,我们可以调用lwIP库提供的初始化函数进行初始化。
初始化完成后,我们可以创建一个socket套接字,用于后续的网络通信。
接下来,我们可以使用socket套接字进行网络通信。
在lwIP中,socket套接字使用整数来表示。
我们可以使用lwIP库提供的函数来创建套接字,并指定相应的协议类型,例如TCP或UDP。
创建套接字后,我们可以使用该套接字进行数据的发送和接收。
在进行数据发送时,我们可以使用lwIP库提供的send函数。
该函数可以将数据发送到指定的目标地址和端口号。
在发送数据之前,我们需要先创建一个目标地址结构体,并填写相应的信息。
然后,我们可以调用send函数发送数据。
在进行数据接收时,我们可以使用lwIP库提供的recv函数。
该函数可以从指定的套接字接收数据,并保存到指定的缓冲区中。
在接收数据之前,我们需要先创建一个接收缓冲区,并指定相应的长度。
然后,我们可以调用recv函数接收数据。
除了发送和接收数据外,我们还可以使用lwIP库提供的其他函数来实现更多的功能。
例如,我们可以使用lwIP库提供的gethostbyname函数来获取指定主机名对应的IP地址。
ucos+lwip应用心得

ucos+lwip应用心得UC/OS和lwIP是两个广泛应用于嵌入式系统中的软件库,UC/OS是一种实时操作系统,而lwIP是一种轻量级的TCP/IP协议栈。
在将它们应用到嵌入式系统中时,我得到了一些经验和教训,下面是我总结的一些心得。
首先,对于UC/OS的应用,我发现了以下几点。
首先,UC/OS的任务调度机制相对简单,只有优先级调度,因此在设计任务时要注意任务的优先级设置,以确保高优先级任务能够及时响应。
其次,UC/OS提供了一些常用的同步和通信机制,如信号量、消息队列等,可以有效地实现不同任务之间的协作。
最后,在多任务编程中,要注意避免资源竞争和死锁等问题,可以使用UC/OS提供的互斥锁和事件标志等机制来解决。
对于lwIP的应用,我也有一些心得体会。
首先,lwIP提供了一套完整的TCP/IP协议栈,具有较小的内存占用和较高的性能,适用于嵌入式系统的资源受限环境。
在使用lwIP时,需要根据系统资源的情况进行相应的配置,以减小内存占用并提高性能。
其次,lwIP支持多种网络接口和协议,如以太网、PPP等,可以根据实际需求选择适当的接口和协议。
最后,在使用lwIP时,要注意处理网络异常和错误,如连接断开、超时等情况,可以通过适当设置超时时间和错误处理机制来增加应用的稳定性。
综上所述,UC/OS和lwIP是在嵌入式系统中广泛应用的软件库,它们分别提供了实时操作系统和TCP/IP协议栈的功能。
在使用它们时,需要注意任务调度、资源竞争、网络配置等问题,以提高应用的性能和稳定性。
通过对UC/OS和lwIP的深入理解和实践,可以更好地应用它们到项目中,完成嵌入式系统的开发。
LwIP协议在μC-OS操作系统中的实现

LwIP协议在μC/OS操作系统中的实现引言当今的信息时代,是一个构筑在网络基础之上的时代,互联网已经渗透到人们工作和生活的各个角落。
随着计算机的发展,嵌入式系统已成为计算机领域的一个重要组成部分。
将嵌入式系统与Internet 结合起来,就可以在两者之间实现方便、低廉的信息交流。
但是,目前大多数嵌入式系统的网络功能还十分有限:以MCU 为核心,与一些监测、伺服、指示设备配合实现一定的功能。
在一些工业和汽车应用中,利用CAN、RS-232、RS-485 等总线将MCU 组网,实现多个MCU 之间的信息交流,但这种网络的有效半径比较有限,有关的通信协议也比较少,并且一般是孤立于Internet 以外的,所以局限性较大。
把嵌入式系统连接到Internet 上,已成为嵌入式系统今后发展的一个重要方向,而且也将成为今后嵌入式系统必须具备的功能之一。
嵌入式TCP/IP 协议栈的实现方式目前Internet 上的通信实现方式大都是基于TCP/IP 协议,嵌入式设备要与Internet 网络直接交换信息,就必须支持TCP/IP 协议。
嵌入式系统中TCP/IP 协议栈的实现方式有硬件固化和软件实现两种。
硬件方式是指利用TCP/IP 协议栈的硬件芯片,由它实现协议的转化,从而实现相应的网络功能。
但这样做的缺点是增加了硬件成本,对一些功能单一的嵌入式设备来说是很大的浪费,而且所增加的成本有时是难以接受的。
本文提出了一种软件实现嵌入式系统网络化的方法,通过简化的TCP/IP 协议LwIP 实现嵌入式系统与网络的互联。
单片机要在完成原来控制系统功能的前提下,同时实现网络通信,既要发送又要接收,没有RTOS 操作系统支持简直不可想象,所以将其移植到嵌入式实时操作系统μC/OS中,由操作系统对其进行任务的管理与调度。
LwIP 协议简介LwIP 是Light Weight (轻型)IP 协议,有无操作系统的支持都可以运行。
LwIP 实现的重点是在保持TCP 协议主要功能的基础上减少对RAM 的占用,。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
可编程单芯片系统(system-on-a-programmable-chip,SoPC)是Altera公司于2000年提出的,它综合了SOC和PLD、FPGA各自的优点。
目标是将尽可能大而完整的电子系统在一块FPGA中实现。
近年来,随着PLD器件制造水平、功能复杂的IP核和可重构的嵌入式处理器软核的发展,SoPC正处于高速发展阶段,已成为高效、快速的SOC解决方案之一。
嵌入式Intemet技术已逐步趋于实用化,在工控与信息电器等领域得到了可喜的应用。
据专家预测,今后在Intemet上传输的信息有70%来自小型嵌入式设备,构建基于嵌入式系统的网络平台已成为嵌入式领域的一个重要研究方向。
目前Intemet上的通信方式大都是基于TCP/IP协议,嵌入式设备要与Intemet网络直接交换信息,就必须支持TCP/IP协议。
在当前SoPC技术和嵌入式网络技术飞速发展、日益结合的背景下,将LwIP协议栈引入到SoPC系统中,以支持嵌入式设备接入网络,是适合应用需求的。
LwIP(lightweightIP)即轻型TCP/IP协议栈,一般只需要几十K的RAM 和40K左右的ROM 就可以运行,并实现了较为完备的IP、ICMP、UDP、TCP,DHCP协议。
以SOC的形式基于uC/OS II实现LwIP,并成功应用到实际当中的,已有很多文献进行了报道。
但是,基于SoPC系统的LwIP的实现比较少见。
谢兵森等人主要报道了如何在Altera公司提供的SoPC系统开发环境下设计嵌入式以太网网络终端,偏重于应用。
本文详细阐述LwIP协议栈及其在SoPC系统上的移植原理,在此的基础上基于SoPC系统完成LwIP协议栈的移植。
1 LwIP协议栈实现原理LwIP是瑞士计算机科学院(SCICS)的Adam Dunkels等开发的一套用于嵌入式系统的开放源码的轻型TCP/IP协议栈,LwIP实现了较为完备的IP、ICMP、UDP、TCP、DHCP协议,具有超时时间估计、快速恢复和重发、窗口调整等功能。
LwIP在保持协议主要功能的基础上减少对RAM 和ROM 的占用,一般只需要几十K 的RA M 和40K左右的ROM 就可以运行,很适合同uC/OS II相配合用在嵌入式系统中。
在使用和移植的过程中可根据传输数据的不同需求进行删减和增补。
移植过程主要是针对系统采用的微处理器、编译器、操作系统和网络控制器做相关的移植工作。
本次研究采用lwip-0.6.3版本,经移植优化的LwIP 作为uC/OS II扩展的网络模块运行,为系统提供基本的网络通信功能。
并且在其基础上构造了一个基于TCP的Telnet echo测试服务器,以特定网络应用任务形式运行。
LwIP可移植到操作系统上,也可在无操作系统的情况下独立运行。
本次研究LwIP在uC/OS-II下实现的原理如图1。
图1 LwIP实现的原理系统硬件核心为Stratix1s10的FPGA芯片。
根据开发板的资源和研究要求将FPGA配置成定制的SoPC系统,具体的硬件系统如图2所示。
网络控制器是SMSC公司生产的自适应10M/100M第3代快速以太网控制器LAN91c111,集成了SMSC/CD协议的MAC(媒体层)和PHY(物理层)。
外围设备的驱动和控制接口都有相应的IP核来完成。
系统软件核心为uC/OS-II-2.76,是一个源码开放的适合于小型、微控制器的占先式多任务管理的实时操作系统。
它内核短小精悍、可裁减、执行时间确定。
uC/OS II提供的仅仅只是一个实时的调度及任务间通信的内核,没有集成网络协议。
针对NiosII处理器,首先完成uC/OS-II的移植工作。
2 LwIP实现的硬件平台采用Altera公司的Stratix1s10开发板。
在Altera公司的FPGA集成开发环境QuartusII 4.0和SoPC Builder下构建基于Avalon总线的SoPC系统。
根据研究的需要,在FPGA上定制的SoPC系统硬件映像如图2所示。
图2 SoPC系统的硬件映像SoPC系统的硬件核心是Nios II处理器,Nios II内核有3种配置——快速(Nios II/f)、标准(Nios II/s)和经济型(Nios II/e)。
Nios II是Nios的第2代,是专门针对Altera的可编程逻辑和可编程单芯片系统(SoPC)而设计的软CPU。
此处配置成标准。
jtag-uart是PC机和开发板的连接电缆,功能是下载FPGA配置、软件程序和调试程序。
tri_bridge是Avalon片内总线和片外设备的连接总线。
lan91c111是以太网控制器接口,允许中断。
3 LwIP协议栈的移植移植LwIP协议栈,主要是针对系统所采用的Nios II处理器、GCC编译器、uC/OS-II-2.76和LAN91c111以太网控制器做相关的移植。
3.1 处理器和编译器相关部分的移植LwIP协议栈把所有和硬件,编译器相关的部分独立出来,放在/src/arch下面。
/arch目录下cc.h、cpu.h、perf.h中是与Nios II和GCC相关的定义。
如数据长度、字的高低位顺序等。
这些应与用户实现uC/OS-II时定义的数据长度等参数是一致的。
例如:#define BYTE_ORDER LITTLE_ENDIAN //Nios II默认为小端存储系统一般情况下,C语言的结构体struct是4字节对齐的,但是在处理数据包的时候,LwIP 使用的是通过结构体中不同数据的长度来读取相应的数据的。
所以,一定要在定义struct 的时候使用_packed关键字,让编译器放弃struct的字节对齐。
在Nios II上对应GCC编译器的定义为:#define PACK_STRUCT FIELD(x)x _attribute_ ((packed))#define PACK_STRUCT_STRUCT _auribute_((packed))#define PACK_STRUCT_BEGIN#define PACK_STRUCT_END3.2 改写操作系统有关部分的函数sys_arch.c文件是和操作系统相关的一些结构和函数。
和uC/OS-II的接口函数主要分为5个部分。
(1)信号量:LwIP中需用信号量通信,对信号量的处理函数:sys_sem_t sys_sem_new(u8_t count) //创建一个信号量void sys_sem_free(sys_sem_t sem)//释放并删除一个信号量void sys_sem_signal(sys_sem_t sem)//发送一个信号量u32_t sys_arch_sem_wait(sys_sem_t sem,u32_t timeout))//等待一个信号量由于uC/OS-II已实现了信号量OS_EVENT的各种操作,且功能和LwIP上面几个函数的目的功能是完全一样的,所以只要把uC/OS II的函数重新包装成上面的函数,就可以直接使用。
(2)消息队列:LwIP使用消息队列来缓冲、传递数据报文,对消息队列的处理函数如下:sys_mbox_t sys_mbox_new(void) //创建一个消息队列void sys_mbox_free(sys_mbox_t mbox ) //释放一个消息队列void sys_mbox_post(sys_mbox_t mbox,void *data)//向消息队列发送消息u32_t sys_arch_mbox_fetch(sys_mbox_t mbox,void **msg,u32_t timeout) //从消息队列中获取消息uC/OS II同样实现了消息队列结构及其操作,但是uC/OS II没有对消息队列中的消息进行管理,因此不能直接使用,必须在uC/OS II的基础上重新实现。
(3)等待超时函数:LwIP中每个与外界网络连接的线程都有自己的timeout属性,即等待超时时间。
这个属性表现为每个线程的timeout时间长度,以及超时后应调用的timeout函数,做相应的处理。
用户要实现的函数如下:struct sys_timeouts *sys_arch_timeouts(void);//返回正处于运行状态的线程所对应的timeout 队列指针(4)创建新线程:LwIP可以是单线程运行,也可以多线程运行。
为提高效率并降低编程复杂度,用户需要实现创建新线程的函数:sys_thread_t sys_thread_new(void(*function)(void *arg),void *arg,int prio);在uC/OS II中,没有线程的概念,只有任务。
只要把OSTaskCreate封装一下,就可以实现sys_thread new。
(5)系统初始化:void sys_init(void);//系统初始化3.3 网络控制器的驱动TCP/IP协议栈引入到uC/OS II后,为了实现网络通讯还必须完成相应网络控制器驱动程序的添加。
Stratix1s10开发板所带的网络芯片是由SMSC公司生产的以太网控制器芯片LAN91c111。
驱动程序工作在IP协议模型的网络接口层,它提供给上层(IP层)的接口函数如下:err_t alt_avalon_lan91c111_init(struct netif *netif)//网卡初始化函数void alt_avalon_lan91c111_rx(alt_lwip_dev *dev)//网卡接收函数,由网卡ISR调用err_t alt)avalon)lan91c111_output(struct netif *netif,struct pbuf *p,struct ip_addr *ipaddr)//网卡发送数据函数void alt_avalon_lan91c111_irq(void* context,alt_u32 interrupt)//网卡中断处理函数以上的函数都可以分为协议栈本身的处理和对网络接口硬件的操作两部份,但硬件操作是对上层屏蔽的。
4 实验测试在Altera公司的Nios II IDE 开发环境下以前文建立的SoPC系统硬件为目标硬件建立名为lwip test的软件工程。
同时,开发环境会自动建立名为lwip_test_syslib的工程。
uC/OS II 的初始化在lwip_test_syslib中由系统自动完成,在lwip_test中建立主函数程序框架如下:main(void){……Lwip_stack_init();OSStart();}Lwip_stack_init(int thread_prio,void(*inti_done_func)(void *),void arg)函数初始化LwIP协议栈。