精艺1说明:由于开发经验和英语水平有限,在本文档中肯定存在偏差和谬误。在有疑问的地方,请以风河的官方文档为准。欢迎联系,指正错误。QQ:1039309823。风河Woorkbench3.0/VxWorks6.6使用说明第一章工程视图(ProjectsOverview)Workbench利用工程(Projects)就像逻辑容器和积木块——它们能够连接在一起创建一个软件系统。工程(Projects)窗口可以直观地组织工程结构反映在内部的依赖关系上,以及编译和链接的次序。前期配置的各种不同的工程允许在后面建立或添加工程时使用与之前的工程相同的配置和建立方式,因而只需要极小的输入。一、Workspace/Project的设置WindRiverWorkbench并不知道使用者的源文件在哪一个地方,在开始的使用的时候WindRiverWorkbench在安装目录下有一个默认的工作空间(workspace)的目录。但是这不是必需的或者说并不一定是合理的,当使用者的工作空间因为产品升级或者更改安装目录已经完全存储在当前的安装目录树之外的时候!通常,使用者需要把workspace目录设置在当前的源文件树的根目录下并且在此创建Workbench工程。对于各种不同的源文件树,可以使用不同的工作空间(workspaces)。当决定在什么地方建立工程(projects)要做以下考虑:1.在workspace建立工程如果使用者想要新建一个工程在workspace下,通常的情况有A.所建的工程还没有建立源文件。B.所建的工程已经存在源文件,但需要添加进工程。精艺2C.所建的工程不允许设置在源文件目录处。2.在workspace外部建立工程在创建工程时,点击“Browse”,将要建立的工程放置在在与workspace不同的目录。通常的情形有:A.所建的工程建立在已有的原文件之上,改变工程目录之后需要对源文件进行添加和链接。B.所建的工程需要版本控制,而被放置在workspace之外。3.将工程建立在workspace之内但是连接到外部位置在创建工程时,选择Browse,定位到使用者的源文件目录,当不愿意因为工程文件的加入而是原文件增大或者不想把源文件复制到workspace。通常的情形有:A.所建的工程不允许设置在源文件目录处。B.所建的工程因为开发团队的成员有自己的工程,并且共享了部分源文件(通常为只读的)。这种选择就避免在团队成员之间通过Workbench互相配合工作是需要建立的象征性的连接。注意:如果要使用一个早期版本的Workbench创建了一个workspace,在使用当前版本的Workbench打开此workspace时,必须先升级此workspace的结构!有一个对话框提醒使用者这种升级会使得workspace与早期的版本不相匹配,选择“OK升级,或者选择“cancel”去选择不同的workspace。二、创建一个新工程(Projects)尽管使用者可以将工程建立在任何位置,但是通常还是建立在自己的workspace中。这样就不需要在建立工程时跳转到外部目录。如果在workspace创建了一个工程,必须在外部所创建的工程处设置写允许,因为Workbench的工程管理文件要写到此处。可以点击工具按钮或者选择FileNewWindRiverWorkbenchProject创建一精艺3个之前配置好的工程,或者是创建一个特殊类型的工程;也可以选择FileNewExample打开一个例子工程。无论选择种菜单命令,都会由导航菜单一步一步选择,直到创建需要的特定类型的工程,接下来将介绍以下各工程的创建:A.CreatingVxWorksImageProjectsB.CreatingBootLoader/BSPProjectsC.CreatingVxWorksROMFSFileSystemProjectsD.CreatingVxWorksReal-timeProcessProjectsE.CreatingVxWorksSharedLibraryProjectsF.CreatingVxWorksDownloadableKernelModuleProjectsG.CreatingUser-DefinedProjectsH.CreatingNativeApplicationProject1.工程创建之后的修改所有工程的创建导航设置都可以修改一旦工程已经存在。在ProjectExplorer窗口,选中工程文件夹,例如“ball”,单击右键在下拉菜单中选中“Properties”,就可以在相应工程的projectproperties界面进行修改,如下图:精艺4工程的结构设置(包括使用者创建的超级工程),也可以很容易的修改,在ProjectExplorer窗口,选中工程文件夹,例如“ball”,单击右键在下拉菜单中选中ProjectReferencesAddasProjectReference,在弹出的菜单里就可以设定个工程之间的结构关系,如下图所示:精艺52.工程与应用程序(ApplicationCode)工程以一种或几种类型管理应用程序文件。可以将一个与Workbench兼容的工程整个加入,也可以添加新的或者已经存在的源程序文件。选择FileImport打开“ImportFile”对话框进行相关操作。三、各工程类型结构不同类型的工程有着不同的用处,Workbench支持多种类型的工程,在ProjectExplorer窗口可以看见不同类型的工程有着不同的符号标志,见下图:精艺61.VxWorksImageProject(VIP)用VxWorksImageProject工程配置(自定义或裁剪)并编译一个内核映像用以启动目标板(boottarget)。通过添加VxWorksROMFS文件系统、内核模块(kernelmodules)、应用程序(applications)、库(libraries)、数据文件(datafiles),可以把整个系统联接进如一个映像(singleimage)。一个VxWorksImageproject既可基于一个同类型的Imageproject也可基于一个BSP(BoardSupportPackage)。2.VxWorksBootLoader/BSPProject(BSP)VxWorksBootLoader/BSP工程用于创建一个VxWorksbootloader也称为VxWorksbootROM在启动时下载一个带vxworks内核的目标映像。也可以把一个已经存在的同类型的工程的源文件复制到使用者创建的工程中,然后在不改变VxWorks所在目录的情况下自定义工程。精艺7在开发环境中bootloader被用来从主机下载一个VxWorks映像;在最终的产品中bootloader和操作系统映像存储在同一个磁盘上。bootloader和VxWorks并不需要在ROM中单独存储。3.VxWorksDownloadableKernelModuleProject(DKM)利用VxWorksDownloadableKernelModule工程管理和建立一个存在于内核空间(kernelspace)模块(modules)。可以单独建立模块运行和调试,可以自由的在目标(target)上运行VxWorks,下载,卸载,重载。一旦模块完成就可以静态的链接到内核(kernel),或者模块也可以使用一个存在的文件系统。DKM工程示意图(不包含文件系统)内核模式的开发是VxWorks传统的开发方法,所有的任务(tasks)都在启动(spawn)之后运行在一个没有保护的环境。DownloadableKernelModule在目标已经启动之后,可以启动应用程序。4.VxWorksReal-timeProcessProject(RTP)VxWorksReal-timeProcess可以管理和建立可执行文件在内核空间之外。可以单独运行和调试可执行文件。对于Real-time任务就像一个完全独立的程序下载到一个单独的程序运行地址空间精艺8(processaddressspace)。一个Real-time的程序的二进制文件可以像ROMFS文件系统一样存在于目标的(target-side)文件系统。Real-time程序执行时对于内核就像单独的实体,如下图所示:关于如何连接到共享库(SharedLibraries),参看平台所带的帮助信息。5.VxWorksSharedLibraryProject(Libs)VxWorksSharedLibrary的库文件会动态连接到运行的VxWorks实时程序,要连接到RTP工程,必须将共享库(sharedlibrary)储存在目标侧的文件系统。也可以通过VxWorksSharedLibrary工程建立一个子工程在编译时静态链进入其他的工程。更多的信息在平台帮助信息中查看,其路径为:HelpCheatSheetsWindRiverWorkbenchSetupaVxWorksRTPwithasharedlibrary。6.VxWorksROMFSFileSystemProject(ROMFS)VxWorksROMFSFileSystem工程可以作为任何一个需要目标侧文件系统的工程的子工程。这种工程类型设计用来建立应用程序或者其他任何类型的文件,带一个VxWorks系统映像的ROMFS文件系统,除了是vxworks的引导映像并不需要任何的存储介质。所以并不需要其他的文件系统存储文件,系统也具有完全的功能而不需要求助local文件系统、NFS驱动、精艺9RSH、或者FTP协议等等。需要注意的是ROMFS与ROM媒介没有任何关系,名字代表的意思是ReadOnlyMemoryFileSystem。ROMFS工程示意图:7.User-DefinedProjects(UDP)User-Definedprojects为用户设置和保存自己的编译系统、文件系统布局等等。用户接口提供以下支持:A.可以用编译命令(buildcommand)开展用户的编译功能,这样就允许在WorkbenchGUI界面进行编译。B.在ProjectExplorer窗口中建立的工程,它的编译规则可以反映在makefiles文件中。这样就允许在ProjectExplorer窗口选择任何用户自己的编译规则。C.可以在BuildConsole窗口看到编译工程时的输出信息。8.NativeApplicationProject(NAP)NativeApplication工程用于主机环境下的C/C++应用程序的开发。WindRiverWorkbench为当地GNU2.9x,GNU3.x,和Microsoft开发功能(ssembler,compiler,linker,archiver)提供编译和源文件分析支持,但没有调试器,所以得选择合适的当地工精艺10具用于调试(debugging)。四、工程和工程结构所有独立的工程内部都包含和其他任一工程无关的模块,在系统开始是都是单个的和没有经过组织的。所以使用者可以在workbench下通过工程之间的依赖关系和编译命令整体组织各个工程。通过workbench可以很方便的组织各工程,但是有的工程不能作为某个工程的子工程或者是同种类型的工程,这样的关联是不允许的。1.给一个工程加入子工程Workbench可以通过多种的方式创建子工程或者超级工程(subproject/superproject)结构:A、在ProjectExplorer窗口,右键点击工程,在下拉菜单中选择ProjectReferencesAddasProjectReference或者在Project菜单选择AddasProjectReference。之后就可以进行工程之间的关联选择。B、在ProjectExplorer窗口,右键点击工程,在下拉菜单中选择Properties再选ProjectReferences或者选择ProjectProperties。然后选择ProjectR