第2章 开发环境搭建:Workbench IDE安装、Wind River Linux Host配置、目标机与宿主机连接设置
好,咱们正式开始动手了。这一章要解决一个最实际的问题——怎么把VxWorks的开发环境搭起来。说实话,我见过太多初学者卡在这一步,环境没配好,后面学什么都使不上劲。所以这一章我会把每一步拆细了讲,你跟着做就行。
2.1 开发环境概览:宿主机与目标机
先搞清楚一个基本概念。VxWorks开发是典型的交叉开发模式。什么意思呢?就是你的代码在PC上写、在PC上编译,但最终跑在另一块板子上。PC叫宿主机(Host),板子叫目标机(Target)。
我个人习惯把宿主机比作「总指挥部」,目标机就是「前线阵地」。你在指挥部写好作战计划(代码),编译成目标机能懂的指令(二进制),然后通过通信链路(网络或串口)下发到前线执行。
核心要点:
- 宿主机:安装Workbench IDE、Wind River Linux、编译器、调试工具
- 目标机:运行VxWorks镜像,等待宿主机连接和调试
- 连接方式:以太网(最常用)、串口、JTAG
嗯,这里要注意:宿主机和目标机的架构往往不同。比如你的PC是x86_64,目标板可能是ARM或PowerPC。所以编译器必须是交叉编译器,不能拿gcc直接编译。
2.2 Workbench IDE安装
Workbench是Wind River官方提供的集成开发环境,基于Eclipse。说白了,它就是个「超级编辑器」,集成了代码编辑、编译、调试、性能分析等功能。
2.2.1 安装前的准备
先看看你的电脑够不够格。我遇到过有人拿4GB内存的笔记本硬装,结果卡成幻灯片。
| 项目 | 最低要求 | 推荐配置 |
|---|---|---|
| 操作系统 | Windows 10 / RHEL 7 / Ubuntu 18.04 | Windows 11 / Ubuntu 22.04 |
| 内存 | 8 GB | 16 GB 或以上 |
| 磁盘空间 | 20 GB | 50 GB(SSD) |
| CPU | 4核 | 8核或以上 |
另外,关闭杀毒软件。Workbench安装时会写注册表、装驱动,杀毒软件经常误拦。我曾经被卡巴斯基坑过一次,装到一半报错,排查了俩小时才发现是杀毒软件在作祟。
2.2.2 安装步骤
安装包一般是个ISO镜像,或者从Wind River官网下载的安装程序。步骤不复杂,但有几个坑要避开。
- 以管理员身份运行(Windows下尤其重要)
- 选择安装路径:不要有中文、不要有空格。我习惯用
C:\WindRiver\或/opt/windriver/ - 选择组件:新手建议全选,省得后面缺东西再补装
- 许可证配置:输入License Server地址或本地License文件
小技巧:安装完成后,先别急着打开。去安装目录下找 setup.sh(Linux)或 setup.bat(Windows)运行一遍,它会帮你配置环境变量和路径。这一步很多人会漏掉。
2.2.3 验证安装
打开Workbench,看看能不能正常启动。如果能看到欢迎界面,基本就成功了。然后创建一个空工程试试:
File -> New -> VxWorks Image Project
Project name: hello_world
Board Support Package: 选择你的BSP(比如simlinux)
Finish
如果工程能创建成功,说明Workbench本体没问题。
2.3 Wind River Linux Host配置
Workbench装好了,但光有它还不够。VxWorks的编译工具链、调试代理、网络服务等,都需要在宿主机上配置好。Wind River Linux Host就是干这个的。
2.3.1 什么是Wind River Linux Host?
说白了,它是一套运行在宿主机上的Linux环境,里面预装了VxWorks开发所需的所有工具。你可以把它理解成一个「开发工具包集合」。
为什么不用Windows直接开发?因为VxWorks的很多底层工具(比如GCC交叉编译器、GDB调试器)在Linux上更稳定。我个人习惯在Windows上装Workbench做界面操作,在Linux虚拟机上跑编译和调试服务。
2.3.2 安装方式
有两种方式:
- 原生安装:直接在物理机或虚拟机上装一个完整的Wind River Linux发行版
- 容器化安装:用Docker拉取Wind River提供的开发镜像
我推荐新手用虚拟机方式。装一个VMware或VirtualBox,然后导入Wind River Linux的OVA镜像。这样宿主机环境是隔离的,搞坏了也不影响主系统。
注意:Wind River Linux Host的版本必须和Workbench版本匹配。比如Workbench 4.0对应Wind River Linux 9.x,Workbench 5.0对应10.x。版本不对应,编译时会报一堆莫名其妙的错误。
2.3.3 配置网络服务
宿主机和目标机之间通信,需要几个网络服务跑起来:
| 服务名称 | 作用 | 检查命令 |
|---|---|---|
| FTP Server | 传输VxWorks镜像到目标机 | ps -ef | grep ftp |
| TFTP Server | 目标机启动时下载引导文件 | ps -ef | grep tftp |
| NFS Server | 共享文件系统(调试时常用) | showmount -e |
| Wind River Agent | 调试代理,负责宿主机和目标机的通信 | ps -ef | grep agent |
配置方法很简单,Wind River Linux Host里有个 wrs_config 工具,运行后按菜单操作就行。我曾经手写配置文件搞错过一次,后来发现用工具配置又快又准。
2.4 目标机与宿主机连接设置
环境搭好了,服务跑起来了,接下来就是让宿主机和目标机能「说上话」。
2.4.1 物理连接
最常见的连接方式是以太网。用一根网线把宿主机和目标机直连,或者通过交换机连接。如果你用的是开发板(比如Zynq、i.MX系列),板子上通常有网口。
串口连接也常用,主要用于调试早期启动阶段。但串口速度慢,传大文件不现实。
经验之谈:我建议同时保留以太网和串口两条链路。以太网用来传数据和调试,串口用来打印启动日志。万一网络不通,你还能从串口看到目标机在干什么。
2.4.2 网络配置
目标机启动后,需要给它分配一个IP地址。有两种方式:
- 静态IP:在VxWorks镜像中写死IP地址。适合固定网络环境。
- DHCP:目标机启动时自动获取IP。适合实验室环境,但要注意DHCP服务器必须可用。
在Workbench中配置目标机连接:
Window -> Preferences -> Target Management -> Target Connections
点击 "New" 创建一个新连接
选择连接类型:VxWorks 6.x/7.x Target Server
填写目标机IP地址(比如 192.168.1.100)
选择通信协议:WDB(Wind Debug)或 RPC
配置完成后,点击「Test Connection」测试连通性。如果显示「Connection successful」,恭喜你,环境搭好了。
2.4.3 常见连接问题排查
如果测试连接失败,别慌。我列几个最常见的坑:
- 防火墙拦截:Windows防火墙或Linux iptables可能拦截了WDB端口(默认是17185)。关掉防火墙试试。
- IP地址冲突:宿主机和目标机IP必须在同一网段。比如宿主机是192.168.1.10,目标机是192.168.1.100,子网掩码都是255.255.255.0。
- 目标机没启动WDB Agent:VxWorks镜像里必须包含WDB组件。如果没包含,目标机启动后不会监听调试端口。
- 网线或交换机问题:检查网口指示灯是否亮起。不亮的话换根网线试试。
我曾经踩过的坑:有一次怎么都连不上目标机,折腾了一下午。最后发现是目标机的网口速率被强制设成了100M全双工,而交换机是自适应。两边速率不匹配,导致丢包严重。解决办法是在VxWorks启动参数里加上 gei(0,0) speed=100 duplex=full。
2.5 验证环境:跑一个Hello World
环境搭好了,总得试试能不能用。我们来写一个最简单的程序,下载到目标机上运行。
/* hello.c */
#include <stdio.h>
void hello(void)
{
printf("Hello, VxWorks World!\n");
}
在Workbench中:
- 新建一个Downloadable Kernel Module项目
- 把hello.c加进去
- 编译(Build Project)
- 右键项目 -> Debug As -> VxWorks Kernel Task
如果一切顺利,你会在Workbench的控制台里看到:
Hello, VxWorks World!
看到这行输出,说明你的开发环境完全打通了。从宿主机写代码、编译、下载到目标机执行,整个链路都通了。
嗯,这一步很有成就感。我第一次跑通的时候,盯着那行输出看了好几分钟。虽然只是个Hello World,但背后是环境搭建的千辛万苦。
2.6 本章小结
这一章我们干了三件事:装Workbench、配Wind River Linux Host、连目标机。说白了,就是给VxWorks开发搭了个「舞台」。舞台搭好了,后面才能唱戏。
下一章我们会深入VxWorks的内核架构,看看这个实时系统到底是怎么工作的。到时候你会明白,为什么VxWorks能在航天、工业控制这些领域称霸几十年。
好,先到这。去把你的环境搭起来,有问题随时翻回这一章。