1.组件概述
VxWorks的配置和裁剪是以组件为基本单位。组件是VxWorks相对独立和完整的一个功能模块,也是系统中最小的、可升级的单元,它通常不再包含子节点。
VxWorks用CDF文件来描述系统中的组件。CDF(Common Data Format)称作通用数据格式文件,是一种用于存储数据、访问多维数据集的文件格式。CDF文件的后缀为.cdf,用户可以使用CDF文件非常方便地定义系统的特征参数,描述一个组件,并将其配置到不同的系统中。
使用组件技术,使用用户在开发过程中能够高效构建VxWorks系统,避免传统构造头文件带来的低效、复杂、易出错等缺点。而且,Tornado 2.x的图形配置工具和工程管理工具增强了组件相互依赖的可视性。
2.组件构成
组件实际上是一个功能部件具体实现部分的描述信息,它定义了与组件相关的源代码或目标代码、集成信息以及与组件相关的参数。组件包含以下元素:
(1)NAME:一个可读的名称,在工程组件管理器中出现在组件图标旁边。
(2)SYNOPSIS:对组件的简洁的描述。
(3)MODULES:与组件关联的目标文件。
(4)HDR_FILES:使用该组件时需要用到的相关头文件。
(5)CFG_PARAMS:与组件相关的一些配置参数,通常为一系列的宏。
3.组件描述文件的读取顺序
组件描述文件必须有.cdf后缀。所有的CDF文件名称以两个十进制数字开始(即00xxxx.cdf),开始的这两个数字控制一个目录中CDF文件读取顺序。
组件描述文件通常在工程创建时被读取,如果两个文件描述同一组件的同样特征,则它将读取后一个而不考虑以前的。优先权通常以两种约定方式建立:
(1)CDF文件存放在确定目录下。这些目录以如下顺序读取:
<1>$(WIND_BASE)\target\config\comps\VxWorks:包含一些通用组件;
<2>$(WIND_BASE)\target\config\comps\VxWorks\arch\arch:包含特定体系结构的组件;
<3>$(WIND_BASE)\target\config\bsp:包含特定BSP的组件;
<4>工程目录:包含该工程的一些特定组件。
(2)在同一目录下,文件头部的两个数字决定读取顺序。
4.组件的封装规则
Wind River公司将部分组件安装在其传统位置上。
(1)源码模块可在target/src或target/config目录下找到。
(2)标题头至于target/h中;目标模块在target/lib/objARCH中。
(3)组件描述文件在target/config/comps/VxWorks中。
(4)组件配置文件(源码片段)位于target/config/copms/src。
第三方受限于这些规定,组件元素在组件描述文件中完全给出。建议第三方把组件源和目标元素置于一个特定目录下,如target/config/vendor_name。组件描述文件(CDF)的位置取决于组件集成在系统中的位置。
若要在一个完整系统中集成新的组件,CDF应该置于target/config/comps/VxWorks目录下。凡是在该文件夹下的说明这些配置通用于各种BSP。
若它是一个BSP特定组件,则应该放在BSP目录下,表示它是针对当前BSP的特殊配置。若其特别服务一个单一工程,则它放在工程目录(target/proj/project_name)下。
第三方组件不允许覆盖WindRiver支持的文件,但可在其自身组件描述文件中忽略Wind River的组件描述。
5.组件的可视化
Vxworks通过CDF文件为Tornado配置工具提供了BSP的配置信息。Tornado集成开发环境使用CDF文件把文件夹、组件、参数、选项文件夹等配置项构建成VxWorks系统的配置树,通过VxWorks组件管理器界面供用户查看和修改。
一旦我们创建了一个新的组件,那么在Tornado的VxWorks组件管理器中可以展开组件树,找到新定义的组件,然后选择配置或裁减。
(1)通过选择include/exclude实现裁剪。在开发一个BSP的初期,往往需要裁减掉一些高级功能支持,先构建一个支持时钟中断的最小内核。调试通过后,逐步增加高级功能模块组件支持,最后开发出一个功能相对完整的VxWorks操作系统。
(2)通过修改属性参数(选项)实现配置。例如我们可能要到“VxWorks->hardware->memory->BSPMemory Configuration”中去修改一些内存配置相关的宏。
当然,一切都是代码或脚本描述的,IDE只是一种可视化交互编辑环境。在Tornado运行期间,试图去修改脚本或代码可能不会实时同步体现到Tornado中,此时先关闭Tornado,修改完源文件再开启Tornado重新加载,即可看到修改后的结果。 在Tornado IDE中配置或裁减组件,在合适的时候(dependency or build)会反馈到源文件代码中。
Tornado工程配置工具把收集到的用户配置信息反馈体现到工程的相关源文件中,从而实现了VxWorks的自动配置和裁剪。组件包含开关宏(COMPONENTS INCLUDED)和宏参数(PARAMETERS)将体现在动态生成的prjParams.h和prjComps.h文件中。prjParams.h通常被config.h包含,prjComps.h将被target\config\comps\src\configAll.h包含。代码详情可参考《VxWorks BSP for Intel's IXDP425(ARM)》里面的target目录。
参考:
《VxWorks程序开发实践》
3.1.2 VxWorks组件介绍
10.1.3 CDF组件定制
《VxWorks内核、设备驱动与BSP开发详解》
4.2 管理组件
第24章 珠联璧合——BSP与开发环境的结合
《Vxworks下设备驱动程序及bsp开发指南》
第10章 VxWorks操作系统配置