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 交叉开发环境连接拓扑 宿主机 Host (Windows/Linux) Workbench 4.x (Eclipse) 编辑 / 编译 / 调试 / Target Manager 交叉编译工具链 wr-cc / wr-gcc / wr-ld arm-wrs-vxworks7-eabi- Target Server IP: 192.168.1.100 串口终端 COM3 / 115200-8-N-1 目标机 Target (车载控制器) BootROM 启动参数 / 网络引导 VxWorks 镜像 vxWorks (可部署内核) IP: 192.168.1.200 硬件平台 ARM Cortex-A7 / A53 外设接口 CAN / Ethernet / GPIO 以太网下载 串口日志 启动握手 关键检查:ping 通目标机 → Target Server 连接成功 → 镜像可下载启动

四、创建第一个可部署的 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 查看网络状态,确认系统基础功能正常。

提示:首次部署建议先使用最小镜像验证启动链路,再逐步加入 CAN、文件系统等组件。每加入一个组件就重新编译部署一次,便于定位问题。若启动卡在“Attaching network interface”,优先检查网口 PHY 时钟和 BootROM 中的网络参数。
注意:Workbench 工程中的 BSP 版本必须与目标板硬件版本严格对应。BSP 不匹配可能导致串口无输出、网口不工作或启动后立即复位。更换目标板时,应重新确认 BSP 和工具链的浮点 ABI 设置。