基于IP核的PCI总线接口设计与实现
嵌入式Internet是随着嵌入式系统的广泛应用和计算机网络技术的发展而产生的一种新概念和技术,嵌入式系统以应用为中心,以计算机技术为基础,且软硬件可裁剪,现已赢得了巨大的市场。随着Internet的发展,各种设备都产生了连接性的需求,从冰箱到电表,似乎所有电器需要连入互联网。通过为现有嵌入式系统增加因特网接入能力来扩展其功能,以Internet为介质实现信息交互,从而产生了嵌入式Internet技术,要实现嵌入式设备的网络化,需要实现TCP/IP网络协议栈,但由于Internet上各种通信协议对计算机存储器、运算速度等的要求比较高,使得嵌入式系统协议栈的开发实现并不顺利。
目前过两个关键因素影响网络协议栈的开发,一是性能和效率,二是开发调试方便。传统的操作系统一般只能顾及其中的一个方面。例如在Linux、FreeBSD中,网络协议栈作为系统内核的一部分实现,通常具有较高的通信效率,但是不方便用户添加实现新的用户协议及根据特殊需要对协议的实现细节调整,同时对协议代码的维护、调试和开发也不方便,这个缺点在嵌入式领域表现的尤为突出。
由于嵌入式设备的多样性和通信需求的多样性,嵌入式领域的网络协议栈的复用率非常低。本文将构件技术引入网络协议栈的开发,并在国产和欣操作系统上实现了一个构件化的网络协议栈,很好地解决了开发与效率的问题。
1 和欣嵌入式操作系统的CAR构件技术
1.1 和欣嵌入式操作系统
和欣操作系统基于微内核,服务动态加载。内核包括硬件驱动(串口、USB、以太网卡、无线通信模块)、内存管理等系统基本服务,如图1所示。TCP/IP协议栈完全由构件实现,是运行在构件平台之上的一个服务构件,底层网卡、串口等设备得到数据之后将数据交上层服务构件处理。
和欣嵌入式操作系统是基于构件化软件模型,构件化软件设计思想贯穿了整个系统的设计与实现,系统实现本身就是构件模式,除内核中最底层控制部分外,所有系统功能都以构件接口形式提供。另外,操作系统对构件化软件模型提供了必要的运行环境,来源不同的构件可以在该环境上实现互操作,系统提供了构件自动寻址/自动加载机制,用户不必知道调用的构件程序是本地的还是来自于网上,即构件运行环境对用户透明。构件化系统的实现,使得操作系统本身具有高度的灵活性和扩展性。和欣采用了CAR构件技术。
1.2 CAR构件技术
CAR构件技术是在总结面向对象编程、面向构件编程技术的发展历史和经验的基础上,为更好地支持面向以Web服务为代表的下一带网络应用软件开发而发明的。CAR(Component Assembly Runtime)构件技术定义了一套网络编程时代的构件编程模型和编程规范,它规定了一组构件间相互调用的标准,使二进制构件可自描述并能够在运行时动态链接。
CAR构件技术通过二进制的封装及动态链接技术解决软件的动态升级和软件的动态替换问题,面向构件技术对一组类的组合进行封装,并代表完成一个或多个功能的特定服务,同时为用户提供多个接口。整个构件隐藏了具体的实现,只用接口提供服务。这样,在不同层次上,构件均可以将底层多个逻辑组合成高层次上粒度更大的新构件,构件之间通过约定的接口进行数据交换和信息传递,构件的位置相互透明,可以在同一个或不同的用户进程空间、不同的机器设置不同的构件上用不同的语言编写,只要其符合事先约定的构件规范。
2 和欣操作系统上的TCP/IP协议栈的特点与实现
2.1 和欣嵌入式操作系统上TCP/IP协议栈的特点
由于嵌入式系统在硬件资源的占有量以及处理器的处理能力等方面的限制,使得TCP/IP协议的嵌入式实现与其在通用操作系统中的实现有很大不同。首先,由于嵌入式处理器的时钟频率低,地址、数据总线窄,导致嵌入式系统对一个通用IP包的处理要花费更多的处理机时间,从而影响其他任务的执行,因此需要对庞大的复杂的TCP/IP协议栈进行裁剪,使之具有简单、高效的特点同时在设计嵌入式TCP/IP协议栈时要合理控制中断处理程序的大小,使得中断处理程序的运行时候尽可能短;同时把那些无实时性要求和费时的工作移到主程序中执行,从而保证协议的正确执行,具体来说,就是把TCP/IP协议的处理工作放到主程序中对网络接口的控制芯片采用循环查询方式,在其他中断任务的执行间隙处理TCP/IP协议,以牺牲系统的响应时间换取系统的可靠性,再者由于嵌入式的系统的存储空间有限,一般情况下只能开辟几KB字节的缓存区接收数据包,并且其存储空间固定,不是动态分配的。因此,遇到大数据包时就会出现缓冲区溢出的错
- CPCI总线的分布式系统设计应用(06-02)
- 工控机在IC卡加油工程中的应用(05-13)
- 基于PCI-9846武器数据链测试技术的研究及实现(11-26)
- PCI总线接口技术及其在高速数据采集系统中的应用(11-08)
- 基于PCIe的WarpDrive SLP-300加速卡(10-23)
- 一种高速PCI数据采集卡设计方案(03-24)