首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

嵌入式操作系统定制的通用性研究 02

嵌入式操作系统定制的通用性研究 02

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文件和资源文件。可以说,各种配置文件的生成标志着操作系统定制过程的完成。
返回列表