一种基于龙芯平台的通信控制框架的制作方法

文档序号:12595766阅读:173来源:国知局
一种基于龙芯平台的通信控制框架的制作方法与工艺

本发明涉及龙芯通信领域,具体涉及一种基于龙芯平台的通信控制框架。



背景技术:

龙芯是中国科学院计算技术研究所设计的通用CPU,采用MIPS精简指令集架构,获得了MIPS科技公司专利授权。龙芯1号的频率为266MHz,最早在2002年开始使用。龙芯2号的频率最高为1GHz。龙芯3A是首款国产商用4核处理器,其工作频率为900MHz~1GHz。龙芯3A的峰值计算能力达到16GFLOPS。龙芯3B是首款国产商用8核处理器,主频达到1GHz,支持向量运算加速,峰值计算能力达到128GFLOPS,具有很高的性能功耗比。

目前业界有许多优秀的开源和非开源的技术框架,如MFC、.NET、Poco、Boost、struct、hibernate等;或者针对特定业务的开发软件框架,但这些框架都是针对某一领域特定方面或者是定位于基础工具框架类的,而无法做到在数据通信领域很好的支持代码重用和业务开发,特别是急需一种基于龙芯平台的通信控制框架。



技术实现要素:

本发明的目的在于克服现有技术存在的以上问题,提供一种基于龙芯平台的通信控制框架,用于支撑数据通信领域的业务开发,极大的提高软件开发效率。

为实现上述技术目的,达到上述技术效果,本发明通过以下技术方案实现:

一种基于龙芯平台的通信控制框架,包括基于龙芯的操作系统与硬件的通信控制架构;所述的通信控制架构包括接口封装层、驱动层、公共框架层、协议分发层、业务层;所述的公共框架层管理通信响应与处理指令机制;所述的业务层响应所述的公共框架层指令;所述的业务层与所述的公共框架层通过所述的协议分发层进行双向数据交互;所述的接口封装层分别对所述的公共框架层、协议分发层、业务层提供API接口;所述的接口封装层接收所述的公共框架层、协议分发层、业务层传输的数据;所述的公共框架层、协议分发层、业务层接收所述的接口封装层传输源于所述的基于龙芯的操作系统与硬件中的数据;所述的驱动层为所述的业务层提供驱动支持。

进一步的,所述的公共框架层包括模块管理;所述的模块管理采用模块进程唯一接口;所述的模块管理包括模块启动管理、模块状态监测;所述的模块启动管理采用分级管理机制;所述的模块启动管理处理模块顺序启动;所述的模块状态监测定时监测模块进程状态。

进一步的,所述的模块启动管理包括获取模块信息、模块控制块结构体类型定义、存储模块控制块信息、模块信息填写、分级运行模块。

进一步的,所述的模块状态监测包括获取被监测模块信息、创建监测任务、发送测试激活消息、启动定时、判断被监测模块状态、重启模块。

进一步的,所述的公共框架层还包括基本数据结构封装;所述的基本数据结构封装包括链表clink封装、哈希表chash封装、树ctree封装。

进一步的,所述的公共框架层还包括日志管理;所述的日志管理包括日志分级打印、日志文件存储、日志文件备份。

进一步的,所述的公共框架层还包括配置管理;所述的配置管理采用json开源组件,所述的json开源组件读取本地的json格式配置文件并保存配置数据。

进一步的,所述的公共框架层还包括第三方库;所述的第三方库为配置管理提供支持;所述的通信控制框架支持第三方库扩展。

进一步的,所述的协议分发层包括消息分发机制、事件分发机制;所述的消息分发机制为一对一分发;所述的事件分发机制为一对多分发。

进一步的,所述的接口封装层封装有进程内/进程间IPC通信接口、多任务管理接口、定时管理接口、时间管理接口、统一数据类型;所述的业务层包括应用层与网管服务;所述的驱动层与所述的网管服务双向通信,所述的应用层与所述的网管服务双向通信;所述的应用层与所述的驱动层通过所述的网管服务双向交互。

本发明的有益效果:本发明提供一种基于龙芯平台的通信控制框架,包括基于龙芯的操作系统与硬件的通信控制架构;所述的通信控制架构包括接口封装层、驱动层、公共框架层、协议分发层、业务层;所述的公共框架层管理通信响应与处理指令机制;所述的业务层响应所述的公共框架层指令;所述的业务层与所述的公共框架层通过所述的协议分发层进行双向数据交互;所述的接口封装层分别对所述的公共框架层、协议分发层、业务层提供API接口;所述的接口封装层接收所述的公共框架层、协议分发层、业务层传输的数据;所述的公共框架层、协议分发层、业务层接收所述的接口封装层传输源于所述的基于龙芯的操作系统与硬件中的数据;所述的驱动层为所述的业务层提供驱动支持。与现有技术相比,本发明的优点如下:

