VxWorks环境搭建与学习

本文讲述了如何搭建VxWorks开发环境,对于学习VxWorks的网友来说是一篇比较好的入门文档。

嵌入式操作系统VxWorks简介

VxWorks 操作系统是美国WindRiver公司于1983年设计开发的一种嵌入式实时操作系统(RTOS),是嵌入式开发环境的关键组成部分。良好的持续能力、高性能的内核以及友好的用户开发环境,在嵌入式实时操作系统领域占据一席之地。它以其良好的可靠性和卓越的实时性被广泛地应用在通信、军事、航空、航天等高精尖技术及实时性要求极高的领域中,如卫星通讯、军事演习、弹道制导、飞机导航等。在美国的F-16、FA-18战斗机、B-2隐形轰炸机和爱国者导弹上,甚至连1997年在火星表面登陆的火星探测器上也使用到了VxWorks。

Workbench

由WindRiver提供的开发工具,集成了编辑器、编译器、调试器于一体的高度集成的窗口环境,同样也可以从Shell窗口下发命令和浏览。基于eclipse。

集成环境提供了高效明晰的图形化的实时应用开发平台,它包括一套完整的面向嵌入式系统的开发和调测工具。此环境采用主机-目标机交叉开发模型,应用程序在主机的Windows环境下编译链接生成可执行文件,下载到目标机,通过主机上的目标服务器(Target Server)与目标机上的目标代理(Target Agent)的通信完成对应用程序的调试、分析。它主要由以下几部分组成:

VxWorks高性能的实时操作系统;

  • 应用编译工具;
  • 交互开发工具;

BSP

板载支持包(Board support package,BSP),用于支持开发板相关的功能,包括BIOS驱动、CPU、网卡驱动、硬盘驱动、ROM驱动、Flash驱动、显卡驱动等等。VxWorks BSP 包含了开发人员要在特定的目标机上运行VxWorks所需要的一切支持:支持特定目标机的软件(如驱动程序等)和从主机通过网络引导VxWorks的Boot ROM。Wind River提供支持不同厂商的200多种商业体系结构和目标板的BSP。另外Wind River还提供一个BSP移植包,帮助用户移植VxWorks到客户化硬件板上(超过50%的VxWorks用户使用客户化目标机)。

BSP开发包帮助开发人员把VxWorks移植到客户化硬件平台上。BSP开发包的选项包括:测试工具,硬件设备的驱动程序库,BSP模板。用户可以根据需要选择不同的选项。Wind River还提供BSP测试验证等咨询服务。

VxVMI: VxVMI是VxWorks的虚拟内存接口。在调试阶段和软件运行时都能提供强大的内存管理功能。它包括代码段和数据段保护功能,并包含对不同CPU结构的标准编程接口。

VxMP: VxMP是VxWorks多处理器支持扩展包,它允许将任务分布在多个CPU上执行以提高效率。它透明的、高性能的设计使得在不同CPU上运行的任务可以通过现有的通信机制,如信号灯、消息队列等进行同步和数据交换。

BSP是介于底层硬件和上层软件之间的底层软件开发包,它主要功能为屏蔽硬件,提供操作系统的驱动及硬件驱动,具体功能包括:

  • 单板硬件初始化,主要是CPU的初始化,为整个软件系统提供底层硬件支持;
  • 为操作系统提供设备驱动程序和系统中断服务程序;
  • 定制操作系统的功能,为软件系统提供一个实时多任务的运行环境;
  • 初始化操作系统,为操作系统的正常运行做好准备;

BSP文件在vxworks/target/config/all和vxworks/target/config/bspname文件夹里。其中,all文件夹里的文件是所有BSP的通用文件,bspname文件夹的文件是用户自己定制的BSP文件。

经过编译、链接,并在makefile和depend. bspname等文件的控制下,原程序最后将生成镜像。VxWorks的镜像可分为两类:可下载镜像和可引导镜像。

  • 可下载镜像(Loadable Image):实际包括两部分,一是vxWorks,二是boot ROM,两部分是独立创建的。其中boot ROM包括被压缩的boot ROM镜像(bootrom)、非压缩的boot ROM镜像(bootrom_uncmp)和驻留ROM的boot ROM镜像(bootrom_res)三种类型;
  • 可引导镜像(Bootable Image):是将引导程序和vxWorks融为一体的镜像,它常常是最终产品,包括不驻留ROM的镜像和驻留ROM的镜像两种类型。

VxWorks虚拟机安装

安装版本:

VxWorks 6.8.3 + Workbench 3.2.3 + VMware 16 + MS-DOS 6.22 软盘版

按照FTP连接的主机和目标机,将整个VxWorks6.8的安装分为两个部分,一是在主机(win10系统,可以使用虚拟机或者实体机,推荐使用虚拟机)上安装workbench3.2,进行bootrom与VxWroks映像文件的生成,二是在虚拟机上安装VxWorks系统。

WorkBench3.2安装

以下操作在win10虚拟机上进行

准备工作:

