基于共享内存的END驱动设计与实现

发布者:影子猎人最新更新时间:2012-03-29 来源: 微计算机信息 关键字:END  MUX  VxWorks 手机看文章 扫描二维码
随时随地手机看文章

1 引言

END是嵌入式实时操作系统VxWorks中工作在数据链路层的一种网络驱动模型,该模型定义了与MUX层交互的标准接口,用户只需要根据特定的网络接口硬件特性按要求提供这些接口即可实现END层与网络协议层的通信。END驱动模型的存在,使得VxWorks可以满足嵌入式产品对各种网络接口硬件的适应性和通用性,也使得通过软件模拟的满足END驱动特性的虚拟网络接口成为可能。

在基于总线的分布式多处理器系统中,SM是应用较为广泛的实现多处理器之间的一种通信手段。VxWorks操作系统也提供了对共享内存的支持,通过驻留在主系统或从系统中的共享内存,分别运行在主从系统上的两个任务可以像在单一系统中的两个任务一样进行透明的进程间通信。

基于SM的END驱动,从软件上将共享内存模拟为一个虚拟的网络接口,从而可以提供诸如IP over PCI等功能特性,使得上层的应用程序可以通过CompactPCI总线进行标准的网络通信。

2 END机制分析

VxWorks中的增强型网络驱动END是一个使用MUX功能来与网络协议进行通信的数据链路层驱动模型。MUX是数据链路层与网络层之间的接口, VxWorks提供MUX层以支持数据链路层与网络层的相互独立性。

在VxWorks的这种架构下,网络层协议和数据链路层驱动程序不能直接通信,而必须通过MUX。网络层要调用数据链路层上的驱动程序以发送数据,那么网络协议就需要调用相关的MUX例程,同样链路层上的驱动程序需要访问网络层(IP或其他协议)时,也需要调用相关的MUX例程。图1给出了网络层、 MUX层和驱动层三者之间的接口。

图1 协议层、驱动层与MUX层的接口

END设备需要初始化才能工作。初始化的第一步是向系统注册END设备,接着应该在系统初始化时通过MUX层接口加载END设备,然后可以通过 MUX层接口启动END设备驱动或将网络协议绑定到END设备。在中断模式下时,END层的启动例程在启动设备的同时需要连接中断服务程序,当END设备收到数据包而引起中断时,会调用此中断服务程序进行数据接收工作;另一方面,网络协议也可以通过MUX层接口将它自身绑定到END设备以实现轮询模式的工作方式。

当VxWorks收到由数据到达引起的中断时,它调用由END启动例程注册的中断服务程序。该中断服务程序将数据帧从本地硬件传递到系统缓存,并通过回调函数将此数据缓存传递到MUX层。MUX层接收例程进而调用协议层的接收函数将数据缓存传送到应用程序。

当上层应用程序需要向外发送数据时,通过协议层的接口调用MUX层的发送例程,MUX发送例程通过回调函数将数据缓存传递给END驱动,END驱动进而将要发送的数据缓存复制到设备的发送队列,当设备收到发送数据中断时,中断服务程序调用发送函数将设备发送队列中的数据发送出去。END机制下的数据接收和发送过程分别如图2(a)、2(b)所示。[page]

3 SM END设计与实现

从上面对END驱动工作原理的分析过程中可以看出,在这样一种模型下,END驱动程序和上层协议之间是透明的,它们并不了解彼此的内部信息,而是通过MUX层这个接口来进行间接地通信。保持这种透明性最大的好处是便于移植,可以很容易地增加一些新的END驱动程序或协议而能够保持透明的通信。正是基于这一点,本文基于一种共享内存机制,将共享内存作为一种虚拟网络设备,设计了基于共享内存的END驱动。基于共享内存的END驱动不再利用物理网络设备的中断服务程序进行数据的收发,而是直接使用底层共享内存机制的收发例程完成数据的收发,从而实现主从系统之间的网络通信方式。

具体来看,SM END模型可以分为三部分,初始化、加载与启动。SM END的初始化与标准END的初始化步骤相同,具体方法在稍后的实现部分说明。加载SM END设备,即向系统注册SM END驱动模块,也与标准END的加载过程相同。启动部分有区别,因为共享内存并不是真实的物理网络设备,因此它不能像物理设备那样通过中断触发数据的收发。本文利用底层的共享内存驱动机制实现数据的接收,即在启动SM END驱动时向底层的共享内存驱动模块先注册一个回调函数(SmEndCallBack()函数),底层的共享内存驱动收到数据后,再调用此前SM END向其注册的回调函数,进行数据的接收处理。在发送数据时,SM END驱动可以直接调用SM驱动的发送例程进行数据发送。基于SM END的数据收发流程如图2(c)、2(d)所示。

图2 数据接收和发送流程

需要指出的是,本文所提出的SM END模型是独立于底层具体的共享内存机制的,这样,在编码实现SM END驱动时,只需要调用底层具体的共享内存机制向上提供的发送和接收接口函数就能实现不同共享内存机制下的SM END驱动。

