一种基于实时操作系统的星载驱动框架设计方法与流程

文档序号:22175197发布日期:2020-09-11 21:28阅读:131来源:国知局
一种基于实时操作系统的星载驱动框架设计方法与流程

本发明涉及星载嵌入式软件技术领域,特别涉及一种基于实时操作系统的星载驱动框架设计方法。



背景技术:

嵌入式操作系统的主要功能之一,即是对平台硬件设备资源的管理。随着卫星的信息化、智能化任务需求变化,星载综合电子系统的功能不断升级换代,外部设备种类和接口呈现指数式增长。利用传统星载软件开发模式进行综合电子系统软件的开发,一方面不能够对高性能处理器的性能发挥出来,另一方面不能有效的对平台的外部设备接口进行管理和使用。同时,利用传统软件开发模式下,当这些众多的外部设备接口驱动发生问题时,升级换代不易操作,需要随同应用程序一起更新;

使用嵌入式操作系统后,综合电子系统软件的规模和复杂度呈现指数级上升,综合电子系统软件的可靠性需要多方面来保证。仅仅依靠传统星载软件开发中使用的措施已经不能起到全面保证可靠性的目的,需要对嵌入式操作系统涉及到的方方面面(如内核、驱动、服务等)都进行可靠性保证,从而实现整个综合电子系统的软件的可靠性。。

嵌入式操作系统中实现星载驱动框架技术在现有航天工程中应用较少,而已有技术中,星载驱动框架实现方法有:1、嵌入式操作系统实现在内存平坦映射模式下,且操作系统没有提供通用的驱动实现构架,针对平台的外部设备都是采用同传统星载软件开发中相同的方法,直接使用物理地址操作设备接口。没有实现应用与设备的解耦,该种实现方法中,依然无法有效提升软件复用率;2、虽然利用了嵌入式操作系统提供的通用设备驱动架构,但是将驱动同操作系统内核编译在一起,没有实现内核与驱动模块的分离,对于后续的功能升级换代不利。且将设备的所有操作都交由应用层负责管理,没有提供中间件层,对外部设备进行统一管理,该种方法对应用层的使用设备带来不利。



技术实现要素:

本发明将要提供一种基于实时操作系统的星载驱动框架设计方法,以期解决目前星载嵌入式操作系统中外部设备驱动无通用框架、管理混乱和可靠性低等问题,并进一步提高利用嵌入式操作系统的星载系统软件设计的灵活性、可维护性和可靠性。

本发明提供了一种基于实时操作系统的星载驱动框架设计方法,用来解决上述问题所在,包括以下步骤:

一种基于实时操作系统的星载驱动框架设计方法,包括以下步骤:

步骤一,针对星载外部设备进行分类,按嵌入式操作系统内定义划分为字符设备类、块设备类和网络设备类;

步骤二,针对每种星载外部设备的驱动定义用户级的设备结构体,进行该设备的硬件抽象化,其中所述设备结构体包含该外部设备的基址、中断向量、配置参数选项,状态监控以及嵌入式操作系统中定义的字符设备结构体指针、块设备结构体指针;

步骤三,用户定义星载外部设备的操作接口,至少包括读、写、控制、打开、关闭和中断处理过程接口;

步骤四,将步骤三中用户定义的星载外部设备的操作接口注册到操作系统定义的类设备结构体指针当中,将用户级定义的设备结构体指针实例为类设备结构体指针,即用户定义的星载外部设备的操作接口作为嵌入式操作系统操作此设备时的回调函数处理;

步骤五,将驱动编写编译成单独的模块,以.ko结尾,与内核实现分离;

步骤六,在嵌入式操作系统中,分别对待设备驱动和设备;嵌入式操作系统启动时,先注册设备驱动;在应用程序启动前,再注册具体设备到系统中;

步骤七,在嵌入式操作系统之上,增加一层中间件层,统一管理设备,对外提供统一的硬件调用接口,为方便用户以统一的方式使用所有外部设备;

