2. VxWorks开发环境搭建

VxWorks 的开发环境与通用 Linux 应用开发有本质区别:宿主机(Host)通常是 Windows 或 Linux 工作站,运行 Workbench 集成开发环境;目标机(Target)是运行 VxWorks 的嵌入式硬件或虚拟机。两者通过交叉编译工具链、目标服务器(Target Server)和调试通道协同工作。本节围绕“装好、连上、编得出、烧得进、跑起来”这条主线,把环境搭建拆成可验证的四个环节。

一、Workbench 安装与许可证准备

Workbench 是 Wind River 基于 Eclipse 的集成开发环境,安装前需确认三件事:宿主机操作系统版本(如 Windows 10 64 位或 RHEL/CentOS 7.x)、Workbench 版本(如 VxWorks 7 对应 Workbench 4.x)、以及许可证文件(License)。安装介质通常为 ISO 或安装包,安装路径建议不含中文和空格,例如 C:\WindRiver\workbench-4。

安装过程本身是向导式的,但有两个关键点容易被忽略。第一,安装类型选择:若只做应用开发,选“Application Development”;若需要 BSP 和内核裁剪,选“Platform Development”。第二,安装完成后必须通过 License Manager 导入许可证,否则 Workbench 启动后无法创建 VxWorks 工程。许可证通常与 MAC 地址或加密狗绑定,导入后可在 Help → About Workbench → Installation Details 中确认授权状态。

安装路径、工作空间(Workspace)路径、许可证路径三者建议分开存放,避免升级或重装时互相覆盖。Workspace 不要放在网络盘上,否则索引和编译速度会明显下降。

二、交叉编译工具链配置

VxWorks 的交叉编译工具链随 Workbench 一起安装,常见前缀为 arm-wrs-vxworks、aarch64-wrs-vxworks 或 x86_64-wrs-vxworks,具体取决于目标机架构。工具链包含 gcc、g++、ld、ar、objcopy、objdump 等,位于 Workbench 安装目录下的 wrenv 或 toolchain 子目录中。

配置的核心是让 Workbench 知道“用哪套工具链、编哪个目标架构”。在 Workbench 中通过 Window → Preferences → Wind River → Build 指定工具链根路径;在工程属性 C/C++ Build → Settings → Tool Chain Editor 中选择对应的工具链前缀。若使用命令行编译,需先执行环境初始化脚本,例如:

# Linux 宿主机示例
source /opt/windriver/wrenv.sh -p vxworks-7
export WIND_CC_SYSROOT=/opt/windriver/vxworks-7/sysroot
arm-wrs-vxworks-gcc -v

执行 arm-wrs-vxworks-gcc -v 后应看到目标架构、GCC 版本和 sysroot 路径。若提示找不到命令,说明环境变量未生效或工具链路径配置错误。此时不要急于编译工程,先把工具链本身验证通过。

三、目标机连接与 Target Server 配置

目标机连接的本质是:Workbench 通过 Target Server 与目标机上的 VxWorks 内核建立通信,通信通道可以是串口、以太网或 JTAG。量产交付中最常用的是以太网连接,因为速度快、支持多目标机管理。典型拓扑如下:宿主机运行 Workbench 和 Target Server,目标机运行 VxWorks 内核并监听网络端口,两者通过交换机或直连网线互通。

VxWorks 开发环境连接拓扑与数据流 宿主机 Host Workbench IDE Target Server 交叉编译工具链 arm-wrs-vxworks-gcc sysroot / 库 / 头文件 目标机 Target VxWorks 内核 网络 / 串口驱动 以太网 / 串口 / JTAG Target Server 通信通道 编译 镜像下载 / 烧录 验证输出 串口启动日志 Shell 命令回显

配置 Target Server 时,需要填写目标机 IP、端口(默认 1534)、以及目标机上的 VxWorks 镜像路径。若目标机尚未运行内核,可先用串口或 TFTP 方式引导一个最小内核,再切换到网络连接。连接成功后,Workbench 的 Target Manager 中会显示目标机状态为“Connected”,此时可以查看目标机内存、任务列表和符号表。

目标机 IP 与宿主机 IP 必须在同一网段,且目标机防火墙或网络策略不能拦截 1534 端口。若连接超时,先用 ping 确认链路,再用 telnet 目标IP 1534 确认端口可达。

四、首个镜像烧录与验证

环境搭好后,用一个最小可运行镜像验证整条链路。推荐从 Workbench 自带的示例工程开始,例如 Hello World 或 Kernel Shell。编译前确认工程属性中的工具链、目标架构、优化等级(调试阶段建议 -O0 -g)与目标机匹配。编译成功后生成 .out 或 .bin 文件,通过 Target Server 下载到目标机。

下载方式有两种:一是通过 Workbench 的 Run → Run Configurations 直接下载并启动;二是通过 TFTP 或串口手动烧录。首次验证建议用 Workbench 直接下载,便于观察日志。下载后目标机串口应输出类似以下内容:

VxWorks 7.0
Copyright 1984-2023 Wind River Systems, Inc.
Kernel: WIND version 2.0
...
-> 

看到 -> 提示符说明内核已启动并进入 Shell。此时输入 i 查看任务列表,输入 version 查看版本信息,输入 devs 查看设备列表。若 Shell 无响应,检查串口波特率(常见 115200)、流控设置和线序。若下载失败,检查 Target Server 连接状态、镜像路径和权限。

五、环境搭建检查清单

为便于复现和排障,下面给出一份可直接使用的检查清单。每项都对应一个可观察的结果,而不是笼统的“配置完成”。

检查项 操作 通过标准
Workbench 安装 启动 Workbench,查看 About 信息 版本号正确,许可证状态为已授权
工具链可用 执行 arm-wrs-vxworks-gcc -v 输出目标架构、GCC 版本、sysroot 路径
Target Server 连接 Target Manager 中添加目标机 状态显示 Connected,可读取符号表
镜像编译 编译 Hello World 工程 生成 .out 文件,无链接错误
镜像下载 通过 Run Configuration 下载 目标机串口输出启动日志
Shell 验证 输入 i、version 返回任务列表和版本信息