SM END的实现上,需要完成两部分任务,一部分为SM END设备的初始化,一部分为SM END需要提供的接口函数。SM END设备的初始化部分,只需要在VxWorks提供的框架下进行简单的操作即可,具体来讲有两步工作要做:第一,在系统中添加END机制模块,即在 BSP目录的config.h文件中增加宏INCLUDE_END;第二,向系统注册SM END设备,即在BSP目录的configNet.h文件的全局变量endDevTbl中增加SM END设备对应项。

SM END驱动需要提供的接口函数必须与标准END驱动接口函数一致,表1列出了SM END驱动所提供的全部接口函数。其中,SmEndLoad()函数完成向系统加载SM END驱动模块的功能,具体来说,它需要创建并初始化SM END数据结构,并为SM END驱动模块分配内存以缓存发送和接收的数据包。SmEndStart()函数启动SM END设备,内部实现是向底层的共享内存驱动模块注册回调函数,当共享内存驱动收到数据后再调用此回调函数进行数据包的接收。SmEndSend()函数通过调用SM模块的发送例程实现END层的数据发送功能。SM END驱动必须能够支持多播,SmEndMCastAdd()、SmEndMCastDel()和SmEndMCastGet()实现SM END设备对多播的支持。此外,SM END驱动还提供对数据包的操纵函数和I/O控制等等支持。

表1 SM END驱动的接口函数列表

4 结束语

本文在详细分析了VxWorks中END驱动工作原理的基础上,结合实际需要,提出了基于共享内存的END驱动模型,该SM END驱动模型独立于具体的共享内存机制,在一种共享内存机制下实现了SM END驱动。本文提出的SM END驱动模型为分布式多处理器系统间提供了一种通过CompactPCI总线而进行网络通信的方式,使得系统两侧的上层网络应用程序可以通过标准网络接口与对侧系统进行透明的网络通信。

本文作者创新点:提出并实现了基于共享内存的END驱动模型,使得分布式多处理器系统间可以通过CompactPCI总线进行标准的网络通信。

参考文献:

[1] Wind River Systems, Inc. VxWorks Network Protocol Toolkit Programmer’s Guide, 5.4, 2001.

[2] Wind River Systems, Inc. Tornado Device Driver Workshop, 1999.

[3] 吕佳彦等, VxWorks增强型网络驱动程序(END)的分析与实现, 计算机应用研究, 2005, 22(4): 200-202.

[4] 曹小白等, 基于MPC8260的ATM驱动开发, 微计算机信息, 2005, 21(5): 90-91.

[5] 周启平, 张杨编, VxWorks下设备驱动程序及BSP开发指南, 中国电力出版社, 2004.

关键字:END  MUX  VxWorks 引用地址:基于共享内存的END驱动设计与实现

上一篇:在和欣操作系统上实明的 WEB SERVICE组件
下一篇:Linux可加载内核模块机制的研究与应用

推荐阅读最新更新时间:2024-05-02 21:59

基于VxWorks的网络接口设计
VxWorks操作系统以其高度的可靠性、优秀的实时性、灵活的可裁减性等优势在嵌入式系统中备受关注,广泛应用于许多行业;而随着网络技术的发展,嵌入式技术与网络技术的结合已成必然。VxWorks是最早在其内核中加入TCP/IP协议的嵌入式实时操作系统。如何设计基于VxWorks的网络接口,是摆在嵌入式开发人员面前的首要课题。本设计以三星公司的ARM7(S3C44B0)为核心CPU,开发了VxWorks下的网络接口,包括硬件设计和软件实现两个部分。 1 硬件设计 核心CPU采用三星公司的S3C44B0。S3C44B0采用ARM7TDMI内核,它通过提供全面的、通用的片上外设,大大减少了系统电路除处理器以外的元器件配置,降低了系统成本
[应用]
风河宣布对于未来机载性能环境(FACE™)联合体的承诺
【新闻摘要】 • 风河就FACE技术标准的发布向FACE联合体的成员表示祝贺。 • 作为FACE联合体的主要成员,风河公司继续保持其在航空电子领域的领先地位,并活跃于FACE 联合体的运作、技术以及业务委员会。 • 风河提供各种不同的平台,支持FACE Profile规范,包括VxWorks、 VxWorks 653、VxWorks MILS以及Wind River Linux,满足FACE日新月异的需求。 全球领先的嵌入式和移动软件提供商风河公司今日宣布其对于开放群组(The Open Group)未来机载性能环境(FACE,Future Airborne Capability Environment)联合体的承诺,并就FAC
[嵌入式]
基于PowerPC的单板计算机的设计
1 引言       随着科学技术的发展,嵌入式处理器在通信设备、消费电子、军用电子等领域有了广泛的应用,而且对处理器的处理速度、功耗及工作温度都有了更加严格的要求,尤其在汽车电子、军用电子等方面的应用。       PowerPC 体系结构是一种精简指令集计算机(Reduced Instruction Set Computer,RISC)体系结构,具有高性能和低功耗的特点,主要应用在嵌入式系统中,可以作为单板计算机,进行高性能计算和图像处理。       在PowerPC 家族中,现在应用最为广泛的是G4 系列, G4 对G3 的重大改进有两个,第一是支持对称多处理器(SMP)结构,第二是G4 引入了一流的AltiVec 技
[嵌入式]
基于VxWorks的油井数据采集远程终端的设计
    引 言   目前,采油厂多以抽油机采油生产为主要任务,抽油机的分布点多面广,工作在条件恶劣的环境中,容易损坏和遭外力破坏,需要经常巡测,人员工作强度大。目前油井工作状态参数监控由于缺乏远程手段,对油井的生产状况均处于事后处理状态,油井出现异常或被盗破坏时不能及时处理,造成大量不明损失。基于CD-MA通迅信道的远程终端(Remote Terminal Unit,RTU)充分利用现有的计算机网络,通过对现场的监测和数据采集、传输,可以满足油井远程监控的需求。该远程终端可以对油井运行时的负荷、位移、油管回压、温度、冲次、工作电流、电压等参数进行实时全自动在线抄收;当现场有异常情况发生时,监控中心能自动发出相关报警信息,调度室可根
