2. VxWorks开发环境搭建与工程创建
VxWorks 的开发方式与通用 Linux 应用开发有本质区别:它采用“宿主机—目标机”交叉开发模型。宿主机(Host)运行 Workbench 集成开发环境,负责编辑、编译、链接和调试;目标机(Target)运行 VxWorks 镜像,执行实际的车载实时控制任务。两者通过网口、串口或仿真器连接。本节围绕 Workbench 安装配置、交叉编译工具链、目标机连接和第一个可部署镜像四个环节展开,目标是让读者能独立完成从零到“镜像可启动”的完整链路。
一、Workbench 安装与工作空间配置
Workbench 是 Wind River 基于 Eclipse 框架定制的集成开发环境,VxWorks 7 对应 Workbench 4.x。安装前需确认宿主机满足要求:推荐 Windows 10 64 位或 Ubuntu 20.04 LTS,内存不低于 16 GB,磁盘预留 80 GB 以上,因为一个完整的 VxWorks 7 源码与工具链体积可达 30~50 GB。
安装过程的关键点有三个。第一,安装路径不要包含中文和空格,例如使用 D:\wr\workbench4,否则后续编译脚本可能因路径解析失败而报错。第二,安装类型选择“Complete”,确保 VxWorks 7 Source、Toolchain、Workbench 三部分都被勾选。第三,安装完成后首次启动需要指定工作空间(Workspace),建议单独建立 D:\vxworks_ws,不要与安装目录混用。
启动后进入 Window → Preferences → Wind River,检查工具链根目录是否被自动识别。若未识别,手动指向 D:\wr\workbench4\wrtoolchain。此时可在 Workbench 中看到 VxWorks 7 的组件树,说明环境基本就绪。
二、交叉编译工具链的组成与验证
交叉编译工具链是宿主机上生成目标机可执行代码的核心。VxWorks 7 的工具链通常包含 wr-cc、wr-gcc、wr-ld、wr-objcopy 等命令,目标架构根据车载平台常见选择为 ARMv7(如 Cortex-A7/A9)或 ARMv8(Cortex-A53)。工具链前缀形如 arm-wrs-vxworks7-eabi-。
验证工具链是否可用,可在 Workbench 的 Terminal 中执行:
$ wr-cc --version
arm-wrs-vxworks7-eabi-gcc (Wind River GCC 8.3.0) 8.3.0
Copyright (C) 2018 Free Software Foundation, Inc.
$ wr-cc -dumpmachine
arm-wrs-vxworks7-eabi
若 -dumpmachine 输出与目标板架构一致,说明工具链可用。接下来需要确认目标板的浮点 ABI:车载控制常涉及电机电流环、CAN 报文解析,若目标板带硬件浮点单元,应使用 -mfloat-abi=hard;若为软浮点,则用 softfp。这一选择必须与 BSP 配置一致,否则镜像启动后可能在浮点指令处异常。
三、目标机连接方式与配置
目标机连接是宿主机与目标板之间的“生命线”。VxWorks 常用三种连接方式:串口、以太网和 JTAG。串口用于查看启动日志和进入 BootROM 命令行;以太网用于下载镜像和 Target Server 调试;JTAG 用于底层硬件初始化或 BootROM 烧写。
以车载控制器常见的以太网连接为例,典型配置如下:宿主机 IP 设为 192.168.1.100,目标机 IP 设为 192.168.1.200,子网掩码 255.255.255.0。在目标机 BootROM 中设置启动参数:
[VxWorks Boot]:
boot device : motetsec
processor number : 0
host name : host
file name : vxWorks
inet on ethernet (e) : 192.168.1.200:ffffff00
host inet (h) : 192.168.1.100
user (u) : target
ftp password (pw) : target
flags (f) : 0x0
target name (tn) : vxTarget
配置完成后,在宿主机上执行 ping 192.168.1.200,若能通,说明物理链路和 IP 配置正确。随后在 Workbench 中创建 Target Server,选择“Wind River VxWorks 7”,输入目标机 IP,连接成功后可在 Target Manager 中看到目标机节点。
四、创建第一个可部署的 VxWorks 镜像
在 Workbench 中创建镜像工程,选择 File → New → Wind River VxWorks Project。工程类型选择“VxWorks Image Project (VIP)”,BSP 选择与目标板匹配的选项,例如 arm_cortexa7_vehicles(示例名称,实际以 BSP 包为准)。
工程创建后,进入内核配置界面。对于车载实时控制,建议至少保留以下组件:
- 内核:Wind River VxWorks 7 Kernel,调度策略选择优先级抢占(Preemptive Priority)。
- 文件系统:ROMFS 或 dosFs,用于存放启动脚本和配置文件。
- 网络协议栈:IPv4、UDP、TCP,用于与上位机通信。
- CAN 驱动:根据目标板 CAN 控制器型号选择,如
mcp2515或 SoC 内置 CAN。 - 调试组件:Target Shell、Debug Agent,便于后续在线调试。
配置完成后执行 Build。编译成功后,在工程目录 default 下会生成 vxWorks 文件。这个文件就是可部署镜像。可通过 ls -lh 查看大小,典型车载最小镜像约 2~5 MB,包含完整网络和 CAN 支持的镜像约 8~15 MB。
部署时,将 vxWorks 放到宿主机 FTP 根目录,目标机 BootROM 通过 FTP 下载并启动。启动日志中若出现:
Booting VxWorks 7...
Attached TCP/IP interface to motetsec0.
Attaching network interface lo0... done.
VxWorks 7.0 (ARM Cortex-A7)
Copyright 1984-2024 Wind River Systems, Inc.
说明镜像已成功运行。此时可在 Target Shell 中执行 i 查看任务列表,执行 ifconfig 查看网络状态,确认系统基础功能正常。