微波EDA网,见证研发工程师的成长!
首页 > 射频和无线通信 > 射频无线通信文库 > 基于VxWorks的全IP开发平台进程通信处理机制

基于VxWorks的全IP开发平台进程通信处理机制

时间:04-23 来源:互联网 点击:

摘要:给出了基于AMCC的NP7250、NPX5700和NPX5800交换套片的全IP交换平台的构建方案,重点介绍了在基于Vxworks的全IP交换平台上的进程通信模块的设计和实现方案。模块主要实现相同处理器内和不同处理器之间进程间通信功能,进程间的通信主要依靠调度任务从邮箱中接收消息,并把消息派发到各个进程的消息队列来实现,底层协议类型包括可靠通信协议(TCP)和不可靠通信协议(UDP)。
关键词:嵌入式操作系统;网络处理器单元;消息队列;Vxworks

引言
随着IP技术的迅速发展,“Everything over IP”的观念已深入人心。众多移动通信设备制造商都致力于基于全IP交换平台之上的3G、4G产品开发,基于全IP构建开放通信体系架构,真正作到核心网和无线网络各个产品的模块化、积木化。将核心网、无线接入网统一考虑,做到技术上的重用、接口上的统一,避免独立开发各模块特别是底层开发可能存在的重复劳动,实现全业务融合,打造一体化的可增值、可扩展的多业务集成通信平台,已成为业界共识。在整个系统设计的过程中,主要的目标在于软件支撑的统一性,这要求相关的硬件系统也需要统一考虑成一个硬件平台的概念。这样将来就可以在统一的软件支撑上开发各种不同的应用业务。

1 全IP开发平台架构
全IP交换平台基于Crossbar的三层交换,可根据系统容量需求和实际应用要求配置。当容量较大时,采用CrossBar+线卡方式实现三层交换方式,具体线卡配置的数目根据实际数据流量以及资源在各个应用实体的利用情况确定。当容量较小时,采用线卡互连提供三层交换。位于全IP交换平台之上的移动通信设备单板需要实现的移动通信功能靠Host(主)CPU完成。本文中的全IP开发平台选用AMCC的NP7250、PX5700和NPX5800交换套片作为硬件基础,主CPU是MPC8260,主CPU上的操作系统是VxWorks。其中,NP7250主要实现级连线卡的作用,完成基本信元/包的转发功能;NPX5700是流量控制芯片,实现对数据流的输入接纳和输出调度功能,是IP开发平台QoS保证的核心,两套NPX5700构成双向10Gbps的处理能力;NPX5800是一种交换网芯片,用于连接NPX5700,实现交换功能。
全IP交换平台系统架构如图1所示,在嵌入式操作系统VxWorks之上还有一个操作系统子系统,该层是VxWorks封装层。嵌入式操作系统封装层的目的之一是对上层应用屏蔽底层硬件、OS、网络的差别,给上层应用软件提供统一规范的调用接口,大大降低了应用软件开发人员的开发难度,也使开发出的应用软件有较好的跨平台性、可移植性、可维护性和代码继承性。封装层一般会对进程管理、内存管理、进程通信等核心功能进行重新定义和优化,以适应特定应用领域的开发需求。

下面以通信类嵌入式设备应用领域为背景来讨论操作系统子系统中的进程通信管理模块设计和实现方案。

2 进程通信模块设计
通信模块为进程之间的通信提供统一的接口。各个处理器都处于一个以太网上,前台单板之间互相可以直达,没有中间路由,前后台之间通过OMP转发。根据通信区域的不同可分为:①相同处理器内同一任务下的进程间通信;②相同处理器内不同任务下的进程间通信;③相同处理器内的任务之间的通信;④相同处理器内的进程到任务的通信;⑤相同处理器内的任务到进程的通信;⑥不同处理器间的进程间通信。
底层协议类型包括可靠通信协议(TCP)和不可靠通信协议(UDP)。对话方式主要采用以下5种:①处理器内广播(内部消息机制);②分布式系统内组播(UDP);③分布式系统内广播(UDP);④多对多通信(UDP),也就是无连接的点对点通信;⑤点对点通信(TCP和内部消息机制)。
2.1 通信处理流程
同一处理器内任务之间通信流程:每个调度任务建立一个邮箱,其他任务也建立自己的邮箱,进程发送到另一个任务的进程的消息首先发送到目的进程所在任务的邮箱中进行缓存,然后由调度任务派发到目的进程的消息队列中;进程到其他类型任务的消息发送到相应任务的邮箱,其他类型的任务之间消息发送到对方邮箱。根据为应用提供的消息类型将任务间消息发送分类。发送异步紧迫消息,将消息发送到任务消息队列的头部;发送异步普通消息,将消息发送到任务消息队列的尾部。
同一任务内的进程通信流程如图2所示,每一个进程拥有一个消息队列,进程向同一任务内进程发送,通过内部接口直接将消息挂到另一个进程的消息队列中。进程向同一任务内进程发送同步应答消息,不通过任务邮箱,目的进程的状态直接改变即可。任务内的进程间通信不能通过任务的邮箱进行转发,这是为了避免在邮箱满的时候任务向自己的邮箱发送消息,导致任务死锁。

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

网站地图

Top