[单片机]
基于<font color='red'>VxWorks</font>的油井数据采集远程终端的设计
VxWorks及其选件介绍
VxWorks及其选件介绍 VxWorks是WindRiver公司开发的具有工业领导地位的高性能实时操作系统内核,具有先进的网络功能。 VxWorks的开放式结构和对工业标准的支持,使得开发人员易于设计高效的嵌入式系统,并可以很小的工作量移植到其它不同的处理器上。 可裁剪微内核结构。 高效的任务管理: 多任务,具有256个优先级。 具有优先级排队和循环调度。 快速的、确定性的上下文切换。 灵活的任务间通讯: 三种信号灯:二进制、计数、有优先级继承特性的互斥信号灯。 消息队列。 套接字(Socket)。 共享内存。 信号(Signals) 微秒级的中断处理。 支持POSIX 1003.1b实时扩展标准。 支持多种物理介质及标准的、完
[嵌入式]
SM6841在汽车压力传感器领域的应用
汽车传感器是汽车电子化、智能化的基础和关键。在汽车传感器上使用最多,发展最快的是压力传 感器。汽车压力传感器有很多种,比如空气压力传感器主要用于测量进气、增压涡轮后端以及进气歧管内空气压力;胎压传感器主要测量轮胎内气压;缸压传感器主 要测量气缸内压力;差压传感器主要测量尾气颗粒捕捉器两端压力差;刹车压力传感器主要测量刹车液压或气压压力。这些压力传感器均可以通过以SMI压力传感器为核心设计研发而成。本文阐述了SM6841特点、参数、电气连接、应用范围等。 1、SM6841压力传感器介绍 SM6841压力传感器的适用压强范围为103、207、414和690kPa。包括引线的小型封装SOIC-8尺寸为5*6平方毫米,可为受到挑战的空间
[嵌入式]
VxWorks网络协议栈的MUX接口
    摘要: 嵌入式系统网络协议栈的灵活性在应用上是一个重要指标。介绍嵌入式实操作系统VxWorks网络协议栈的MUX(Mutiplexer)接口及其使用方法。     关键词: VxWorks 网络协议栈 MUX VxWorks是美国Wind River System公司(风河公司)推出的一个运行在目标机上的高性能、可裁减的嵌入式实时操作系统。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通信、军事演习、弹道制导、飞机导航等。VxWorks操作系统包括进程管理、存储管理、设备管理、文件系统管理、网络协议及系统应用等几个部分。VxWorks只占
[网络通信]
骁龙8 Gen1后,骁龙SM8475曝光:台积电4nm工艺
此前爆料称,高通SM8450不再称作骁龙898,而是会命名为骁龙8 gen1,而联发科已经将“天玑2000”芯片更名,正式发布了天玑9000。 日前,数码博主 @数码闲聊站 称,l1如果真归到真旗舰系列,从排期看是赶不上SM8475的,而且目前测的也还是 SM8450芯片。 这里可能是表示,小米12 Ultra (l1) 如果归到 MIX 5系列,从发布的排期看赶不上台积电版的 SM8475,目前测试的是三星的 SM8450。 此前有博主称,今年大家是买不到联发科天玑9000的手机的,最早也明年2月左右,虽然是第一个发布的 armv9架构芯片,但不是第一个出货的,骁龙8 Gen1还是快。预计高通 SM8450升级版 SM
[手机便携]
骁龙8 Gen1后,骁龙<font color='red'>SM</font>8475曝光:台积电4nm工艺
小广播
最新嵌入式文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved