概述

VxWorks 6.9包括VxWorks操作系统、Wind River Workbench3.3开发环境、Wind River Diab编译器、Wind River GNU编译器,并集成了一些中间件和主机工具。

该平台有助于开发人员开发多样化的项目和应用,如VxWorks基于内核的应用(DKM)、VxWorks实时任务应用(RTP)、板级支持包、驱动等。开发人员可以通过Workbench IDE或者vxprj工具开发项目和应用,可以使用Workbench Debugger进行调试。

本文旨在介绍如何利用Wind River Workbench3.3开发工具提供的命令行支持,进行工程创建、工程配置、代码编译等基本操作。

vxprj和wrenv

Wind River Workbench3.3提供vxprj命令行工具来进行工程创建、配置和编译。

使用vxprj之前,首先需要使用installDir目录(以下如无特指,则为Wind River Workbench3.3的安装目录)的wrenv.exe配置环境变量,wrenv依赖于installDir目录的install.properties文件来配置环境变量。


% installDir/wrenv.exe -p vxworks-6.x

工程创建和代码编译

库文件工程和编译

创建VxWorks source build(VSB)工程来编译库文件,VSB工程可以基于BSP或者CPU类型来创建。为了让编译出来的库文件集成到VxWorks系统镜像中,VIP(VxWorks Image Project)需要关联VSB工程。

VxWorks提供了一些预先编译好的库文件:

路径 说明
installDir/vxworks-6.x/target/lib  
installDir/vxworks-6.x/target/lib/usr/lib for default user-mode builds; selected architectures only
installDir/vxworks-6.x/target/lib_smp for SMP-capable kernel libraries
installDir/vxworks-6.x/target/lib_smp/usr/lib for SMP-capable user libraries
installDir/vxworks-6.x/target/precomp Third-Party Binary Files

编译流程:设置环境变量->创建VSB工程->设置内核库和用户库选项(依赖关系?)->编译源文件。

component/feature 命令规范 示例
kernel components COMPONENT_COMPONENT_NAME COMPONENT_IPPPP
user space components COMPONENT_USR_COMPONENT_NAME  

基于BSP创建VSB时,系统自动处理模块依赖关系,但是如果BSP的CDF(Component Description File)变动时,需要重新基于BSP创建VSB。


vxprj vsb create [-force] {(-bsp bsp | bspdir) | -cpu cpuName}

     [vsbfile | vsbdir] [-add option] [-remove option] [-D defFile |-S | -s]

创建过程中,会提示确认一些配置选项。


cd %vsbdir

直接编译
% make

重新编译
% make clean all
% make

重新编译
% rm rf CPU_family_name
% rm -rf test usr
% make

编译VSB工程时,会同步编译installDir/vxworks-6.x/target/src目录下的源码以及其他组件源码,编译生成的目标文件位于VSB工程的子目录,比如PPC32 VSB工程,位于vsbdir/ppc/PPC32目录下。

VxWorks镜像工程创建和编译

VxWorks镜像通过VIP(VxWorks Image Project)编译。

vxprj基于BSP创建VIP工程,32位系统命令如下:


命令格式:
vxprj create [-smp] [-profile profile] [-vsb vsbdir] BSP tool [projectFile|projectDirectory] [-debug | -debug_opt]
举例说明:
% vxprj create -profile PROFILE_DEVELOPMENT mv5100 diab /mv5100VIP

64位系统命令如下:


命令格式:
vxprj create [-smp] [-lp64] [-profile profile] [-vsb vsbdir] BSP tool [projectFile|projectDirectory] [-debug | -debug_opt]
举例说明:
% vxprj create -profile PROFILE_DEVELOPMENT idpQ35_64 gnu -lp64 /my64BitVIP

添加和删除源文件


cd %prjdir
vxprj file add [projectFile] sourceFile
vxprj file remove [projectFile] sourceFile

编译VIP

Build Specifications Build Rules and Image Types
default vxWorks[.bin | .hex]
default_rom vxWorks_rom[.bin | .hex]
default_romCompress vxWorks_romCompress[.bin | .hex]
default_romResident vxWorks_romResident[.bin | .hex]

查看支持的build specifications
% workspace/myVip>vxprj build list
default
default_rom
default_romCompress
default_romResident

查看build specifications名称
vxprj build get [projectFile]

编译VxWorks
vxprj build [projectFile] [buildSpecification|buildRule]
举例说明:
% vxprj build
% vxprj build myproj.wpj default_rom

VIP关联VSB


vxprj vsb set [prjfile|prjdir] [vsbfile|vsbdir|-default]

--default选项配置VIP使用默认库而不是VSB库,如32位使用target/lib或者target_lib_smp,64位使用target/lib_lp64或者target/lib_lp64_smp。

查看VIP关联了哪些VSB


命令格式:
vxprj vsb info [prjfile|prjdir]
举例说明:
% workspace/mv5100VIP>vxprj vsb info
VSB directory is set to ./../myPpc32Vsb
如果VIP没有关联VSB,则打印关联的默认库
% workspace/mv5100VIP_3>vxprj vsb info
VSB directory is set to C:/WindRiver/vxworks-6.9/target/lib

检查VIP和VSB关联是否正常


% vxprj check