ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

VxWorks 6.8与WorkBench 3.2环境搭建全攻略:从安装到调试避坑指南

VxWorks 6.8与WorkBench 3.2环境搭建全攻略:从安装到调试避坑指南 干了十几年的嵌入式开发提到VxWorks这套东西很多新入行的朋友可能一脸懵但只要是搞过航天、军工、电力、轨交这些领域的老工程师一听WorkBench 3.2加VxWorks 6.8的组合基本都会心一笑——这正是当年用得最顺手、也是最后一代经典IDE与RTOS搭配之一。虽然Wind River后来推出了更新版本但大量存量项目、老设备的维护和二次开发依然牢牢钉在WorkBench 3.2和VxWorks 6.8这套环境上。我这几年帮同事搭环境、自己也重装了好几台机器总结了不少安装细节和踩坑记录今天干脆一次性写出来给准备接手老项目、或者实验室里要搭VxWorks教学环境的同学做个完整参考。这篇文章覆盖从环境准备、软件安装、许可证配置、目标机服务器配置到第一个工程的创建、编译、烧写验证的全流程。无论你是在Windows真机、还是在VMware虚拟机里装照着走基本都能跑通。文章里还会把安装过程中最常见的报错、坑点、排查方法整理成速查表方便以后出问题时随手翻。1. 安装前的准备工作1.1 硬件、操作系统与虚拟机环境要求先说硬件。WorkBench 3.2和VxWorks 6.8是2008年前后发布的工具链对硬件的要求放在今天看其实很低但也正因为老反过来对“新”硬件有莫名其妙的挑剔。我建议至少满足这几个条件CPU双核以上即可不需要高性能安装过程比较吃单核主频主频2.0GHz以上体验好一些。内存至少2GB推荐4GB。编译大型工程时内存占用会明显上升4GB才够从容。磁盘空间WorkBench 3.2安装完大约需要6GB左右VxWorks 6.8组件安装完又要占4~6GB再加上后续BSP、工程文件、补丁包建议预留20GB以上空间。网络必须有一块物理网卡或者虚拟机里配置好桥接网络。目标机调试是网络通信网卡不稳定后面会非常头疼。操作系统这块是最大的坑。这套工具链最完美的运行环境是Windows XP或Windows Server 2003其次是32位Windows 7。如果你手头只有64位Win7、Win10甚至Win11就别硬刚真机了直接用VMware装一个Windows XP或Win7 32位的虚拟机这是最省心的方案。我先后在Win7 64位和Win10上试过直接安装结果不是注册表服务起不来就是WorkBench启动时提示找不到Java虚拟机折腾半天最后还是回到虚拟机。用VMware时有个要点虚拟机的网络模式必须选桥接千万不要用NAT。原因很简单目标机服务器需要在网络上广播和发现目标机NAT相当于躲在路由器后面目标板根本找不到主机后面调试的时候会出现“目标机不可达”这种莫名其妙的错误。装完系统之后建议先固定一个静态IP然后关闭Windows防火墙和Windows Defender实时防护这套老工具的服务端口都是自管理的防火墙拦一下服务就瘫了。1.2 安装包识别与目录结构WorkBench 3.2和VxWorks 6.8的安装包一般以光盘镜像ISO形式提供有的项目组还会刻成实体光盘。拿到镜像后先挂载或解压确认里面几类关键内容都在WorkBench 3.2安装程序通常叫setup.exe或install_windows.exeVxWorks 6.8安装程序一般独立于WorkBench在另一个镜像里Patcher补丁工具及相关补丁包文档目录包含Release Notes、Installation Guide、BSP说明书等许可证相关文件或License Server安装包。我的习惯是先把镜像所有内容全部解压到一个纯英文路径下比如D:\Workbench_Install不要直接在虚拟光驱里双击安装也不要放在带空格或者中文的目录里。这个工具链的安装程序对路径解析比较脆弱路径稍微复杂一点中间某个组件就会报错而且是那种看不出原因的通用错误码。解压完以后记得看一下镜像的总大小和文件完整性如果文件缺失或者解压报错后面安装到一半换盘是非常痛苦的。另外建议在安装前先记下主机的MAC地址和CPU信息。WorkBench的许可证通常和主机绑定生成license文件时需要用到hostid不同的授权方式可能要求MAC地址或CPU序列号。先把这个记好后面配置许可证能少走很多弯路。2. WorkBench 3.2正式安装过程2.1 安装步骤与关键选项解析WorkBench 3.2的安装过程整体是向导式的但有几个界面需要特别留意选错了后续很麻烦。第一步找到解压目录里的setup.exe右键以管理员身份运行。安装程序会先解压临时文件然后进入欢迎界面。这里注意有的镜像会带一个InstallAnywhere的引导程序会先让你选择安装语言选English即可中文系统下选中文虽然界面友好但偶尔会出现字体乱码和路径编码问题。进入组件选择界面后核心是勾选WorkBench主程序以及配套的Host Tools、Simulator和文档组件。我的建议是除了纯BSP相关的组件可以后面再补其他能装的全部装上。尤其是Simulator就算你现在不用后面调试协议栈、验证工程时非常有用可以在没有目标板的情况下先跑一个虚拟目标机。这个组件很多人安装时不勾等到想用的时候又要重装一遍非常浪费时间。安装路径默认是C:\WindRiver我建议就保持默认。这个路径会被写进很多环境变量和配置文件里如果你改成D盘必须保证路径纯英文且没有空格比如D:\WindRiver否则后续编译器调用、BSP编译脚本都会出问题。另外安装的目标版本选择界面里WorkBench 3.2的安装程序会同时提供VxWorks 6.8的安装入口但我的经验是最好分开安装先装WorkBench再单独装VxWorks两个一起装看起来省事实际上安装日志混在一起出问题了不好排查。安装过程中程序会注册几个Windows服务主要是Wind River Registry和Wind River FTP Server。这时候Windows会弹出防火墙提示一定要勾选“允许访问”并选择“专用网络”和“公用网络”都允许。很多人在这一步点了取消结果后面目标机服务器起不来或者FTP下载镜像一直超时排查了半天才发现是防火墙把服务端口全拦了。安装结束后先别急着启动WorkBench到开始菜单里找到Wind River目录确认WorkBench 3.2的快捷方式已经生成。接着打开命令提示符输入wtxregd并回车检查Wind River Target Server服务的注册状态如果提示服务未注册需要手动执行一次服务注册。这一步容易被忽略但非常关键目标机服务器能不能正常用就看这个服务了。2.2 License服务器与许可配置细节WorkBench 3.2的许可证机制是基于FlexLM的安装好之后第一步就是要让它能找到合法的许可证。不少人在安装完软件后兴冲冲启动WorkBench结果界面一闪而过或者提示“License not found”多半就是许可证配置没做。首先确认安装包里是否附带许可证文件一般是一个license.lic文本文件里面含一行SERVER和若干行FEATURE。如果没有现成的license文件就需要通过主机hostid向Wind River申请这个流程得提前走因为邮件审批可能要几天。然后是配置License方式有两种常用方案。一种是本地文件方式把license.lic放到一个固定目录比如C:\WindRiver\license\license.lic然后添加系统环境变量WIND_LICENSE_FILE值填这个文件的完整路径。另一种是服务器方式如果项目组有统一的License服务器就把WIND_LICENSE_FILE设置为portserver_ip的格式例如27001192.168.1.10这样所有开发机可以共用一套License。我自己的经验是单机开发用本地文件方式最省心。服务器方式虽然能共享授权但一旦服务器宕机或者网络抖动WorkBench启动会变得非常慢甚至直接卡死。在目标板调试的关键时刻碰到这种事真的会崩溃。配置完环境变量后需要重启系统让环境变量生效或者至少重启WorkBench。启动后可以在Help菜单下找到License相关页面查看实际的授权信息和到期时间。还有一个常见坑就是同一台机器上装了多个Wind River产品它们的环境变量会互相覆盖。比如之前装过其他版本的工具链WIND_LICENSE_FILE被指向了旧版License启动WorkBench 3.2时就会报版本不匹配。遇到这种情况把环境变量统一指向新版License文件即可。3. VxWorks 6.8安装与BSP集成3.1 VxWorks组件安装及目录结构说明WorkBench装好之后接下来装VxWorks 6.8。VxWorks的安装程序一般会识别到已经安装的WorkBench版本并自动把组件解压到C:\WindRiver\vxworks-6.8目录下。安装时同样要注意组件选择。VxWorks 6.8的安装组件包括编译器工具链GNU和Diab、所有官方BSP包、目标机组件库、主机端工具等。我建议全选因为这些组件加起来也就几个GB大小后面做板级移植时说不定哪个BSP就能派上用场。尤其是GNU编译器VxWorks 6.8所有的内核和BSP默认都是用GNU工具链编译的不装的话连个空工程都编译不过。安装完成之后建议先熟悉一下C:\WindRiver\vxworks-6.8的目录结构。target\config\all目录存放的是架构无关的公共配置文件target\config\bspname目录是各个具体BSP的源码和配置文件target\lib目录是预编译的内核库和组件库。搞清楚这几个目录后面改BSP、排查编译错误会轻松很多。还有一个细节VxWorks 6.8安装镜像里往往附带一个support或bsp文件夹里面是额外的BSP包这些包不会自动解压需要手动拷贝到target\config目录下。很多人在官网下载了对应板卡的BSP不知道该放哪其实就是放在这个目录里。3.2 如何正确选择BSPBSPBoard Support Package说白了就是一块目标板的“硬件抽象层”它负责把VxWorks内核和具体的CPU、内存、串口、网卡等硬件隔离开。选BSP是整个安装过程中最关键的一步选错了后续编译、启动都会出问题。选择BSP首先要确定目标板的处理器型号和架构。VxWorks 6.8支持的BSP覆盖了x86、PowerPC、ARM、MIPS等主流架构常见的有PENTIUM4x86通用、MV5100PowerPC、P2020RDBPowerPC、AT91SAM9260ARM等。如果你用的是开发板包装盒或者手册上一般会写明推荐的BSP名称如果是自己设计的板子就需要根据CPU型号找到最接近的参考BSP再通过修改config.h适配。其次是确认目标板上的外设型号尤其是网卡芯片。VxWorks的网络驱动是绑定在BSP里的如果网卡型号与BSP自带的驱动不匹配内核启动后网络接口就是死的根本无法通过网络下载镜像。常见的Intel 82559、82574等网卡在PENTIUM4 BSP里都有支持如果是其他型号的网卡就得找到对应BSP或者自己移植驱动。看到一个BSP目录时怎么判断它是否完整我的检查方法是看三个文件Makefile、config.h和bspname.h。Makefile定义了编译规则和依赖config.h是整个BSP的配置中心里面会涉及内存布局、启动参数、默认IP等bspname.h则定义了板卡型号、时钟频率、外设基址等硬件参数。这三个文件都在基本可以认定BSP是完整的。如果你用的是VMware虚拟机加Simulator来学习那就可以跳过BSP选择这一步直接用SIMLINNT或SIMPC这类模拟器BSP。Simulator相当于在主机上跑一个虚拟VxWorks不需要真实目标板非常适合前期熟悉WorkBench环境和调试流程。3.3 Patcher补丁工具的使用装完VxWorks 6.8之后强烈建议接着把官方补丁打上。很多人的VxWorks跑着跑着出现网络栈崩溃、文件系统异常或者编译器生成代码有莫名其妙的问题其实都是因为没打补丁。VxWorks 6.8从发布到生命周期结束官方陆陆续续出了十几个补丁包修复了大量已知问题。Patcher工具一般在WorkBench的安装目录下可以通过开始菜单的Wind River Patcher启动。它的使用逻辑很简单选择需要打补丁的产品比如VxWorks 6.8然后加载从官网下载的补丁包文件一般是.zip格式最后把补丁安装到对应安装目录。打补丁时要注意几个细节。第一补丁必须在所有开发任务暂停的时候打因为补丁会替换编译器、内核库和BSP文件如果此时有工程正在使用这些文件打补丁会失败。第二打完补丁后以前编译过的工程必须全部重新编译不能复用旧的.o文件否则链接时会出现符号版本不匹配的错误。第三Patcher本身也有版本要求老版本的Patcher可能不识别新补丁包必要时需要先升级Patcher工具。如果项目组里有多台开发机补丁包最好统一管理和分发。我见过有的项目因为某台机器没打补丁编译出来的内核在目标板上跑起来行为不一致排查了一周最终发现是补丁版本差异导致的。这种问题特别隐蔽值得从一开始就规范起来。4. 目标机服务器配置与第一个工程的完整验证4.1 目标机服务器的作用与配置方法WorkBench和目标机之间的通信全靠目标机服务器Target Server这个中间人。可以把它理解成一个翻译官WorkBench里的调试指令通过它翻译成目标机能够理解的协议包目标机上报的状态信息也通过它回传给WorkBench。它集成了FTP服务、Telnet服务、调试代理和符号表管理等功能配置不正确的话后面所有调试都没法进行。打开WorkBench在菜单栏找到Target - Target Server Configurations新建一个配置。连接方式通常选Network这两项比较容易困惑Backplane是VxBus背板方式只在特定硬件上使用Network则适用于所有带网卡的板卡包括Simulator。网络连接的关键参数包括目标机IP地址、主机IP地址、FTP用户名和密码。VxWorks的默认FTP账号通常是target密码也是target。如果在BSP的config.h里修改过默认密码这里需要保持一致。端口方面目标机服务器默认监听1534端口主机端使用FTP的21端口确保这些端口没有被其他程序占用。如果是用Simulator目标机服务器配置更简单直接选择对应的模拟器BSPWorkBench会自动创建一个虚拟网络接口。不用设置IP地址Simulator内部会自动分配适合初学者快速上手。4.2 创建并编译第一个VxWorks工程环境就绪后我们来创建一个工程把全流程验证一遍。打开WorkBenchFile - New - VxWorks Image Project输入工程名选择对应的BSP。如果这里找不到你的BSP说明BSP没有正确安装到target\config目录或者WorkBench没有刷新BSP列表重启一次WorkBench一般就能解决。创建工程后WorkBench会显示VxWorks组件配置界面。这里默认配置已经可以编译出一个最小内核但为了后面调试方便建议在组件面板里手动勾选几个常用组件telnet server、ftp server、Shell命令行组件。这些组件不勾选也能跑但少了它们你就只能通过WorkBench的图形调试界面看状态想直接在目标机上敲命令就不行了。编译前还要确认一下构建目标。VxWorks工程默认会生成vxWorks这个内核镜像如果需要生成bootrom引导程序可以在Build Target里选择bootrom或bootrom_uncmp。bootrom的作用是把内核从主机或Flash加载到内存网络启动方式下必须先用bootrom引导再下载vxWorks镜像。点击Build按钮编译开始。第一次编译会比较慢尤其是Simulator工程可能要好几分钟。编译过程中注意观察Console窗口的输出看到Creating vxWorks ... done或者类似信息说明编译成功。如果报错优先检查BSP路径、编译器路径和磁盘剩余空间。WorkBench的编译器路径是在安装时自动写入的如果之前修改过WindRiver安装目录这里很容易出问题。我个人建议工程目录不要放在C:\WindRiver里面。默认工程路径在C:\WindRiver\workspace下但老工具链对工作空间里的中文路径支持不好。我一般单独建一个workspace目录比如D:\VxWorks_Workspace这样工程文件、生成的镜像都不跟工具链混在一起备份和迁移也方便。4.3 目标板启动与调试连接验证工程编译通过后开始板级联调。先把目标板的串口线、网线都接好目标板通过串口输出启动日志。设置目标板从网络启动上电后bootrom引导程序会在串口终端打印启动信息此时迅速按键盘上的空格键或其他指定按键进入启动行配置界面。启动行boot line是VxWorks引导时最关键的一串参数大致长这样motetsec(0,0)host:vxWorks h192.168.1.10 e192.168.1.11 utarget pwtarget tntarget解释一下这串参数的含义motetsec(0,0)表示使用第0个网卡的第0个接口host:vxWorks表示从主机下载名为vxWorks的镜像文件h指定主机的IP地址e指定目标机自己的IP地址u和pw是FTP登录的用户名和密码tn是目标机名称。在启动行界面里把这些参数改成你的实际环境保存并重启bootrom就会通过FTP从主机下载vxWorks镜像并跳转到内核入口执行。此时回到WorkBench在Target Server配置中启动之前配置好的目标机服务器等目标机屏幕上出现VxWorks的shell提示符-说明内核已经跑起来了。在WorkBench里你可以尝试连接这个目标机建立调试会话。连接成功后左侧的Target Explorer里能看到任务列表、内存信息在命令行窗口里敲i可以查看当前运行的任务列表。我第一次搭这个环境时卡在目标板下载镜像这一步整整一天后来发现是FTP服务没启动。WorkBench自带的FTP服务器需要在服务列表里启动而且启动前要确保防火墙放行。这个环节出的问题最多后面的排查章节我会展开讲。5. 常见问题与排查技巧实录5.1 典型报错速查表装了这么多年环境我把最常见的报错和解决办法整理成了速查表遇到问题可以先对照排查报错或异常现象可能原因解决办法安装过程报错1935或2135系统组件缺失或安装程序与系统版本不兼容改用Windows XP/7虚拟机安装以管理员身份运行安装程序WorkBench启动提示找不到Java虚拟机WorkBench自带的JRE未正确安装或环境变量被覆盖重新安装WorkBench时确保勾选JRE组件检查JAVA_HOME和PATH环境变量Target Server启动失败Wind River注册服务未启动或服务被防火墙拦截运行wtxregd重新注册服务检查防火墙放行1534、21端口FPT下载镜像超时目标机与主机IP不在同一网段或FTP服务未启动检查启动行参数中h和e确认主机FTP服务已启动目标机启动后网络接口是-状态BSP里网卡驱动不匹配或网卡芯片型号不符更换正确的BSP在config.h中修改DEFAULT_BOOT_LINE和网卡参数编译报错找不到头文件BSP路径未配置或编译器工具链缺失检查target\config下BSP是否完整确认GNU编译器已安装目标机下载镜像后系统重启内存地址配置错误或bootrom与内核不匹配检查config.h中的RAM_LOW_ADRS和RAM_HIGH_ADRSbootrom和vxWorks用同一套BSP编译WorkBench启动后界面卡死License服务器连不上或网络解析慢改用本地License文件检查WIND_LICENSE_FILE配置这个表只是一份入门速查实际项目中的问题往往更隐蔽需要结合日志和硬件环境具体分析。5.2 几个必须牢记的经验心得根据我反复装环境踩过的坑有几个经验可以免费分享给后来人。第一个心得不要在64位系统上浪费时间。网上有各种WorkBench 3.2在64位Win7下的“破解”安装方法说实话绝大多数都是碰运气即使装上了后续调试过程中也可能出现各种诡异问题。用虚拟机装一个32位Windows XP或Win7运行效率足够高稳定性和兼容性却是真机没法比的。做嵌入式开发稳定压倒一切。第二个心得每次修改BSP的config.h或者config.bat前一定要先备份。VxWorks的BSP配置文件里一个标点错误就可能导致整个内核编译失败而且错误信息常常晦涩难懂。备份一个原始版本改了出问题还能快速回退不然只能重新解压安装包费时费力。第三个心得如果条件允许给项目组配置一台统一的License服务器并且做好License文件的版本管理。很多项目组用我前面说的本地License方式每台机器一个文件时间一长就乱了。谁改了文件、什么时候到期的完全没有记录。统一管理之后新同事入职配环境只需要把环境变量指到License服务器十分钟就能搞定。第四个心得网络环境一定要固定。我见过不少项目组开发机的IP是DHCP动态获取的今天能连目标机明天路由器一重启IP变了目标板的启动行参数也得跟着改。更麻烦的是目标板往往没有键盘只能通过串口进入启动行修改操作繁琐还容易出错。建议把开发机IP固定下来目标板IP也固定下来能省掉无数额外的工作量。6. 老环境的新心得最后再分享一点个人体会。像WorkBench 3.2和VxWorks 6.8这套组合技术上虽然已经不算前沿了但在存量项目维护和特定行业应用中仍然是主力工具。每当我需要在一台新机器上把整套环境搭起来时我都会先静下心确认操作系统版本、网络模式、许可证这些前置条件而不是急着双击安装程序往前冲。前置条件确认好了后面的安装通常一气呵成。做嵌入式开发这么多年我越发觉得环境搭建这件事慢就是快。今天图省事跳过了一个检测后面可能要花几倍的时间去排查。希望这篇教程能帮你一次就把WorkBench 3.2和VxWorks 6.8的环境跑起来少走一点弯路。如果你在安装过程中碰到什么这里没提到的奇怪问题欢迎在评论区留言我看到后会尽量给出排查建议。
返回列表