微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 硬件工程师文库 > 基于IP核的PCI总线接口设计与实现

基于IP核的PCI总线接口设计与实现

时间:05-02 来源:互联网 点击:

误。通常,嵌入式系统接收的数据包类型仅为系统状态配置包、控制动作命令包、通信控制包等,这些包容量较小,由实时数据或网页向网络发送的数据包比较长,但可以通过设计格式加以控制。

  和欣操作系统是基于微内核的操作系统, 其上的TCP/IP协议栈既可以运行在用户态,也可以运行在内核态度,具有通用接口和方便的框架,方便用户开发适合自己领域或特殊需要的网络协议栈,因为和欣操作系统提供了高效的进程上下文切换功能和进程间通信,所以整个网络协议栈作为一个用户态进程提供服务。使用前先创建网络构件实例,然后向操作系统注册服务。此后用户就可以使用网络编程接口了,如果用户对网络协议栈有更高的效率要求,则可以将该协议栈加载到内核态。

  2.2 和欣嵌入式操作系统TCP/IP的实现

  根据和欣嵌入式TCP/IP协议堆栈的特点,在实现嵌入式TCP/IP协议栈时只需要用到下述四个基本协议:TCP协议、ICMP协议、IP协议、ARP协议。其余的链路层协议如PPP协议需要在嵌入式TCP/IP协议栈下面的设备驱动程序中实现;而像HTTP、FTP这样的应用层协议则要在嵌入式TCP/IP协议栈上面的应用层中实现。

  2.2.1 地址转化协议ARP

  ARP协议为IP地址和以太网MAC地址建立一个映射表。这个协议对于以太网的TCP/IP协议的操作是必不可少的。为了节省空间,一个IP地址的ARP请求覆盖即将发送的数据包,该ARP请求就是因为要发送这个包而发送的。这种方法在假设上层会重发被覆盖的数据时采用。每隔十秒钟,表就会刷新一次,旧的记录被丢弃,在嵌入式TCP/IP协议栈中,记录的有效时间为1秒。

  2.2.2 网络协议IP

  在嵌入式TCP/IP中,IP协议执行两项功能:(1)封装来自上层的TCP数据包或ICMP数据包,计算IP数据包的检验和;(2)解析IP缓存中的数据包,检查数据包的协议字段,以判断该数据包应该交给ICMP协议还是TCP协议处理。基于嵌入式Web服务器与客户端通信的信息量很小,数据包的大小不会超过链路层的MTU(最大传输单元),嵌入式IP没有引入数据包分片和重组功能,标准的IP协议有选路功能,可以选择较短路径传送数据包,嵌入式IP中为了减少代码规模,未引入选路功能。

  2.2.3 网际控制报文协议ICMP

  在嵌入式TCP/IP协议栈中,只处理一种ICMP消息类型:ICMP回送消息。ICMP回复消息经常被用来调用ping程序测试对方主机是否在线。在嵌入式TCP/IP协议栈中,ICMP回送消息用一种十分简单的方式实现,即将ICMP类型的字段由"echo"类型改变为"echo reply"类型。改变IP首部的IP地址,将数据包送回发送者。

  2.2.4 传输控制协议TCP

  TCP协议是面向连接的、端到端的可靠通信协议。它采用了许多机制保证传输可靠性,应用于嵌入式系统显得过于复杂。在嵌入式TCP/IP协议栈中,为了减少存储空间的占用,没有进入发送和接收数据的可靠窗口机制;通常,嵌入式Web服务器处于被动服务状态,所以可以将标准TCP有线状态机的主动创建连接的SYN SENT状态、主动关闭连接的FIN WAIT1、FIN WAIT2、CLOSING、TIME WAIT状态裁剪。设计中还去掉了LISTENING状态,使它在CLOSED状态下就处于侦听状态,监听客户端的链接请求,这样避免了主动或被动打开及关闭的操作,使嵌入式TCP/IP协议栈更精简,嵌入式TCP/IP中到达TCP段的数据不被缓存,应用程序必须立即处理它。当然,这并不阻止应用层缓存数据。每次连接在发送数据时,无法同时处理多于一个的TCP段,TCP协议的实现原理比较复杂,在嵌入式TCP/IP协议中,实现TCP协议是一个最关键的问题。

  2.2.5 构件化的协议栈

  采用构件化方法实现网络协议栈的关键是:

  (1)如何划分构件的粒度。需要根据用户的需要解决定,如果用户是开发一个新的协议栈,可以采用大粒度的构件划分方式(如图2所示),即把整个网络协议栈作为一个大的构件,继承预先定义的构件。

  

  (2)如何设计构件接口。要实现(1)所提到的构件的自由替换,必须设计良好的构件接口。所有的构件实现应该继承该接口。设计接口的原则是尽量保持接口的通用性和简洁性。当有新的功能添加时,可以通过继承实现新的接口方便地加入原有的框架,从而实现软件的无缝升级。

  (3)提高网络通信的效率。一个高效的通信协议需要满足:1)上下文切换和定时器的轻型完成;2)多个协议具有统一的使用界面;3)在网络设备,核心层和用户层之间有高效的缓冲机制,避免不必要的拷贝。

如果操作系统提供了快捷的上下文切换及高效的进程间的通信,则整个网络协议栈便可以作为一个用户态进程对用户进程提供服务,如果进程上

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top