《嵌入式操纵系统定制的通用性研究.docx》由会员分享,可在线阅读,更多相关《嵌入式操纵系统定制的通用性研究.docx(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、嵌入式操纵系统定制的通用性研究dujing导语:为方便用户对不同的操纵系统进展配置,本文建立了一个统一的定制经过模型,并在此根底上实现了一个嵌入式Linux的配置剪裁器。目前嵌入式系统开发已经成为了计算机工业最热门的领域之一,嵌入式系统应用浸透到信息家电、工业控制、通讯与电子设备、人工智能设备等众多领域。嵌入式操纵系统的引入大大进步了嵌入式系统的功能,方便了嵌入式应用软件的设计,但相应也占用了珍贵的嵌入式系统资源。同时,由于嵌入式应用系统配置差异较大,IO操纵也没有标准化,这局部驱动软件经常由应用程序提供,这就要求在开发环境中可以对用户选定的实时操纵系统进展剪裁和扩展,并和应用程序绑定在一起生
2、成一个可运行在目的环境下的应用系统。所以针对不同应用需求裁减掉不需要的操纵系统模块,配置特定的嵌入式操纵系统是降低系统硬件本钱,减少系统资源消耗,进步系统灵敏性的关键。嵌入式操纵系统大多采用构件化、模块化的设计思想,以搭积木的方式通过互连构造软件因此是可配置的。但是由于操纵系统的多样性,不同操纵系统提供的配置方式迥异且繁简不一。例如:风河公司的VxWoks操纵系统,其开发环境Tornado提供的配置工具可以对操纵系统模块进展选择和删除,但其配置主要还是通过用户对目的系统目录树下相关配置文件进展手工编辑和修改来完成的;科银京成公司。DeltaOS的配套开发环境LambdaTool,可以简单对内核
3、参数、文件系统参数和网络系统参数进展设定。由于硬件平台的多样性,即使是一样操纵系统,其配置也是有差异的。应用程序开发者必须熟悉不同的硬件平台和不同的操纵系统才能进展可行的应用的开发,增加了应用开发的难度。对于嵌入式应用的行业开发,往往提供了多种操纵系统供给用开发者选择。假如能提供一套统一的操纵系统配置工具,那么应用开发者不必由于选择不同的操纵系统而重新学习使用新的配置环境,必然能进步开发效率,这在行业开发中有着重要意义。本文将软件复用技术用于嵌入式操纵系统的定制经过,提出了一个嵌入式操纵系统定制经过的通用模型OSTAILOR,并在此根底上研究设计了基于嵌入式Linux的配置剪裁器。1、嵌入式操
4、纵系统配置通用化模型以操纵系统抽象模块作为操纵系统配置的根本单位,在此根底上得到了嵌入式操纵系统配置通用化模型OSCFG。1.1模型概述如图1所示,虚线框表示建立的操纵系统配置模型。左边的两个实线框表示对于操纵系统配置模型的输入:选择配置的操纵系统类型和选择配置的操纵系统抽象模块。右边的实线框表示输出的配置生成结果:特定的配置文件。align=centerimg=433,80e-images/128050202526093750.GIF/img图1操纵系统定制经过/align操纵系统配置模型的关键在于通用性,即对不同的操纵系统,可以在逻辑上对操纵系统所划分出来的物理模块保持透明性,因此,建模要
5、点在于以下两点:对各式各样的操纵系统模块进展抽象,使之成为对应于配置模型的抽象模块。抽象模块以模块属性文件的形式存放在构件库,供配置选用。抽象模块最后能映射为对应于不同操纵系统的实体信息。在上述前提下,构建了如图2所示的操纵系统配置经过模型OSTAILOR。图中阴影局部实现了配置的操纵系统无关性,可以称为操纵系统抽象层。图2O$1AII一0R经过模型对于详细的操纵系统模块实体,首先经过模块抽象,封装成对应用可见的操纵系统抽象模块。每一个操纵系统模块包含两个关键属性:抽象出来的模块名。根据此模块名,应用开发人员可以知道此操纵系统模块具有的根本功能。模块层次,隶属于不同层次的模块具有不同的模块粒度
6、。一般而言,越靠近底层的模块,粒度越细。在配置完成以后,根据用户输入选择需要映射的特定操纵系统,根据此输入选择,模块配置完成以后,才能选择特定的操纵系统映射算法将抽象的模块映射到详细的操纵系统功能上。align=centerimg=352,232e-images/128050202750000000.GIF/img图2OSTAILOR经过模型/align图2中抽象模块配置层完成的功能还包括可根据用户选择,将操纵系统抽象模块配置成更高层次,更大粒度的模块,供本次操纵系统生成或者下次定制使用。在这个操纵系统定制模型中,抽象模块配置层以下层次完成的功能是根据模块配置层的配置结果和用户对操纵系统类型的
7、选择,完成对详细操纵系统的映射。这局部由于与详细嵌入式操纵系统相关,因此具有特殊性。为了实现配置的通用性,也就需要考虑怎样把特殊性降低到最小。1.2根本工作原理1配置根本流程定制的根本流程如图3所示。用户阅读器查询构件库,并对用户显示出可选模块,然后接收用户对模块的选择,将选择结果送至文件解析器。从构件库获得对应模块的属性文件。通过解析,将解析结果生成模块构造映射关系图。模块构造关系图中的模块均以抽象逻辑形式存在,可以通过查找构件库得到它以文件形式存在物理实体信息。根据模块构造映射关系图和每一个模块的物理实体信息。生成对应的Makefile或者其它一些相关配置文件,把它提供应对应的Make工具
8、编译器、链接器等,最后生成系统的可执行文件。align=centerimg=462,242e-images/128050202942343750.GIF/img图3配置根本流程/align2模块抽象的层次划分一般讲来,模块的粒度越大,每一个模块所包含的功能越多,其可配置性就越低;而模块粒度越小,配置复杂度越高。为了到达配置的灵敏性和方便性,并将配置中涉及到操纵系统特殊性的地方降到最小,我们将模块抽象出来,并将其划分为多级构造,不同层次的模块封装其下层模块,形成不同的配置粒度。现以3层构造进展描绘,如图4所示。align=centerimg=500,213e-images/12805020317
9、1250000.GIF/img图4模块抽象构造/align图4中最下层是原子级模块,它抽象了操纵系统的根本功能,包括任务task、IO驱动driver、定时器timel、信号量sernaphore、消息队列quecue、事件eventgroup、邮箱mailBox、管道pipe等。除此之外,还包括一些根本的应用功能。之所以取名为原子级模块,是为了说明它是不可再分的根本模块,是配置其它层次模块的根底。原子级模块的粒度存在于目的代码或者库文件级,由于它映射的物理实体以目的代码或者库文件存在。固然在图4的层次构造中,它也是作为抽象的逻辑模块存在,但是它是和物理实体联络最严密的一层,也是模块粒度最细的
10、一层。因此在配置经过完毕以后,通过这层映射到不同的文件,产生不同格式的配置文件,到达配置不同操纵系统的目的。原子级模块完成的只是某一特定功能的一局部,或只是某一特定功能一个子功能,必须和其它原子级模块相结台才能发挥应有的作用。因此在它的上层提出了功能级模块的概念。功能级模块由原子级模块配置生成。通过把不同的原子级模块结合在一起,完成某一特定功能,并加大了模块粒度。例如,配置无线上网的功能模块,除了要选择无线上网本身这个原子级模块,还需要选择操纵系统中支持上网功能的原子级模块,比方TCPIP协议栈。通过把功能级模块组装在一起,完成更强大的功能,就构成了应用级模块。每一个应用级模块都是一个功能模块
11、集,也是粒度最大的一层模块。对于应用程序开发者,为了开发特定的应用程序,假如不想选择细粒度的模块,可以直接选择应用级模块来配置操纵系统。这种模块化的分层构造,能为开发者提供不同的模块粒度,使用户可以根据需要,选择不同层次的模块,以便增强定制经过的灵敏性;而其最大的优点是,对于每一次定制需求的改变,不必由最细粒度的原子级模块配置重新做起,而是可以对需求改变进展分析,交换掉恰当粒度的模块,保持其它局部不变,简化了配置经过,减少了配置时间。3模块层次的解析模块解析和模块配置经过正好相反。模块配置是从最底层开场,逐层构建出高层模块;而模块解析那么从最上层开场,层层向下,直到寻找到最下层的映射关系,同时
12、构造出对应的关系图。基于对模块的封装,每层模块只关心和它严密联络的下层模块的映射关系,即它是由下层的什么模块所构成的。为此,我们在配置生成每一个模块时,将它对下层的映射关系保存在数据库中。逐层解析时,我们把模块名作为关系图的顶层结点,并在数据库中查找它对下层模块的映射关系。根据映射关系中涉及的下层模块,假如关系图中不存在它对应的结点,在关系图中添加新的结点,每个新结点对应一个下层模块名。根据映射关系,添加图中的拓扑关系。再将每个新结点作为一个新的顶层结点,重复刚刚的经过,直至最终映射到原子级构件,那么构造出一个完好的关系图。可以讲,关系图生成的经过也就是整个映射的经过。算法描绘如图5所示。al
13、ign=centerimg=490,434e-images/128050204730625000.GIF/img图5解析算法描绘/align4配置的最终完成到模块层次解析经过完成为止,所有的操纵均屏了操纵系统的特殊性;但嵌入式系统是多样的,不仅表达在操纵系统的多样性上,而且,即使一样的操纵系统,对应不同的处理器,其组成也是千差万别的。为了生成用户定制的详细操纵系统,根据用户输入选择的操纵系统类型,在上面解析处理生成的关系图中,选择出度为O的结点即为原子级模块对应的结点映射到不同的操纵系统实体,再根据不同编译器、链接器能识别的规那么,生成不同的makefile文件、config文件和资源文件。可
14、以讲,各种配置文件的生成标志着操纵系统定制经过的完成。2、基于嵌入式Linux的配置剪裁器的实现使用定制经过的通用模型,我们实现了一个嵌入式Linux的配置剪裁器。该配置剪裁器作为一个工具集成到基于嵌入式Linux的PDA手机开发平台中。配置剪裁器使用构件库治理器作为其可选抽象模块的容器,而其输出的配置文件那么提供应工程治理器,由后者提交给编译器和链接器进展操纵系统生成。三者的关系如图6所示。下面是三个工具的功能讲明。align=centerimg=418,168e-images/128050204936406250.GIF/img图6PDS手机开发平台构造/align1配置剪裁器显示从构件库
15、获得的已有模块信息。根据用户选择,配置新的模块,并将模块信息存入构件库,供下次定制时作为已有模块使用。定制特定应用开发所需的操纵系统:用户可以选择构件库中已存在的不同粒度的模块进展配置。在需要编译连接生成可下载到目的机的目的代码时,生成对应的配置文件,传给工程治理器。2构件库治理器保存操纵系统抽象模块信息,供配置剪裁器查询和使用。查询内容包括:可以配置的模块名,供配置剪裁器提取出显示在用户界面上,供用户配置选择;每个模块对它下一层的映射信息。根据此映射信息,可以进展递归往下查找,因此支持配置剪裁器中对每个模块的层次解析和操纵系统映射功能。3工程治理器工程治理器治理应用程序的开发,因此工程治理器
16、向配置剪裁器提供给用开发者编制的应用程序的源文件途径信息。嵌入式软件的最大特点就是应用程序往往不是独立存在的,它最终和操纵系统一道作为二进制目的代码下载到目的机。所以,配置剪裁器需把从工程治理器获得的源文件途径信息写入对应的Makefile文件中。以用户的应用程序开发配置所需的应用级模块为例,将配置剪裁器工作步骤讲明如下:选择构件库中已有的应用级模块,定制操纵系统,将配置文件途径保存在构件库治理器中。当收到工程治理器获得详细操纵系统配置文件的恳求时,查找构件库,得到保存的特定应用的配置文件途径。根据此途径和文件名,翻开文件进展解析,获得应用所包含的应用级模块的个数和模块名,生成初始的关系图。根
17、据应用级模块的个数和模块名,查找构件库,得到每个应用级模块的配置文件名和途径。解析文件得到对应的功能级模块,将功能级模块和对应拓扑关系添加在关系图中。以此类推,直到找到对应的原子级模块,最终生成一个完好的关系图。根据关系图查找构件库,把原子级模块映射到定制的操纵系统实体上。本系统利用Linux自带配置系统,通过修改Linux的源码系统中已有的Makefile和kconfig文件,来编译内核,生成用户定制的操纵系统内核。因此原子级模块对应于特定操纵系统的实体信息就是kconfig文件中需添加的配置项,如选择了网络模块对应的实体信息,即“CONFIG_NET=y配置项。通过对操纵系统定制技术进展研究,抽象出操纵系统定制经过通用模型OSTAILOR,并结合863工程“面向PDA手机的嵌入式软件开发平台实现了一个嵌入式Linux的配置剪裁器。用户可以使用本工具友好的图形化界面对Linux内核组件及应用模块进展操纵系统定制,自动生成各种配置中间文件,防止了手工编写修改这些文件的繁琐,进而演示了使用此模型来实现嵌入式操纵系统定制经过的通用化的可行性。但是在本模型中,应用开发者定制了特定的操纵系统,就必须使用该操纵系统提供的应用编程接口API。假设需修改定制的操纵系统,就必须交换应用程序中对应的API。怎样在操纵系统定制经过中,知足应用开发的操纵系统无关性,将是本课题进一步研究的方向。
限制150内