1)模块化、低耦合,框架采用模块化设计,模块之间统一通过消息机制通信,低耦合特点也提高了系统的可扩展性;

2)支持跨平台,通过宏将各种系统独立的API隔离起来,形成对上统一的接口,支持Linux/Windows/Vxworks操作系统;

3)可调试性,框架提供了包括基于log4cplus第三方库的日志功能和调试手段,提高了问题定位的效率;

4)提供各种基础服务和接口,如socket套接字、命名管道等IPC进程间通讯机制;同时还封装有基本数据结构、定时器。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,并可依照说明书的内容予以实施,以下以本发明的较佳实施例并配合附图详细说明如后。本发明的具体实施方式由以下实施例及其附图详细给出。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是本发明的一种基于龙芯平台的通信控制框架示意图;

图2是本发明的一种基于龙芯平台的通信模块监测逻辑图;

图3是本发明的一种基于龙芯平台的通信模块监测流程图;

图4是本发明的一种基于龙芯平台的通信模块监测状态判断流程图;

图5是本发明的一种基于龙芯平台的通信消息分发机制示意图;

图6是本发明的一种基于龙芯平台的通信事件分发机制示意图。

具体实施方式

下面将参考附图并结合实施例,来详细说明本发明。

参照图1-6所示,一种基于龙芯平台的通信控制框架及其系统,包括基于龙芯的操作系统与硬件的通信控制架构;如图1所示,所述的通信控制架构包括接口封装层、驱动层、公共框架层、协议分发层、业务层;所述的公共框架层管理通信响应与处理指令机制;所述的业务层响应所述的公共框架层指令;所述的业务层与所述的公共框架层通过所述的协议分发层进行双向数据交互;所述的接口封装层分别对所述的公共框架层、协议分发层、业务层提供API接口;所述的接口封装层接收所述的公共框架层、协议分发层、业务层传输的数据;所述的公共框架层、协议分发层、业务层接收所述的接口封装层传输源于所述的基于龙芯的操作系统与硬件中的数据;所述的驱动层为所述的业务层提供驱动支持。接口封装层对上提供了调用的API接口,既接收上层下发的数据,也会将底层数据通过回调函数等方式通知到上层应用。所述的公共框架层还包括配置管理;所述的配置管理采用json开源组件,所述的json开源组件读取本地的json格式配置文件并保存配置数据。优选地,所述的公共框架层还包括第三方库;所述的第三方库为配置管理提供支持,所述的通信控制框架支持第三方库扩展。

进一步的,所述的公共框架层包括模块管理;确保模块进程在全局中的唯一性,所述的模块管理采用模块进程唯一接口;所述的模块管理包括模块启动管理、模块状态监测;所述的模块启动管理采用分级管理机制;所述的模块启动管理处理模块顺序启动;所述的模块状态监测定时监测模块进程状态。

进一步的,所述的模块启动管理包括获取模块信息、模块控制块结构体类型定义、存储模块控制块信息、模块信息填写、分级运行模块。

获取模块信息:包括获取模块的ID、模块名称、入口函数、入口函数名称。上述信息将为模块的建立、运行提供依据。

模块控制块结构体类型定义:定义模块控制块结构体类型,用于管理模块描述信息、状态信息等。模块表中的每一表项都是一个模块控制块结构结点。模块控制块结构体类型定义采用宏定义,具体宏定义如下:

存储模块控制块信息:存储所有模块控制块信息,通过定义一个全局数组来存储系统所有模块的信息,全局数组定义如下:

static mm_module_t gs_module[MDL_MAX_MODULE_NUM];

模块信息的填写:在mm_read_cfg()内部函数中,为所有需要运行的模块填写模块信息。

分级运行模块:按照0~8分级启动,0级最先启动,以此类推;为解决启动时模块之间依赖问题,将启动分为八个等级。按系统启动顺序需求,依次启动各模块。

