2、开发环境搭建:Workbench IDE安装与配置、Wind River Linux Host设置、Target Simulator使用、BSP(板级支持包)概念与加载

好,咱们直接进入正题。做驱动开发,第一件事就是把家伙事儿备齐。环境搭不好,后面全是坑。我见过太多新手卡在安装配置上,一卡就是半天,心态直接崩了。今天我就把这几步拆开揉碎了讲清楚。

2.1 Workbench IDE安装与配置

Workbench 是 Wind River 官方的 IDE,基于 Eclipse 改的。说白了,它就是咱们写代码、编译、调试的一站式平台。

安装步骤:

  1. 获取安装包:从 Wind River 官网下载对应版本的 Workbench。注意,VxWorks 6.x 和 7.x 的 Workbench 版本不通用。
  2. 运行安装程序:双击 setup.exe,一路 Next。但这里有个坑——安装路径不要有中文和空格。我当年图省事装在了 "C:\Program Files" 下,结果编译时各种路径解析错误,折腾了两天才发现是空格惹的祸。
  3. 选择组件:建议全选。如果你硬盘够大,别省这点空间。缺了某个组件,后面编译 BSP 时报错,你都不知道缺啥。
  4. 配置许可证:Workbench 需要 license。如果是正版,把 license 文件放到指定目录;如果是试用版,申请试用码。嗯,这里要注意,license 过期了 IDE 会直接罢工,连编译按钮都灰掉。

配置要点:

  • 工作空间设置:启动 Workbench 时会让你选 workspace。我个人习惯把 workspace 放在 SSD 上,编译速度快不少。
  • 编译器路径:Window -> Preferences -> Wind River -> Toolchain,确认编译器路径正确。如果你装了多个版本,这里容易搞混。
  • 调试器配置:默认用 GDB。如果你用 Simulator,记得把调试目标设为 "Simulator"。
小技巧:第一次启动 Workbench 时,它会自动检测系统环境。如果检测到缺少某些依赖(比如 Python、Perl),它会提示你安装。别跳过,老老实实装好。

2.2 Wind River Linux Host设置

为什么要在 Linux Host 上搞?因为 VxWorks 的很多工具链和编译脚本原生跑在 Linux 上更顺畅。Windows 下虽然也能用,但偶尔会出些莫名其妙的问题。

设置步骤:

  1. 安装 Wind River Linux:这是一个定制版的 Linux,自带 VxWorks 开发所需的所有库和工具。安装时选 "Full Installation",别省。
  2. 配置环境变量:编辑 ~/.bashrc,添加以下内容:
export WIND_HOME=/opt/windriver
export WIND_BASE=$WIND_HOME/vxworks-7
export PATH=$WIND_BASE/host/bin:$PATH
export WIND_HOST_TYPE=x86-linux2

然后 source ~/.bashrc 使其生效。为什么这么配?因为 Workbench 和编译器都要靠这些变量找路径。我见过有人配错了 WIND_HOST_TYPE,结果编译出来的镜像在目标板上跑不起来——因为架构不对。

  1. 安装依赖包:Wind River Linux 自带的包管理器可以装额外工具。比如:
sudo apt-get install build-essential git libncurses5-dev

这些是编译 BSP 和内核模块时必需的。缺了 libncurses5-dev,menuconfig 界面都打不开。

注意:Wind River Linux Host 和 Workbench 的版本必须匹配。比如 VxWorks 7 SR0620 对应 Wind River Linux 9.x。混搭会导致编译错误,而且错误信息往往很隐晦。

2.3 Target Simulator使用

Simulator 是咱们的救星。没有开发板的时候,全靠它跑代码。说白了,它就是一个软件模拟的 VxWorks 目标机。

启动 Simulator:

  1. 在 Workbench 中,点击 Run -> Debug Configurations。
  2. 新建一个 "Wind River Simulator" 配置。
  3. 选择 BSP 为 "simpc"(这是最常见的 Simulator BSP)。
  4. 设置内存大小,默认 64MB 够用。如果你要跑复杂应用,可以调到 128MB。

连接 Simulator:

  • 启动后,Simulator 会开启一个虚拟串口(通常是 localhost:1234)。
  • 在 Workbench 的 "Target Manager" 中,添加一个新的 target,连接类型选 "Simulator",端口填 1234。
  • 连接成功后,你就能看到 VxWorks Shell 了。输入 i 命令,可以查看系统信息。

我曾经在 Simulator 上调试一个网卡驱动,死活收不到包。查了两天,最后发现是 Simulator 的虚拟网卡没配置 MAC 地址。嗯,这种坑只有踩过才知道。

核心要点:Simulator 不是万能的。它模拟的是通用 x86 架构,如果你要开发 ARM 或 MIPS 的驱动,还是得用真实板子。Simulator 适合前期逻辑验证和单元测试。

2.4 BSP(板级支持包)概念与加载

BSP 是什么?说白了,它就是 VxWorks 和硬件之间的翻译官。没有 BSP,VxWorks 不知道你的板子长什么样——CPU 是什么型号、内存多大、外设怎么访问。

BSP 的组成:

组件 说明
启动代码 初始化 CPU、MMU、中断控制器
内存映射 定义物理地址到虚拟地址的映射关系
设备驱动 板载外设的底层驱动(串口、网口、定时器等)
配置文件 config.h、makefile 等,定义系统参数

加载 BSP:

  1. 获取 BSP:从 Wind River 官网下载对应板子的 BSP 包。或者,如果你用的是官方开发板,BSP 通常随 SDK 一起提供。
  2. 导入 Workbench:File -> Import -> Wind River -> VxWorks BSP Project。选择 BSP 源码目录,Workbench 会自动识别。
  3. 编译 BSP:右键项目 -> Build Project。第一次编译会下载依赖的内核模块,时间比较长。我建议泡杯咖啡等着。
  4. 生成 VxWorks 镜像:编译成功后,在 default/ 目录下会生成 vxWorks 文件。这就是可执行的内核镜像。
避坑指南:我曾经在加载 BSP 时,发现编译出来的镜像死活起不来。查了半天,原来是 BSP 版本和 VxWorks 内核版本不匹配。比如 VxWorks 7 SR0620 的 BSP 不能用在 SR0650 上。所以,下载 BSP 时一定要确认版本号。

BSP 加载到目标板:

  • 通过 BootROM:把 vxWorks 镜像烧写到板子的 Flash 中,上电自动加载。
  • 通过网络加载:配置 TFTP 服务器,把镜像放在 TFTP 目录下,板子启动时通过 bootp 协议获取。
  • 通过 Simulator:在 Workbench 中直接指定镜像路径,Simulator 启动时自动加载。

我个人最常用的是网络加载方式。开发阶段改代码频繁,每次烧 Flash 太慢了。网络加载改完直接重启板子,几秒钟就能看到新效果。

经验之谈:如果你用的是自定义板子,BSP 需要自己写。别慌,Wind River 提供了 BSP 开发指南,照着模板改就行。核心要改的是 sysLib.cconfig.h,把内存大小、时钟频率、外设地址这些参数填对。

好了,环境搭建这部分就讲到这里。下一章咱们开始写第一个驱动程序——一个简单的字符设备驱动。到时候你会看到,环境搭好了,写驱动其实没那么难。