先关闭UAC。

在Windows中搜索UAC

VxWorks开发环境搭建

搜索网络连接设置,选择其中的有线网卡(不能用也没关系,主要是有线网卡就可以)。右键点击属性菜单。

VxWorks开发环境搭建

然后点击配置按钮,弹出配置界面,点击高级子界面

VxWorks开发环境搭建

打开资源包中的WRSLicenseWH701-VX-2Hypervisor.lic文件,找到这里:

VxWorks开发环境搭建

复制里面的hostid=字段的内容,16位MAC地址字符串。如果不是16位MAC地址而是字符串ANY,表示此证书并未绑定网卡MAC地址,不限制网卡。

填入如下位置:

VxWorks开发环境搭建

开始安装:

  1. 安装UItraISO(其他加载工具也可以)。运行uiso9_cn.exe,一路默认安装UItraISO,注意选择附加任务时三项都要勾选,尤其是“安装虚拟ISO驱动器”(默认三项都勾选)

VxWorks开发环境搭建

  1. 加载DVD-R175636.1-1-00到虚拟光驱,接着打开所加载的虚拟光驱,运行setup程序;

VxWorks开发环境搭建

  1. 安装过程没有特别描述的都以默认选项进行;

  2. 这一步将Check都取消勾选

VxWorks开发环境搭建

  1. 这一步选择Permanent activation(永久激活),将所给的.lic文件(证书)导入

VxWorks开发环境搭建

  1. 其余都用默认选项,选择Next即可,最后等待安装完成

VxWorks开发环境搭建

编译BSP

  1. 找到WorkBench的安装目录,目录名为WindRiver,找到vxworks-6.8目录,进入找到target目录,进入找到config目录,进入找到pcPentium4目录

VxWorks开发环境搭建

  1. 将“修改及增加文件”文件夹内提供的文件复制粘贴到Pentium4目录内,已有文件全部覆盖
需要修改以下文件,这里直接将修改好的复制过来。 VxWorks开发环境搭建

VxWorks开发环境搭建

  1. 打开config.h文件,定位到定义 DEFAULT_BOOT_LINE 宏的地方。修改预处理条件CPU == PENTIUM4 分支下的定义如下:
这里的h(host)地址表示你的主机IP地址,可以先修改为主机IP地址,或者随便填一个IP地址,之后修改主机地址为该地址,e(target)地址表示VxWorks系统目标机的IP地址,只需要和主机IP地址在同一个网段内即可,u=target pw=target是FTP下载的用户名和密码,都可以根据自己实际情况修改,最好使用target,简单易记。

VxWorks开发环境搭建

  1. 打开Workbench3.2,Workspace就选择WindRiver目录下的workspace目录

VxWorks开发环境搭建

  1. File->New->Wind River Workbench Project,选择Wind River VxWorks 6.8,然后Next

VxWorks开发环境搭建

VxWorks开发环境搭建

  1. Build type选择Boot Loader / BSP Project,然后Next

VxWorks开发环境搭建

  1. Project name任取,最好与BSP相关,Location选择默认的in workspace,然后Next

VxWorks开发环境搭建

  1. Board support package选择步骤2中经过修改的Pentium4目录,Tool chain选择gnu,勾上Copy files to project,然后Finish

VxWorks开发环境搭建

  1. 右键选中项目,选择Build Project或者Rebuild Project进行构建

VxWorks开发环境搭建

  1. 构建完成后,右键选中项目,选择Open Wind River VxWorks 6.8 Development Shell,打开命令行,cd进入Pentium4目录后,输入make bootrom.bin命令,将生成bootrom.bin文件

VxWorks开发环境搭建

  1. 找到workspace目录,找到该项目目录,在项目目录下找到Pentium4目录,进入并找到生成的bootrom.bin,复制出来,并修改后缀名为.sys,后续该文件作为引导程序

VxWorks开发环境搭建

  1. 找到vxload.com和vxsys.com两个文件(手动搜索,或者一般在XX\WindRiver\vxworks-6.8\host\x86-win32\bin目录下),与上一步得到的bootrom.sys放在一起,以待后续使用

VxWorks开发环境搭建

生成VxWorks镜像

根据具体需要在命令行环境下利用Makefile创建各种镜像,也可以在Tornado的集成环境下Build菜单中选择Build Boot ROM来创建各种类型的Boot ROM;

除此以外,如果系统硬件包括串口,还要根据具体情况修改sysSerial.c文件;如果包含网络部分要修改configNet.h;如果包含NVRAM要修改bootnv.h文件。总之,BSP的开发要根据具体目标板的硬件进行。

1、打开Workbench3.2,Workspace就默认为WindRiver目录下的workspace目录

2、File->New->Other,在Wizards内输入VxWorks image查找并选择VxWorks Image Project,然后Next

VxWorks开发环境搭建

3、Project name任取,最好与Image相关,Location选择默认项in workspace,然后Next

VxWorks开发环境搭建

