2. VxWorks开发环境与工具链搭建

VxWorks 的开发方式与通用 Linux 应用开发有本质区别:目标机通常没有本地编译能力,所有代码都在宿主机上编译,再通过网络或调试通道下载到目标机运行。因此,搭建一套可用的开发环境,核心是打通“宿主机工具链—目标机镜像—连接通道—许可证”这条链路。本节围绕 Workbench 安装与配置、VxWorks 源码与 BSP 获取、交叉编译工具链、目标机与宿主机连接方式、Wind River License 管理五个方面展开,并给出可复现的配置示例。

Workbench 安装与配置

Workbench 是基于 Eclipse 的集成开发环境,是 VxWorks 6.x/7 时代的主要开发入口。安装前需要确认三件事:宿主机操作系统版本(VxWorks 7 的 Workbench 通常要求 Windows 10 64 位或特定 Linux 发行版)、安装介质(ISO 或在线安装器)、以及许可证文件。安装时建议将安装目录放在无空格、无中文的路径下,例如 D:\WindRiver,避免后续编译脚本解析路径出错。

安装完成后,首次启动 Workbench 需要指定工作空间(Workspace)。工作空间用于存放工程、构建产物和日志,建议与安装目录分离,例如 D:\wr_workspace。随后在 Window → Preferences → Wind River 中配置工具链根目录和许可证服务器地址。若使用浮动许可证,需要填写 License Server 的 host:port;若使用节点锁定许可证,则指向本地许可证文件。

Workbench 的构建系统依赖环境变量。安装后应检查系统环境变量中是否已加入 WIND_HOME、WIND_BASE、WIND_LIC_PROXY 等变量,否则命令行构建会失败。

VxWorks 源码与 BSP 获取

VxWorks 源码通常以源码包(Source Package)形式随安装介质提供,安装后位于 $WIND_BASE/vxworks-7 或类似目录下。BSP(Board Support Package)是目标机启动的关键,它包含启动代码、驱动、配置文件。获取 BSP 的途径主要有三种:随 VxWorks 安装介质附带、从 Wind River 支持网站下载对应版本、或由板卡厂商提供定制 BSP。

以常见的 ARM 架构目标机为例,BSP 目录结构一般包含 configlette、src、Makefile 和 README。在 Workbench 中导入 BSP 后,需要根据目标机实际硬件修改 config.h 中的内存基址、串口波特率、网络接口等参数。例如将串口波特率从默认的 9600 改为 115200,需同步修改目标机终端配置,否则会出现乱码。

交叉编译工具链

交叉编译工具链是宿主机上生成目标机可执行文件的编译器集合。VxWorks 7 通常使用基于 GCC 或 Clang 的工具链,命名规则如 arm-wrs-vxworks7-gcc、aarch64-wrs-vxworks7-gcc。工具链包含编译器、汇编器、链接器、二进制工具(objcopy、objdump、readelf)和调试器(gdb)。

验证工具链是否可用,可在命令行执行:

arm-wrs-vxworks7-gcc --version
arm-wrs-vxworks7-objdump -f vxWorks

第一条命令确认编译器版本与目标架构匹配;第二条命令查看生成镜像的格式与入口地址。若 objdump 报“file format not recognized”,通常说明工具链与镜像架构不一致,需要检查 BSP 的 CPU 和 TOOL 变量。

目标机与宿主机的连接方式

目标机与宿主机的连接决定了镜像下载、调试和测试数据回传的通道。常见方式有四种:串口、以太网、JTAG、USB。串口连接最简单,用于查看启动日志和进入 BootROM 命令行,但速度慢;以太网用于高速下载镜像和运行自动化测试;JTAG 用于硬件级调试和烧写 Flash;USB 多用于部分开发板的快速调试。

以以太网连接为例,典型配置如下:宿主机 IP 设为 192.168.1.100,目标机 IP 设为 192.168.1.200,子网掩码 255.255.255.0。在目标机 BootROM 中设置启动参数:

boot device : motetsec
processor number : 0
host name : 192.168.1.100
file name : D:\wr_workspace\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

配置完成后,目标机通过 TFTP 或 FTP 从宿主机下载 vxWorks 镜像并启动。若下载失败,优先检查宿主机防火墙是否放行 TFTP/FTP 端口,以及目标机与宿主机是否在同一网段。

VxWorks 开发环境与工具链连接关系 宿主机(Host) Workbench IDE 工程管理 / 构建 / 调试 交叉编译工具链 arm-wrs-vxworks7-gcc / gdb VxWorks 源码与 BSP $WIND_BASE/vxworks-7 License 管理 节点锁定 / 浮动许可证 目标机(Target) BootROM / U-Boot 启动参数配置 VxWorks 内核镜像 vxWorks / vxWorks.st 应用任务与测试程序 自动化测试用例 硬件接口 串口 / 以太网 / JTAG 编译 / 下载 调试 / 日志回传 授权校验 宿主机负责编译与授权,目标机负责运行与回传,连接通道决定下载与调试效率

Wind River License 管理

Wind River 许可证分为节点锁定(Node-Locked)和浮动(Floating)两类。节点锁定许可证绑定特定主机的 MAC 地址或主机 ID,适合单机开发;浮动许可证部署在 License Server 上,多台宿主机可共享,适合团队协作。安装许可证时,需将许可证文件放置到指定目录,并设置环境变量 WIND_LIC_PROXY 指向许可证服务。

常见问题排查:若 Workbench 启动时报“License checkout failed”,先确认 lmutil lmstat -c 27000@license_server 能否连通;若返回“Cannot connect”,检查网络和防火墙;若返回“License server is UP”但仍无法检出,检查许可证是否已过期或功能项是否匹配。对于浮动许可证,还需确认 LM_LICENSE_FILE 或 WIND_LIC_PROXY 环境变量未被其他软件覆盖。

许可证文件中的主机 ID 必须与宿主机实际网卡 MAC 一致。更换网卡或使用虚拟机克隆后,节点锁定许可证会失效,需要重新申请或改用浮动许可证。

环境搭建检查清单

完成上述配置后,建议按以下清单逐项确认,避免在后续自动化测试中出现环境问题:

检查项 预期结果 验证方式
Workbench 启动 无许可证报错,工作空间正常加载 启动 IDE 并新建工程
交叉编译器 版本号与目标架构匹配 arm-wrs-vxworks7-gcc --version
BSP 导入 工程无红色错误标记 Workbench 工程视图检查
网络连通 宿主机与目标机互相 ping 通 ping 192.168.1.200
镜像下载 目标机成功启动并输出版本信息 串口终端观察启动日志
许可证状态 功能项可用,无过期提示 lmutil lmstat -c 27000@server