您好,  [请登录] [QQ登录]  [支付宝登录[免费注册]

商品分类

分享到: 百度搜藏 搜狐微博 新浪微博 腾讯微博 QQ收藏 人人网 Facebook Twitter

嵌入式利用体系定制的通用性研究

发布日期:2011-04-14

    嵌入式体系的专用性和资源束缚恳求嵌入式利用体系必须是可定制的。嵌入式利用体系的多样性为应用开辟者提供了对利用体系选择的多种大概性,却导致嵌入式利用体系相讨论干系的配置东西的多样性及配置要领的迥异,增长了应用开辟者根据已有的利用体系模块选择配置应用须要的利用体系的难度。为方便用户对差别的利用体系举行配置,本文创建了一个同一的定制进程模型,并在此底子上实现了一个嵌入式Linux的配置剪裁器。

    小序

    如今嵌入式体系开辟已经成为了谋略机财产最热门的范畴之一,嵌入式体系应用渗入渗出排泄到信息家电、财产控制、通讯与电子配置、人工智能配置等诸多范畴。嵌入式利用体系的引入大猛进步了嵌入式体系的结果,方便了嵌入式应用软件的筹划,但相应也占用了宝贵的嵌入式体系资源。同时,由于嵌入式应用体系配置差别较大,I/O利用也没有标准化,这部分驱动软件通常由应用步调提供,这就恳求在开辟环境中可以大概对用户选定的及时利用体系举行剪裁和扩展,并和应用步调绑定在一起天生一个可运行在目标环境下的应用体系。以是针对差别应用需求淘汰失不须要的利用体系模块,配置特定的嵌入式利用体系是低沉体系硬件资源, 淘汰体系资源斲丧,进步体系机动性的关键。

    嵌入式利用体系大多采取构件化、模块化的筹划头脑,以搭积木的要领通过互连布局软件因而是可配置的。但是由于利用体系的多样性,差别利用体系提供的配置要领迥异且繁简不一。比喻:风河公司的VxWoks利用体系,其开辟环境Tornado提供的配置东西可以对利用体系模块举行选择和删除,但其配置紧张还是通过用户对目标体系目次树下干系配置文件举行手工编辑和修改来完成的;科银京成公司。Delta OS的配套开辟环境Lambda Tool,可以大抵对内核参数、文件体系参数和网络体系参数举行设置。由于硬 件平台的多样性,纵然是雷同利用体系,其配置也是有差别的。应用步调开辟者必须熟习差别的硬件平台和差别的利用体系才华举行可行的应用的开辟,增长了应用开辟的难度。

    敷衍嵌入式应用的行业开辟,通常提供了多种利用体系提供用开辟者选择。要是能提供一套同一的利用体系配置东西,那么应用开辟者不必由于选择差别的利用体系而重新学习利用新的配置环境,肯定能进步开辟屈从,这在行业开辟中有着告急意义。

    本文将软件复用技能用于嵌入式利用体系的定制进程,提出了一个嵌入式利用体系定制进程的通用模型(OSTAILOR),并在此底子上研究筹划了基于嵌入式Linux的配置剪裁器。
   
    1、嵌入式利用体系配置通用化模型

    以利用体系抽象模块作为利用体系配置的底子单位,在此底子上得到了嵌入式利用体系配置通用化模型OSCFG。

    1.1 模型概述

    如图1所示,虚线框表现创建的利用体系配置模型。左边的两个实线框表现敷衍利用体系配置模型的输入:选择配置的利用体系典范和选择配置的利用体系抽象模块。右边的实线框表现输出的配置天见结果:特定的配置文件。


图1 利用体系定制进程

    利用体系配置模型的关键在于通用性,即对差别的利用体系,可以大概在逻辑上对利用体系所分别出来的物理模块保持透明性,因而,建模要点在于以下两点:

    ①对百般百般的利用体系模块举行抽象,使之成为映射于配置模型的抽象模块。抽象模块以模块属性文件的情势存放在构件库,供配置选用。

    ②抽象模块着末能映射为映射于差别利用体系的实体信息。 

    在上述条件下,构建了如图2所示的利用体系配置进程模型 OSTAILOR。图中阴影部分实现了配置的利用体系无关性,可以称为利用体系抽象层。 图2 O$1AII一0R进程模型敷衍细致的利用体系模块实体,起首颠末模块抽象,封装成映射用可见的利用体系抽象模块。每一个利用体系模块包括两个关键属性:①抽象出来的模块名。根据此模块名,应用开辟职员可以知道此利用体系模块具有的底子结果。②模块层次,从属于差别层次的模块具有差别的模块粒度。一样通常而言,越靠近底层的模块,粒度越细。在配置完成以后,根据用户输入选择须要映射的特定利用体系,根据此输入选择,模块配置完成以后,才华选择特定的利用体系映射算法将抽象的模块映射到细致的利用体系结果上。


图2 OSTAILOR进程模型

    图2中抽象模块配置层完成的结果还包括可根据用户选择,将利用体系抽象模块配置成更高层次,更大粒度的模块,供本次利用体系天生或下次定制利用。在这个利用体系定制模型中,抽象模块配置层以基层次完成的结果是根据模块配置层的配置结果和用户对利用体系典范的选择,完成对细致利用体系的映射。这部分由于与细致嵌入式利用体系干系,因而具有分外性。为了实现配置的通用性,也就须要思量怎样把分外性低沉到最小。

    1.2 底子领变原理

    (1) 配置底子流程

    定制的底子流程如图3所示。用户欣赏器查问构件库,并对用户表现出可选模块,然后汲取用户对模块的选择,将选择结果送至文件阐发器。从构件库得到映射模块的属性文件。通过阐发,将阐发结果天生模块布局映射干系图。模块布局干系图中的模块均以抽象逻辑情势存在,可以通过查找构件库得到它以文件情势存在物理实体信息。根据模块布局映射干系图和每一个模块的物理实体信息。天生映射的Makefile或别的一些干系配置文件,把它提提供映射的Make东西(编译器、链接器等),着末天生体系的可实行文件。


图3 配置底子流程

    (2) 模块抽象的层次分别

    一样通常说来,模块的粒度越大,每一个模块所包括的结果越多,其可配置性就越低;而模块粒度越小,配置巨英俊越高。为了到达配置的机动性和方便性,并将配置中涉及到利用体系分外性的地方降到最小,我们将模块抽象出来,并将其分别为多级布局,差别层次的模块封装其基层模块,形成差别的配置粒度。现以3层布局举行形貌,如图4所示。



图4 模块抽象布局

    图4中最基层是原子级模块,它抽象了利用体系的底子结果,包括任务(task)、I/O驱动(driver)、定时器(timel)、信号量(sernaphore)、消息行列步队(quecue)、变乱(event group)、邮箱(mailBox)、管道(pipe)等。除此之外,还包括一些底子的应用结果。之以是取名为原子级模块,是为了表明它是不可再分的底子模块,是配置别的层次模块的底子。

    原子级模块的粒度存在于目标代码或库文件级,由于它映射的物理实体以目标代码或库文件存在。固然在图4的层次布局中,它也是作为抽象的逻辑模块存在,但是它是和物理实体讨论最精密的一层,也是模块粒度最细的一层。因而在配置进程结束以后,通过这层映射到差别的文件,孕育孕育产生差别格局的配置文件,到达配置差别利用体系的目标。原子级模块完成的只是某一特定结果的一部分,大概只是某一特定结果一个子结果,必须和别的原子级模块相结台才华发挥应有的作用。因而在它的上层提出了结果级模块的见解。

    结果级模块由原子级模块配置天生。通过把差别的原子级模块连合在一起,完成某一特定结果,并加大了模块粒度。比喻,配置无线上彀的结果模块,除了要选择无线上彀本身这个原子级模块,还须要选择利用体系中支持上彀结果的原子级模块,比如TCP/IP协议栈。

    通过把结果级模块组装在一起,完成更强大的结果,就构成了应用级模块。每一个应用级模块都是一个结果模块集,也是粒度最大的一层模块。敷衍应用步调开辟者,为了开辟特定的应用步调,要是不想选择细粒度的模块,可以直接选择应用级模块来配置利用体系。

    这种模块化的分层布局,能为开辟者提供差别的模块粒度,利用户可以根据须要,选择差别层次的模块,以便加强定制进程的机动性;而其最大的长处是,敷衍每一次定制需求的变革,不必由最细粒度的原子级模块配置重新做起,而是可以对需求变革举行阐发,调换失得当粒度的模块,保持别的部分稳固,简化了配置进程,淘汰了配置时间。

    (3) 模块层次的阐发

    模块阐发和模块配置进程恰好相反。模块配置是从最底层开始,逐层构建出高层模块;而模块阐发则从最上层开始,层层向下,直到探求到最基层的映射干系,同时布局出映射的干系图。

    基于对模块的封装,每层模块只体贴和它精密讨论的基层模块的映射干系,即它是由基层的什么模块所构成的。为此,我们在配置天生每一个模块时,将它对基层的映射干系生存在数据库中。

    逐层阐发时,我们把模块名作为干系图的顶层结点,并在数据库中查找它对基层模块的映射干系。根据映射干系中涉及的基层模块,要是干系图中不存在它映射的结点,在干系图中添加新的结点,每个新结点映射一个基层模块名。根据映射干系,添加图中的拓扑干系。再将每个新结点作为一个新的顶层结点,重复刚才的进程,直至终极映射到原子级构件,则布局出一个完备的干系图。可以说,干系图天生的进程也便是整个映射的进程。算法形貌如图5所示。


图5 阐发算法形貌

    (4) 配置的终极完成

    到模块层次阐发进程完成为止,全部的利用均屏了利用体系的分外性;但嵌入式体系是多样的,不但表如今利用体系的多样性上,并且,纵然雷同的利用体系,映射差别的处理惩罚处罚器,其构成也是千差万别的。为了天生用户定制的细致利用体系,根据用户输入选择的利用体系典范,在上面阐发处理惩罚处罚天生的干系图中,选择出度为O的结点(即为原子级模块映射的结点)映射到差别的利用体系实体,再根据差别编译器、链接器能辨认的端正,天生差别的makefile文件、config文件和资源文件。可以说,种种配置文件的天生标记取利用体系定制进程的完成。

    2、基于嵌入式Linux的配置剪裁器的实现

    利用定制进程的通用模型,我们实现了一个嵌入式Linux的配置剪裁器。该配置剪裁器作为一个东西集成到基于嵌入式Linux的PDA手机开辟平台中。配置剪裁器利用构件库办理器作为其可选抽象模块的容器,而其输出的配置文件则提提供项目办理器,由后者提交给编译器和链接器举行利用体系天生。三者的干系如图6所示。

    下面是三个东西的结果阐发。

 
图6 PDS手机开辟平台布局

    (1) 配置剪裁器

    ①表现从构件库得到的已有模块信息。
    ②根据用户选择,配置新的模块,并将模块信息存入构件库,供下次定制时作为已有模块利用。
    ③定制特定应用开辟所需的利用体系:用户可以选择构件库中已存在的差别粒度的模块举行配置。在须要编译连接天生可下载到目标机的目标代码时,天生映射的配置文件,传给项目办理器。
   
    (2) 构件库办理器

    生存利用体系抽象模块信息,供配置剪裁器查问和利用。查问内容包括:①可以配置的模块名,供配置剪裁器提取出表如今用户界面上,供用户配置选择;②每个模块对它下一层的映射信息。根据此映射信息,可以举行递归往下查找,因而支持配置剪裁器中对每个模块的层次阐发和利用体系映射结果。

    (3) 项目办理器

    项目办理器办理应用步调的开辟,因而项目办理器向配置剪裁器提提供用开辟者方法的应用步调的源文件路径信息。嵌入式软件的最大特点便是应用步调通常不是独立存在的,它终极和利用系同一道作为二进制目标代码下载到目标机。以是,配置剪裁器需把从项目办理器得到的源文件路径信息写入映射的Makefile文件中。

    以用户的应用步调开辟配置所需的应用级模块为例,将配置剪裁器变乱步调阐发如下:

    ①选择构件库中已有的应用级模块,定制利用体系,将配置文件路径生存在构件库办理器中。
    ②当收到项目办理器得到细致利用体系配置文件的恳求时,查找构件库,得到生存的特定应用的配置文件路径。根据此路径和文件名,打开文件举行阐发,得到应用所包括的应用级模块的个数和模块名,天生初始的干系图。
    ③根据应用级模块的个数和模块名,查找构件库,得到每个应用级模块的配置文件名和路径。阐发文件得到映射的结果级模块,将结果级模块和映射拓扑干系添加在干系图中。
    ④以此类推,直到找到映射的原子级模块,终极天生一个完备的干系图。
    ⑤根据干系图查找构件库,把原子级模块映射到定制的利用体系实体上。本体系利用Linux自带配置体系,通过修改Linux的源码体系中已有的Makefile和kconfig文件,来编译内核,天生用户定制的利用体系内核。因此原子级模块映射于特定利用体系的实体信息便是kconfig文件中需添加的配置项,如选择了网络模块映射的实体信息,即“CONFIG_NET=y”配置项。
   
    结语

    通过对利用体系定制技能举行研究,抽象出利用体系定制进程通用模型OSTAILOR,并连合863项目“面向PDA手机的嵌入式软件开辟平台”实现了一个嵌入式Linux的配置剪裁器。用户可以利用本东西友爱的图形化界面对Linux内核组件及应用模块举行利用体系定制,主动天生种种配置中间文件,克制了手工编写修改这些文件的繁琐,从而演示了利用此模型来实现嵌入式利用体系定制进程的通用化的可行性。但是在本模型中,应用开辟者定制了特定的利用体系,就必须利用该利用体系提供的应用编程接口(API)。若需修改定制的利用体系,就必须调换应用步调中映射的API。如安在利用体系定制进程中,餍足应用开辟的利用体系无关性,将是本课题进一步研究的方向。