步骤八,驱动层为每种设备创建监视点;在中间件层,为每个外部设备创建一个周期性线程,用于监视其运行状态。

可选地,所述步骤二中根据该设备的硬件抽象化,定义用户级的设备结构体,即该结构体能够描述该完整设备,其中,所述结构体包含设备的基址、中断向量、配置参数选项,状态监视,以及该设备对应的操作系统中定义的字符设备结构体指针、块设备结构体指针,用于注册后,操作系统将抽象的外部设备用一张链表“串”起来,统一管理,增强系统的规范性和通用性。

可选地,所述步骤三中,用户定义星载外部设备的操作接口,至少包括如下操作:打开设备、关闭设备、从设备中读数据、向设备写数据、针对外部设备的控制操作和中断处理函数过程;上述所有操作都是直接操作具体外部设备,在注册驱动时,将函数指针赋于嵌入式操作系统驱动框架中相应的函数指针,在应用层操作具体硬件时,由操作系统通过遍历设备链表,找到对应设备后,通过注册的回调函数进行设备的操作。

可选地,所述步骤四中,定义在用户级设备结构体中的类设备结构体指针是在操作系统内部,将同类型设备挂在一个链表中,链表上的所有设备具有相同的父指针;用户层发生设备文件操作时,通过系统调用,转变为遍历该类设备链表,由父指针开始寻找,直到找到对应设备指针,通过设备注册时,绑定的驱动函数进行回调操作,完成对设备的一次操作。

可选地,所述步骤六中启动操作系统和应用程序时分别完成驱动和设备的注册,将两个步骤分在不同阶段;操作系统启动时加载设备驱动,即包括所有可能用到的驱动,而在加载启动应用程序时,只需注册本应用会涉及的具体硬件设备。

可选地,所述步骤七中,“增加一层中间件层”中的“中间件层”增加了嵌入式操作系统之上,利用嵌入式操作系统提供的功能服务;在该中间件层中实现设备的打开、初始化、关闭、控制、读/写操作,屏蔽应用层对不同外部设备的不同操作方法。

可选地,所述步骤八中“创建设备监视点”具体为:在驱动实现中,利用控制接口实现对设备状态的获取和设置,为中间件层实现设备监视提供支持;在中间件层中为每个设备单独创建一个线程,周期性对该设备进行监视,获取其状态,针对设备的异常状态采取相应的处理措施,保证设备的正常工作,增强设备和驱动的可靠性,进而增强系统的可靠性。

综上所述,本发明能够提供对于在卫星综合电子系统中使用嵌入式操作系统,且对外部设备驱动以内核模块单独管理,利用中间件层的框架设计方法,对于提高星载系统软件可移植性、可靠性和可维护性有着积极的借鉴意义,在航天领域具有较好的实际工程应用价值。

附图说明

图1为本发明具体实施例一种基于实时操作系统的星载驱动框架设计方法的实现流程示意图。

具体实施方式

下面结合具体实施例对本发明进行详细说明。以下实施例将有助于本领域的技术人员进一步理解本发明,但不以任何形式限制本发明。应当指出的是,对本领域的普通技术人员来说,在不脱离本发明构思的前提下,还可以做出若干变化和改进。这些都属于本发明的保护范围。

如图1所示,本实施例公开了一种基于实时操作系统的星载驱动框架设计方法,包括步骤如下:

步骤一,针对星载外部设备进行分类,按嵌入式操作系统内定义划分为字符设备类、块设备类和网络设备类;

步骤二,针对每种星载外部设备的驱动定义用户级的设备结构体,进行该设备的硬件抽象化,其中所述设备结构体包含该外部设备的基址、中断向量、配置参数选项,状态监控以及嵌入式操作系统中定义的字符设备结构体指针、块设备结构体指针等,能够保证通过遍历某一类设备时,能够通过父指针找到对应的子设备;

步骤三,用户定义星载外部设备的操作接口,至少包括读、写、控制、打开、关闭和中断处理过程接口;