进一步的,所述的模块状态监测包括获取被监测模块信息、创建监测任务、发送测试激活消息、启动定时、判断被监测模块状态、重启模块。如关键模块运行过程中进入不能提供服务的状态(模块挂死),简单起见,模块管理可以选择重启系统。由于模块状态监测是基于模块中的任务,考虑到一个模块可功能存在多个任务,因此要求应用模块在启动后,需要为自身管理的任务向模块状态监测进行注册。如图2、图3所示,模块状态监测的实现,通过启动一个独立的任务,新建一个接收消息队列,向被监测模块发送测试激活消息。监测任务发送完激活消息ACTIVITY_TEST后,立即启动一个定时器,当定时器超时,将调用回调函数读取接收消息队列中所有消息,如所有被测试模块均在规定时间内回复了响应激活消息ACTIVITY_OK,则表明系统正常;若接收消息队列中缺失相应的被监测模块响应消息,模块监测任务将采取相应的处理措施,即重启系统。监测作为一个独立的任务,与被监测模块一样,具备模块的一般特性,如启动函数、模块ID、模块名称等,所以监测模块与被监测模块间的心跳与回复消息通讯就可以使用消息分发机制完成。

如图4所示,为模块监测状态判断流程图,定时器回调函数用于验证被监测模块是否存活,当收到模块响应消息后,建立新的定时器,在指定时间内再次向模块发送激活测试消息;当未收到模块响应消息时,表明被测试模块可能出现故障,回调函数应完成系统重启功能。重发定时器超时后,回调函数向所有模块重发激活消息,之后关闭重发定时器,并启动一个新的激活定时器。

进一步的,所述的公共框架层还包括基本数据结构封装;所述的基本数据结构封装包括链表clink封装、哈希表chash封装、树ctree封装。

如哈希表chash封装中,通过直接定址法、质数取余法、平方取中法、折叠法构建哈希函数,尽可能地使任意一组关键字的哈希地址均匀地分布在整个地址空间中,即用任意关键字作为哈希函数的自变量其计算结果随机分布,以便减少冲突的发生可能性。并通过开放定址法、链地址法、再哈希法、溢出区法解决冲突

开放定址法,当发生冲突时,在冲突位置的前后附近寻找可以存放记录的空闲单元。用此法解决冲突,要产生一个探测序列,沿着此序列去寻找可以存放记录的空闲单元。最简单的探测序列产生方法是进行线性探测,即当发生冲突时,从发生冲突的存储位置的下一个存储位置开始依次顺序探测空闲单元。

链地址法,将所有关键字是同义词的记录链接成一个线性链表,将其链头链接在由哈希函数确定的哈希地址所指示的存储单元中。

再哈希法,当发生冲突时,用另一个哈希函数再计算另一个哈希地址,如果再发生冲突,再使用另一个哈希函数,直至不发生冲突为止。这种方法要求预先要设置一个哈希函数的序列。

溢出区法,除基本的存储区外(称为基本表),另外建立一个公共溢出区(称为溢出表),当发生冲突时,记录可以存入这个公共溢出区。

哈希表的查找过程与哈希表的构造过程基本一致,对于给定的关键字值k,按照建表时设定的哈希函数求得哈希地址;若哈希地址所指位置已有记录,并且其关键字值不等于给定值k,则根据建表时设定的冲突处理方法求得同义词的下一地址,直到求得的哈希地址所指位置为空闲或其中记录的关键字值等于给定值k为止;如果求得的哈希地址对应的内存空间为空闲,则查找失败;如果求得的哈希地址对应的内存空间中的记录关键字值等于给定值k,则查找成功。

上述查找过程可以描述如下:

(1)计算出给定关键字值对应的哈希地址addr=H(k);

(2)while((addr中不空)&&(addr中关键字值!=k))按冲突处理方法求得下一地址addr;

(3)如果(addr中为空),则查找失败,返回失败信息;

(4)否则查找成功,并返回地址addr;

在处理冲突方法相同的哈希表中,其平均查找时间,还依赖于哈希表的装填因子,哈希表的装填因子为:α=表中填入的记录数/哈希表的长度,装填因子越小,表中填入的记录就越少,发生冲突的可能性就会小,反之,表中已填入的记录越多,再填充记录时,发生冲突的可能性就越大,则查找时进行关键字的比较次数就越多。

树ctree的封装中,树是n(n≥0)个节点的有限集合。若n=0,则称为空树;否则,有且仅有一个特定的节点被称为根,当n>1时,其余节点被分成m(m>0)个互不相交的子集T1,T2,...,Tm,每个子集又是一棵树。由此可以看出,树的定义是递归。节点,数据元素的内容及其指向其子树根的分支统称为节点。

节点的度,节点的分支数。

终端节点(叶子),度为0的节点。

非终端节点,度不为0的节点。

