用于航天计算机的VxWorks操作系统裁剪定制方法

文档序号:6567208阅读:262来源:国知局
专利名称:用于航天计算机的VxWorks操作系统裁剪定制方法
技术领域
本发明涉及实时操作系统的剪裁定制技术,具体涉及一种用于航天计算机的 Vxfforks操作系统裁剪定制方法。
背景技术
近来,随着卫星应用的日益广泛,卫星的生产周期日益缩短,星载计算机软件的功能日趋复杂,亟需采用基于实时操作系统尤其是VxWorks操作系统的应用软件开发平台进行软件开发,并需要对实 时操作系统进行有针对性的配置剪裁。现有操作系统的配置剪裁方式,一般采用操作系统的开发工具进行模块级裁剪, 即将不需要的模块删除,但是该删除是在开发工具中执行的,因此裁剪只是形式上的剪除, 在操作系统内核库中该模块仍然存在,只是不被调用。因此采用开发工具进行配置剪裁的缺陷是(1)被剪裁掉的模块未从操作系统内核库中删除,作为冗余代码存在。冗余代码较多,在生成的操作系统中将包含很多不需要的功能,占用很大一部分程序存储器空间。而在航天应用中,程序存储器和数据存储器资源受限,需要操作系统软件具备精简的内核和组件,具备高实时性,所以有必要对使用的操作系统进行实质上而非形式上的精简、裁剪以及相应配置。(2)因为冗余代码的存在,在应用软件发生异常时,可能进入冗余代码区域,引起系统异常。例如如果被剪裁掉的模块中的代码违犯了航天编程规范,当软件执行异常后,可能调用被剪裁掉的模块中的非法代码,从而引起系统的异常。因此,为适用于航天应用,还需要对操作系统进行改进,使得软件执行异常后,也不会执行到违犯了航天编程规范的代码,提高操作系统的可靠性、安全性。

