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;若使用节点锁定许可证,则指向本地许可证文件。
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 端口,以及目标机与宿主机是否在同一网段。
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 环境变量未被其他软件覆盖。
环境搭建检查清单
完成上述配置后,建议按以下清单逐项确认,避免在后续自动化测试中出现环境问题:
| 检查项 | 预期结果 | 验证方式 |
|---|---|---|
| Workbench 启动 | 无许可证报错,工作空间正常加载 | 启动 IDE 并新建工程 |
| 交叉编译器 | 版本号与目标架构匹配 | arm-wrs-vxworks7-gcc --version |
| BSP 导入 | 工程无红色错误标记 | Workbench 工程视图检查 |
| 网络连通 | 宿主机与目标机互相 ping 通 | ping 192.168.1.200 |
| 镜像下载 | 目标机成功启动并输出版本信息 | 串口终端观察启动日志 |
| 许可证状态 | 功能项可用,无过期提示 | lmutil lmstat -c 27000@server |