4、Based on选择an existing project,Project中将显示此时workspace中的项目,选择第2章节中创建好的BSP项目,然后Finish

VxWorks开发环境搭建

5、如果需要额外开启各种服务,则需要在VxWorks Image的编译工程的Kernel Configuration中添加组件

VxWorks开发环境搭建

选择所需要的服务,这里添加了telnet ftp rpc,然后点击finish

VxWorks开发环境搭建

然后即可在Network Applications(default)模块下,看到对应的组件

VxWorks开发环境搭建

还可以进行一些配置,例如TELNET组件:

VxWorks开发环境搭建

6、组件添加完成后,右键选中项目,选择Build Project或者Rebuild Project构建

7、在workspace目录下,找到该项目目录,进行default目录,进入并找到生成的vxWorks以及vxWorks.sym,复制出来,后续这两个文件将作为VxWorks系统文件通过FTP引导系统

VxWorks开发环境搭建

但是我这里并没有生成vxWorks.sym文件,不知道为什么…不过后面并没有影响

VxWorks虚拟机安装

1、首先使用DOS622镜像文件创建虚拟机,镜像文件格式为IMG,大小为1.44MB,软盘的大小。

2、使用VMware,新建虚拟机->典型->稍后安装操作系统->其他(MS-DOS)->自定义名称(默认为MS-DOS)和位置->使用默认最大磁盘大小2GB,将虚拟磁盘存储为单个文件->完成

3、打开上一步创建的虚拟机设置,在硬件部分“添加”“软盘驱动器”

VxWorks开发环境搭建

4、软盘添加“完成”后,选择软盘,勾选“启动时连接”,以及“使用软盘映像文件”,并点击“浏览”选择提供的DOS662.img文件

VxWorks开发环境搭建

5、选择CD/DVD,取消勾选“启动时连接”,修改内存大小为256MB(适当大小即可)

VxWorks开发环境搭建

6、完成设置后,开启该虚拟机,进入开始界面,选择第三个选项Other IDE CD-ROM

VxWorks开发环境搭建

7、选择3后进入真正的DOS界面,开始进行硬盘分区,输入fdisk

VxWorks开发环境搭建

8、选择1,建立DOS分区

VxWorks开发环境搭建

9、选择1,建立一个主分区

VxWorks开发环境搭建

10、选择Y,此时询问这个分区是否使用全部的空间,由于我们只需要一个分区就可以,因此选择Y

VxWorks开发环境搭建

11、输入任意键,虚拟机将重启

VxWorks开发环境搭建

12、重新选择3 Other IDE CD-ROM,进行主分区的格式化,输入format c: /s ,这里输入Y确认

VxWorks开发环境搭建

13、这里询问是否填写卷标,由于并不需要所以直接回车即可

VxWorks开发环境搭建

14、此时已经有主分区C盘了,关闭虚拟机,在虚拟机设置中选择硬盘,选择“映射”,取消勾选“以只读模式打开文件”后确定,弹出警告点“是”即可,由此将打开该虚拟机的硬盘空间

VxWorks开发环境搭建

之后,本地多出来个Z盘:

VxWorks开发环境搭建

15、将"编译BSP"章节中的三个文件放入盘中后,在硬盘处“断开连接”,重新开启虚拟机,依然选择3

VxWorks开发环境搭建

16、输入c:进入c盘(即主分区)

VxWorks开发环境搭建

17、输入vxsys c: 命令,输入y确认

VxWorks开发环境搭建

18、由此bootrom.sys成功设置为引导程序,关闭虚拟机,在虚拟机设置中选择软盘,取消勾选“启动时连接”,再次开启虚拟机,VxWroks系统虚拟机安装完成,其中IP地址为192.168.111.200,也就是所提供的config.h文件内设置的地址

VxWorks开发环境搭建

VxWorks开发环境搭建

19、移步到win10虚拟机,在C:\WindRiver\vxworks-6.8\host\x86-win32\bin下找到wftpd32.exe,使用该程序进行FTP的连接

VxWorks开发环境搭建

20、在任意位置创建一个文件夹,用来给目标机提供FTP文件目录,方便起见,我们直接在桌面下创建一个名为ftp的文件夹,将之前得到的vxWorksvxWorks.sym两个文件放入其中

这里我只生成了vxWorks

VxWorks开发环境搭建

21、打开wftpd32.exe,Security->Users/Rights->New User->创建一个名为target,密码为target的用户(这个用户名密码是在config.h文件修改时设定好的)

VxWorks开发环境搭建

22、用户创建好后选择该用户,在Home Directory内填入20步中创建的文件夹,然后选择“Done”

VxWorks开发环境搭建

23、重启VxWorks虚拟机,此时虚拟机将通过FTP连接载入VxWroks系统,完成

VxWorks开发环境搭建

这里我们在”生成VxWorks镜像“章节,并没有生成vxWorks.sym文件,但是依然可以搭建成功。

24、由于前面我们配置了RPC、TELNET、FTP组件,所以扫描可以看到对应的开放端口

VxWorks开发环境搭建