步骤四,将步骤三中用户定义的星载外部设备的操作接口注册到操作系统定义的类设备结构体指针当中,将用户级定义的设备结构体指针实例为类设备结构体指针,即用户定义的星载外部设备的操作接口作为嵌入式操作系统操作此设备时的回调函数处理;

步骤五,将驱动编写编译成单独的模块,以.ko结尾,与内核实现分离;

步骤六,在嵌入式操作系统中,分别对待设备驱动和设备;嵌入式操作系统启动时,先注册设备驱动;在应用程序启动前,再注册具体设备到系统中;

步骤七,在嵌入式操作系统之上,增加一层中间件层,统一管理设备,对外提供统一的硬件调用接口,为方便用户以统一的方式使用所有外部设备;

步骤八,驱动层为每种设备创建监视点;在中间件层,为每个外部设备创建一个周期性线程,用于监视其运行状态。

其中,步骤一中,所述星载外部设备进行分类,根据星载外部设备的使用操作特点,与现有的字符设备、块设备和网络设备进行比对,进行设备抽象,目的在于实现设备文件化,即在应用层操作时,将所有设备都当作一个文件进行对待处理。

其中,所述步骤二中根据该设备的硬件抽象化,定义用户级的设备结构体,即该结构体能够描述该完整设备,其中,所述结构体包含设备的基址、中断向量、配置参数选项,状态监视,以及该设备对应的操作系统中定义的字符设备结构体指针、块设备结构体指针等成员变量,将上述各个成员变量抽象为程序中对应的options1、options2、options3......optionsk,用于注册后,操作系统将抽象的外部设备用一张链表“串”起来,统一管理,增强系统的规范性和通用性。

其中,所述步骤三中,用户定义星载外部设备的操作接口,至少包括如下操作:打开设备、关闭设备、从设备中读数据、向设备写数据、针对外部设备的控制操作和中断处理函数等过程;上述所有操作都是直接操作具体外部设备,在注册驱动时,将函数指针赋于嵌入式操作系统驱动框架中相应的函数指针,将直接操作硬件设备的接口函数同驱动框架中的函数进行绑定,在应用层操作具体硬件时,由操作系统通过遍历设备链表,找到对应设备后,通过注册的回调函数进行设备的操作。该方法可以兼容同类设备,对上对下都是统一的接口,为嵌入式操作系统的设备管理带来便捷性,增强系统的平台可移植性。

其中,所述步骤四中,定义在用户级设备结构体中的类设备结构体指针是采用面向对象思想,在操作系统内部,将同类型设备挂在一个链表中,链表上的所有设备具有相同的父指针;用户层发生设备文件操作时,通过系统调用,转变为遍历该类设备链表,由父指针开始寻找,直到找到对应设备指针,通过设备注册时,绑定的驱动函数进行回调操作,完成对设备的一次操作。

其中,所述步骤五中,将设备驱动以内核驱动模块单独形式存在,从内核中分离,借鉴了“机制与策略分离”的思想。根据系统软件应用需求决定需要加载的内核驱动模块,降低与本系统软件无关的设备驱动对系统的影响。同时,将内核驱动模块从内核分离,也便于后续功能升级迭代,即设备驱动更改不会导致操作系统镜像的更改,增强系统的可维护性和可靠性。

其中,所述步骤六中启动操作系统和应用程序时分别完成驱动和设备的注册,将两个步骤分在不同阶段;操作系统启动时加载设备驱动,即包括所有可能用到的驱动,而在加载启动应用程序时,只需注册本应用会涉及的具体硬件设备。

其中,所述步骤七中,“增加一层中间件层”中的“中间件层”增加了嵌入式操作系统之上,利用嵌入式操作系统提供的功能服务,如消息队列、信号量和共享内存等。在该中间件层中实现设备的打开、初始化、关闭、控制、读/写等操作,屏蔽应用层对不同外部设备的不同操作方法。对上能够提供统一方法,有效提升应用系统软件复用率,且为软件的可重构提供保证。