节点的层次,树中根节点的层次为1,根节点子树的根为第2层,以此类推。

树的度,树中所有节点度的最大值。

树的深度,树中所有节点层次的最大值。

有序树、无序树,如果树中每棵子树从左向右的排列拥有一定的顺序,不得互换,则称为有序树,否则称为无序树。

森林,是m(m≥0)棵互不相交的树的集合。

在树结构中,节点之间的关系又可以用家族关系描述,定义如下:

孩子、双亲节点子树的根称为这个节点的孩子,而这个节点又被称为孩子的双亲。

子孙,以某节点为根的子树中的所有节点都被称为是该节点的子孙。

祖先,从根节点到该节点路径上的所有节点。

兄弟,同一个双亲的孩子之间互为兄弟。

堂兄弟,双亲在同一层的节点互为堂兄弟。

进一步的,所述的公共框架层还包括日志管理;所述的日志管理包括日志分级打印、日志文件存储、日志文件备份。日志输出采用第三方库log4plus,并在此基础上封装了一层接口,按照级别通过文件方式输出到应用程序执行目录下。

进一步的,所述的协议分发层包括消息分发机制、事件分发机制;所述的消息分发机制为一对一分发;所述的事件分发机制为一对多分发。如图5所示,为消息分发机制,模块间消息根据模块ID进行一对一消息分发,确保消息分发的准确性。如图6所示,为事件分发机制,多个模块可能关注同一事件类型,一对多;通过各模块向事件分发层注册关注的事件ID号以及自身的回调函数;事件分发层收到事件后,会根据注册的事件ID,通过回调函数通知到响应模块。

进一步的,所述的接口封装层封装有进程内/进程间IPC通信接口、多任务管理接口、定时管理接口、时间管理接口、统一数据类型;所述的业务层包括应用层与网管服务;所述的驱动层与所述的网管服务双向通信,所述的应用层与所述的网管服务双向通信;所述的应用层与所述的驱动层通过所述的网管服务双向交互。跨平台系统API封装,分别在Linux/Windows/Vxworks下实现了一套系统API功能,完美支持Linux/Windows/Vxworks操作系统

平台无关系统API封装:

1)进程内/进程间IPC通信接口:消息队列、命名管道、Socket套接字;

2)多任务管理接口:线程(任务)的创建、销毁等接口;

3)定时器管理接口:定时器创建、销毁等接口;

4)时间管理接口:获取当前UTC时间、标准时间,时间转换接口等;

5)统一类型定义:UINT8/16/32/64、INT8/16/32/64、IPV4ADDR;如下表

表1基于32位封装平台基本数据类型

本发明提供一种基于龙芯平台的通信控制框架,包括基于龙芯的操作系统与硬件的通信控制架构;所述的通信控制架构包括接口封装层、驱动层、公共框架层、协议分发层、业务层;所述的公共框架层管理通信响应与处理指令机制;所述的业务层响应所述的公共框架层指令;所述的业务层与所述的公共框架层通过所述的协议分发层进行双向数据交互;所述的接口封装层分别对所述的公共框架层、协议分发层、业务层提供API接口;所述的接口封装层接收所述的公共框架层、协议分发层、业务层传输的数据;所述的公共框架层、协议分发层、业务层接收所述的接口封装层传输源于所述的基于龙芯的操作系统与硬件中的数据;所述的驱动层为所述的业务层提供驱动支持。与现有技术相比,本发明的优点如下:

1)模块化、低耦合,框架采用模块化设计,模块之间统一通过消息机制通信,低耦合特点也提高了系统的可扩展性;

2)支持跨平台,通过宏将各种系统独立的API隔离起来,形成对上统一的接口,完美支持Linux/Windows/Vxworks操作系统;

3)可调试性,框架提供了包括基于log4cplus第三方库的日志功能和调试手段,提高了问题定位的效率;

4)提供各种基础服务和接口,如socket套接字、命名管道等IPC进程间通讯机制;同时还封装有基本数据结构、定时器。

以上所述,仅为本发明的较佳实施例而已,并非对本发明作任何形式上的限制;凡本行业的普通技术人员均可按说明书附图所示和以上所述而顺畅地实施本发明;但是,凡熟悉本专业的技术人员在不脱离本发明技术方案范围内,利用以上所揭示的技术内容而做出的些许更动、修饰与演变的等同变化,均为本发明的等效实施例;同时,凡依据本发明的实质技术对以上实施例所作的任何等同变化的更动、修饰与演变等,均仍属于本发明的技术方案的保护范围之内。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1