发明内容
有鉴于此,本发明提供了一种用于航天计算机的VxWorks操作系统裁剪定制方法,能够解决星载计算机操作系统软件占用存储空间过大、冗余模块过多的问题,以及解决代码不符合航天器软件编程规范等问题,而且作为精简的操作系统内核,裁剪方案还能够保证软件的可靠性、实时性和安全性,从而实现满足航天应用的高可靠、高安全、精简定制的VxWorks操作系统。该方案是这样实现的一种用于航天计算机的VxWorks操作系统裁剪定制方法,包括步骤一对原始的VxWorks操作系统进行源码模块级剪裁;1)在开发环境提供的源码目录src下,将与星载计算机所采用的处理器的体系结构无关的内核源码目录以及与应用不相关的操作系统组件对应的内核源码目录裁剪掉;2)在开发环境提供的源码目录src下,将与星载计算机所需应用不相关的操作系统组件对应的源码文件裁剪掉;
3)根据Makefile中记载的源码编译规则,将Makefile指定的不被编译的源码文件裁剪掉; 步骤二 进行源码函数级剪裁;1)通过系统软件和应用软件的分析,将内核源码中不会被系统软件和应用软件调用的函数删除;2)根据被裁剪的操作系统组件,将开发环境配置目录srcAconfig下与被裁剪的操作系统组件对应的组件配置源文件删除;3)在头文件目录\h下,对于被裁剪的操作系统组件,将被裁剪的操作系统组件的头文件删除;对于被裁剪的函数,在头文件中将被裁剪的函数及其相应的变量声明删除;4)将保留的头文件和源文件中与处理器体系结构不相关的条件编译删除;5)根据被裁剪的操作系统组件,将板级支持包BSP中与被裁剪的操作系统组件对应的宏定义和组件初始化代码删除;步骤三进行源码可靠性优化;根据航天器软件编程规范,对裁剪后操作系统源码进行检查,将违犯航天器软件编程规范的源码进行修正;步骤四对裁剪后的操作系统源码进行完整编译,生成操作系统内核库。较佳地,该方法进一步包括步骤五使用testbed工具对操作系统源码进行单元测试,由航天指定软件评测单位进行软件第三方评测;使用裁剪后的操作系统内核库与应用软件联合编译,生成可执行文件,烧入星载计算机的程序存储器芯片,然后进行测试,验证裁剪后的操作系统软件功能、性能是否正常。较佳地,在步骤一中,将与串行通信相关的源文件进行了剪裁;同时对操作系统软件进行更改,使得串行通信中断处理由操作系统软件接管,使用消息队列在任务之间进行数据交换,使用辅助时钟进行超时计时。有益效果本发明通过对VxWorks操作系统实现原理及模块组成进行分析,根据星载计算机的应用对VxWorks操作系统进行源码级的裁剪和定制,保留星载计算机系统应用所需的功能模块,将冗余功能模块与代码彻底裁剪掉,并且根据航天器软件编程规范对代码进行优化,提高可靠性,满足星载计算机的应用需求。
具体实施例方式下面举实施例,对本发明进行详细描述。根据本发明VxWorks操作系统的裁剪方案,本发明主要包含源码模块级剪裁、源码函数级裁剪及可靠性优化三个部分,具体如下一、对原始的VxWorks操作系统进行源码的模块级剪裁(1)根据星载计算机所采用处理器的体系结构和应用需求,确定操作系统模型 (系统软件和应用软件需求),该操作系统模型由多个操作系统组件组成,这些操作系统组件应该被保留;通过分析各操作系统组件和操作系统内核源码之间的对应关系,将确定被保留操作系统组件对应的内核源码。在开发环境提供的源码目录src下,操作系统组件对应的内核源码是以独立文件夹或者单独文件存在的。
(2)开始裁剪后,包括Α)内核源码文件夹即内核源码目录的剪裁,以及B)源码文件的剪裁。A、首先进行内核源码文件夹裁剪,即在开发环境提供的源码目录下,裁剪掉与星载计算机所采用的处理器的体系结构(例如SPARC)无关的内核源码目录以及与应用不相关的内核源码目 录,如网络、C++组件等,这些内容以独立的文件夹存储。例如,对于处理器采用SPARC体系结构的星载计算机来说,首先,将体系结构目录srcAarch下的SPARC文件夹保留,其他文件夹全部删除,如 ARM、x86、ppc、mips、i960等与SPARC体系结构无关的文件夹全部删除。然后,根据操作系统的应用将不相关的文件夹裁剪裁剪掉了 Cplus组件、驱动程序drv组件、远程调用rpc组件、操作系统调试组件ostools、POSIX操作系统接口组件、程序调试wdb及调试协议wtx组件、网络netinet、netwrs、路由rip、事件记录event组件及 DHCP组件。因为上述这些组件和源文件在最终的操作系统映像中不会用到,所以进行了完全裁剪。B、在开发环境提供的源码目录src下,将与星载计算机所需应用不相关的操作系统组件对应的源码文件裁剪掉。例如,对于处理器采用SPARC体系结构的星载计算机来说,裁剪掉了 ioLib.c、 iosLib. c> iosShow. c>IogLib. c> selectLib. c> sigLib. c、wdLib. c>wdShow. c、taskShow. c、 msgQShow. c、msgQSmLib. c、msgQSmShow. c>semOLib. c>semShow. c>semSmLib. c>semSmShow. c、taskShow. c、clockLib. c、cacheLib. c、dosFsLib. c、f ioLib. c 等 269 个源文件。此外,因为系统软件使用的10系统、格式化10、Select机制以及时间机制等,均为进行串行接口的数据通信。操作系统最小内核提供的消息队列、辅助时钟计时等功能替代原先的10系统操作和Select机制操作,而且通信处理过程更加明晰,不会引入过多的操作系统组件使用等情况。因此本步骤中还对串行通信相关的机制进行了裁剪。与此同时, 对系统软件进行更改,使得串行通信中断处理由系统软件接管,使用消息队列和任务之间进行数据交换,使用辅助时钟进行超时计时。因此,虽然裁剪掉了操作系统源码中的10组件、stdio、格式化10、Select机制、时间机制对应的源文件,但是仍然可以通过修改系统软件实现串行通信。(3)根据Makefile中记载的源码编译规则,将Makefile指定的不会被编译的源码文件裁剪掉。操作系统源码中通过Makefile定义编译规则,MakefiIe指定哪些源文件被编译, 哪些不被编译,在针对SPARC体系结构进行操作系统内核编译时,某些文件将不被编译,因此需要将此类不被编译文件进行裁剪,进一步精简操作系统源码。较佳地,本发明在该步骤中同时准备了硬件测试平台用于测试操作系统的功能和性能。二、源码的函数级裁剪1)通过系统软件和应用软件的分析,删除内核源码中不会被系统软件和应用软件调用的函数;本步骤为组件内部的裁剪,例如数学函数组件中包括54个函数,其中在一种情况下,应用软件只使用了其中的3种sqrt、eXp、abs,则只保留这3个数学函数,其他数学函数被删除。 2)根据被裁剪掉的操作系统组件,将开发环境的配置目录srcAconfig下与被剪裁的操作系统组件对应的组件配置源文件删除。配置目录是针对组件的配置目录,每个操作系统组件对应一个组件配置源文件, 被裁剪掉的操作系统组件所对应的组件配置源文件也需要被删除。例如程序调试wdb组件对应的组件配置源文件usrWdb. c将被删除。3)在头文件目录\h下,对于被裁剪的操作系统组件,将被裁剪的操作系统组件头文件删除,只保留与裁剪后内核源码相对应的头文件。对于被裁剪的函数,在头文件中将被裁剪的函数及其相应的变量声明删除,只保留内核中包含的函数和变量声明。4)条件编译更改将保留的头文件和源文件中与处理器体系结构不相关的条件编译进行删除。头文件和源文件中具有关于各种体系结构的条件编译,针对当前使用的处理器体系结构SPARC,只保留与SPARC体系结构相关的条件编译的代码,其他剪裁掉。5)根据被裁剪的操作系统组件,对板级支持包(BSP)中与被剪裁的操作系统组件对应的宏定义和组件初始化代码删除,使其满足该类型星载计算机的板级支持要求。例如,程序调试wdb组件被裁剪,则对应的BSP包中的宏定义INCLUDE WDB和 usrConfig. c中WDB相关的组件初始化代码的将被删除。三、源码可靠性优化根据《航天器软件编程规范(C语言部分)》,对裁剪后操作系统源码进行检查,将违犯航天器软件编程规范的源码进行修正。例如航天器软件编程规范规定,航天软件编程中不允许使用goto语句,将违犯此规范的操作系统源码使用while循环或者return语句进行替换。四、对裁剪后的操作系统源码进行完整编译,生成操作系统内核库。对于处理器采用SPARC体系结构的星载计算机来说,裁剪后的操作系统内核包含60个源文件,编译后的操作系统内核库为46Kbyte ;未经裁剪的操作系统内核库文件为 3. 74Mbyte。可见,剪裁后的操作系统经编译后形成的内核库大大缩小。五、较佳地,进一步进行操作系统源码的单元测试、第三方评测、配置项测试,验证操作系统的功能和性能。本步骤中,使用testbed工具对操作系统源码进行单元测试,由航天指定软件评测单位进行软件第三方评测;使用裁剪后的操作系统内核库与应用软件联合编译,生成可执行文件,烧入星载计算机的程序存储器芯片,然后进行测试,验证裁剪后的操作系统软件功能、性能是否正常。在卫星应用中,精简化的实时操作系统不仅能够满足航天计算机复杂的管理要求,而且能够适应航天计算机的存储资源缺乏、异常管理等特殊需求。操作系统裁剪和定制技术主要应用在航天用计算机的操作系统软件平台,为航天型号应用软件提供精简化、可配置、强实时、强容错的软件开发平台。综上所述,以上仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内,所作的任何修改、等同替换、 改进等,均应包含在本发明的保护范围之内。
权利要求
1.一种用于航天计算机的VxWorks操作系统裁剪定制方法,其特征在于,包括步骤一对原始的VxWorks操作系统进行源码模块级剪裁;1)在开发环境提供的源码目录src下,将与星载计算机所采用的处理器的体系结构无关的内核源码目录以及与应用不相关的操作系统组件对应的内核源码目录裁剪掉;2)在开发环境提供的源码目录src下,将与星载计算机所需应用不相关的操作系统组件对应的源码文件裁剪掉;3)根据Makefile中记载的源码编译规则,将Makefile指定的不被编译的源码文件裁剪掉;步骤二 进行源码函数级剪裁; 1)通过系统软件和应用软件的分析,将内核源码中不会被系统软件和应用软件调用的函数删除;2)根据被裁剪的操作系统组件,将开发环境配置目录srcAconfig下与被裁剪的操作系统组件对应的组件配置源文件删除;3)在头文件目录\h下,对于被裁剪的操作系统组件,将被裁剪的操作系统组件的头文件删除;对于被裁剪的函数,在头文件中将被裁剪的函数及其相应的变量声明删除;4)将保留的头文件和源文件中与处理器体系结构不相关的条件编译删除;5)根据被裁剪的操作系统组件,将板级支持包BSP中与被裁剪的操作系统组件对应的宏定义和组件初始化代码删除;步骤三进行源码可靠性优化;根据航天器软件编程规范,对裁剪后操作系统源码进行检查,将违犯航天器软件编程规范的源码进行修正;步骤四对裁剪后的操作系统源码进行完整编译,生成操作系统内核库。
2.如权利要求1所述的方法,其特征在于,该方法进一步包括步骤五使用testbed工具对操作系统源码进行单元测试,由航天指定软件评测单位进行软件第三方评测;使用裁剪后的操作系统内核库与应用软件联合编译,生成可执行文件,烧入星载计算机的程序存储器芯片,然后进行测试,验证裁剪后的操作系统软件功能、性能是否正常。
3.如权利要求1所述的方法,其特征在于,在步骤一中,将与串行通信相关的源文件进行了剪裁;同时对操作系统软件进行更改,使得串行通信中断处理由操作系统软件接管,使用消息队列在任务之间进行数据交换,使用辅助时钟进行超时计时。
全文摘要
本发明公开了一种用于航天计算机的VxWorks操作系统裁剪定制方法,包括一对原始的VxWorks操作系统进行源码的模块级剪裁,包括将与星载计算机所采用的处理器的体系结构无关的内核源码目录以及与应用不相关的操作系统组件对应的内核源码目录和源码文件裁剪掉;二源码函数级剪裁,包括将内核源码中不会被系统软件和应用软件调用的函数删除,对组件配置源文件、头文件、条件编译、板级支持包的修改;三根据航天器软件编程规范,对裁剪后操作系统源码进行修正。最终对裁剪后的操作系统源码进行完整编译,生成操作系统内核库。本发明能够解决星载计算机操作系统占用存储空间过大、冗余模块过多、代码不符合航天器软件编程规范等问题。
文档编号G06F9/45GK102360305SQ20111029948
公开日2012年2月22日 申请日期2011年10月9日 优先权日2011年10月9日
发明者谭沛, 高兰志 申请人:中国航天科技集团公司第五研究院第五一三研究所
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1