其中,所述步骤八中“创建设备监视点”具体为:在驱动实现中,利用控制接口实现对设备状态的获取和设置,为中间件层实现设备监视提供支持;在中间件层中为每个设备单独创建一个线程,周期性对该设备进行监视,获取其状态,针对设备的异常状态采取相应的处理措施,保证设备的正常工作。当设备监视点监测到设备出现异常时,可以采取先卸载对应的设备驱动,然后重新进行注册/绑定操作,重复各步骤。增强设备和驱动的可靠性,进而增强系统的可靠性。

本发明的设计原理和设计思路主要包括如下:以星载综合电子计算机综合接口板驱动为例,具体为:

(1)星载综合电子计算机中综合电子板通过一路串口与计算机相连接,串口属于低速串行设备,对其进行高度的硬件抽象化,可以归为字符设备类,利用操作系统提供的字符设备驱动架构设计驱动程序。

(2)为综合接口板设备定义用户级结构体,其中包括设备链表指针、基地址、虚拟地址、发送缓冲区基地址、接收缓冲区基地址和锁等,完成对设备的抽象化。具体的设备抽象信息如表1:

表1抽象设备属性定义

其中,表1中“名称”一栏内容即为附图1中所示的options1、options2、options3......optionsk等抽象参数,表征该设备属性的参数。

(3)在用户级定义的驱动中实现对综合接口板的打开、关闭、控制、读和写操作接口函数。按照操作系统提供的字符设备架构,只需要实现上述的各个接口即可,但是针对综合接口板,读和写时有不同的操作,如操作da和oc等,将这些不同的操作实现在控制接口中,通过定义不同的传递参数协议来实现。通过综合接口板发送命令的同时,还有读请求,为保证两个操作不会彼此产生竞争,在实现中,利用消息队列实现所有操作的并行化转串行化操作。

(4)按照操作系统对字符设备架构设定的方法,完成步骤3定义的接口驱动的装订,并将驱动中定义的用户级指针与系统中“父”设备指针关联。编译生成对应内核驱动模块的ko文件。

(5)在操作系统之上,实现中间件层,在该中件间中,完成对设备的打开、关闭、控制、读和写操作。同时,与驱动程序中的传递参数协议也在该中间件层中实现,对上屏蔽了该层细节,能够保证提供统一的接口操作。

(6)在中间件层中添加一个线程,用于对综合接口板驱动程序状态的监视,周期性(t=500ms)采集设备驱动中状态信息,根据状态决定是否发生异常,当异常时,可以采取关闭该设备,并卸载该设备驱动,重新进行注册/绑定操作,进行初始化等操作。当连续2分钟内重新打开超过10次,则采取硬复位一次该设备,保证系统可靠性。

本发明针对基于实时操作系统、且运行于虚拟地址空间中的星载软件系统,能够将外部设备驱动模块与内核分离,实现解耦合,具有极强的可扩展性和便捷性,且增强系统的可靠性。利用中间件层为用户提供统一接口,为后续的功能升级迭代提供方便,且提高了软件的可靠性和可维护性,有效提升星载系统开发中的软件复用率。

综上所述,本发明方式能够对运行嵌入式操作系统的综合电子计算机平台的驱动进行统一规范管理,具有较强的可移植性和可维护性;且增加中间件层对上应用层提供统一的硬件使用方式,屏蔽具体硬件操作细节,具有较强的可扩展性;且在中间件层实现对所有外部设备驱动的监视线程,能够较容易实现设备状态的监视,极大提高星载系统的可靠性。相比于传统将驱动与操作系统编译在一起的实现方式,具有易实现、可靠且灵活等特点,且具有较强的工程实践价值。

以上所述仅为本发明的具体实施例,但是本发明保证范围不局限于此,本领域内的技术人员在本发明的精神和原则之内,对本发明所做的任何修改、替换、改进等,均应包含在本发明所述的权利要求的保护范围之内。

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