基于ARM和eCos的嵌入式WEB服务器设计

时间:2012-12-04来源:网络

  4.1 IP处理

  LwIP仅能实现IP层大部分基本功能。它虽然能够发送、接收以及转发信息包,但不能接收和发送IP分片包,也不能处理携带IP参数选项的信息包。不过对大多数的应用来说,这不会成为问题。

  ①接收信息包。对于到达的IP信息包,可由网络设备驱动调用ip_input()函数开始处理,并在这里完成对IP版本字段及包头长度的初始完整性检查,同时还要计算和验证包头校验和。

  ②发送信息包。外发的信息包由ip_output()函数处理,该函数使用ip_route()函数查找适当的网络接口来传送信息包。当外发的网络接口确定后,信息包传给以外发网络接口为参数的ip_output_if()函数。

  ③转发信息包。如果没有网络接口的地址与到达信息包的目标地址相同,信息包应被转发。这项工作由ip_ forward()函数完成。

  ④ICMP处理。ICMP处理相当简单。ip_input()函数收到的ICMP信息包被移交给icmp_input()函数,后者对ICMP包头解码,然后进行适当的动作。

  4.2 UDP处理

  UDP是被用来在不同进程问分解信息包的简单协议。每个UDP会话的状态保存在一个PCB结构体中。UDP PCB保存在一个链表中,当一个UDP数据包到达时对这个链表进行匹配检索。

  4.3 TCP处理

  TCP属于传输层协议,它为应用层提供了可靠的字节流服务。对它的描述要比对其他协议的描述复杂的多,其代码占了LwIP代码总量的50%。基本的TCP处理过程被分割为6个功能函数来实现,tcp_input()、tep_ process()及tcp_receive()函数与TCP输入有关,tcp_write()、tcp_enqueue()及tcp_output()则用于TCP输出。TCP的处理过程如图5所示。

  


  4.4 应用程序接口设计

  LwIP API专为LwIP设计,所以它可以充分利用LwIP的内部结构实现其设计目标。LwIP API与BSDAPI类似,但操作相对低级。API不需要在应用程序和协议栈之间复制数据,因为应用程序可以巧妙地直接处理内部缓冲区。另外,BSD Socket API易于理解,并且很多应用程序为它而写,所以LwIP保留一个BSD Socket兼容层是很有用的。

  鉴于TCP/IP协议栈的处理模式,APl分成两部分实现。如图6所示,一部分作为应用程序的连接库实现,另一部分在TCP/IP进程内实现。这两部分之间采用由操作系统模拟层提供的进程间通信机制(IPC)进行通信。当前的实现采用以下3种IPC方式:共享内存、消息传递和信号量。虽然这些IPC方式被操作系统支持,但它们并不需要操作系统底层支持,实际上是操作系统模拟层在模拟它们。


  结 语

  基于实时内核eCos,在嵌入式系统中实现了LwIP协议栈的移植与优化。移植优化后的LwIP栈做为一个网络模块运行,代码占用40 KB的ROM,实现了Ethernet/IP/TCP网络功能,并提供了模块API,与系统实现无缝连接。基于LwIP的网络应用任务与其他非网络应用任务在eGos实时内核管理下协调运行。进一步增强了协议栈的网络安全性与稳定性,并开发相应的的网络应用程序。“eCos/LwIP协议栈”架构有望应用在信息家电和网络化的仪器、仪表方面。

参考文献:

[1].LPC2210datasheethttp://www.dzsc.com/datasheet/LPC2210_454566.html.
[2].ARM7TDMIdatasheethttp://www.dzsc.com/datasheet/ARM7TDMI_139812.html.
[3].EMCdatasheethttp://www.dzsc.com/datasheet/EMC_2342312.html.
[4].RTL8019ASdatasheethttp://www.dzsc.com/datasheet/RTL8019AS_1096173.html.
[5].HR901170Adatasheethttp://www.dzsc.com/datasheet/HR901170A_1098413.html.
[6].ROMdatasheethttp://www.dzsc.com/datasheet/ROM_1188413.html.
[7].PCBdatasheethttp://www.dzsc.com/datasheet/PCB_1201640.html.

1 2 3

关键词: ARM eCos WEB服务器

加入微信
获取电子行业最新资讯
搜索微信公众号:EEPW

或用微信扫描左侧二维码

相关文章

查看电脑版