2、开发环境搭建:Workbench IDE安装与配置、Wind River Linux Host设置、Target Simulator使用、BSP(板级支持包)概念与加载
好,咱们直接进入正题。做驱动开发,第一件事就是把家伙事儿备齐。环境搭不好,后面全是坑。我见过太多新手卡在安装配置上,一卡就是半天,心态直接崩了。今天我就把这几步拆开揉碎了讲清楚。
2.1 Workbench IDE安装与配置
Workbench 是 Wind River 官方的 IDE,基于 Eclipse 改的。说白了,它就是咱们写代码、编译、调试的一站式平台。
安装步骤:
- 获取安装包:从 Wind River 官网下载对应版本的 Workbench。注意,VxWorks 6.x 和 7.x 的 Workbench 版本不通用。
- 运行安装程序:双击 setup.exe,一路 Next。但这里有个坑——安装路径不要有中文和空格。我当年图省事装在了 "C:\Program Files" 下,结果编译时各种路径解析错误,折腾了两天才发现是空格惹的祸。
- 选择组件:建议全选。如果你硬盘够大,别省这点空间。缺了某个组件,后面编译 BSP 时报错,你都不知道缺啥。
- 配置许可证:Workbench 需要 license。如果是正版,把 license 文件放到指定目录;如果是试用版,申请试用码。嗯,这里要注意,license 过期了 IDE 会直接罢工,连编译按钮都灰掉。
配置要点:
- 工作空间设置:启动 Workbench 时会让你选 workspace。我个人习惯把 workspace 放在 SSD 上,编译速度快不少。
- 编译器路径:Window -> Preferences -> Wind River -> Toolchain,确认编译器路径正确。如果你装了多个版本,这里容易搞混。
- 调试器配置:默认用 GDB。如果你用 Simulator,记得把调试目标设为 "Simulator"。
2.2 Wind River Linux Host设置
为什么要在 Linux Host 上搞?因为 VxWorks 的很多工具链和编译脚本原生跑在 Linux 上更顺畅。Windows 下虽然也能用,但偶尔会出些莫名其妙的问题。
设置步骤:
- 安装 Wind River Linux:这是一个定制版的 Linux,自带 VxWorks 开发所需的所有库和工具。安装时选 "Full Installation",别省。
- 配置环境变量:编辑
~/.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,结果编译出来的镜像在目标板上跑不起来——因为架构不对。
- 安装依赖包:Wind River Linux 自带的包管理器可以装额外工具。比如:
sudo apt-get install build-essential git libncurses5-dev
这些是编译 BSP 和内核模块时必需的。缺了 libncurses5-dev,menuconfig 界面都打不开。
2.3 Target Simulator使用
Simulator 是咱们的救星。没有开发板的时候,全靠它跑代码。说白了,它就是一个软件模拟的 VxWorks 目标机。
启动 Simulator:
- 在 Workbench 中,点击 Run -> Debug Configurations。
- 新建一个 "Wind River Simulator" 配置。
- 选择 BSP 为 "simpc"(这是最常见的 Simulator BSP)。
- 设置内存大小,默认 64MB 够用。如果你要跑复杂应用,可以调到 128MB。
连接 Simulator:
- 启动后,Simulator 会开启一个虚拟串口(通常是 localhost:1234)。
- 在 Workbench 的 "Target Manager" 中,添加一个新的 target,连接类型选 "Simulator",端口填 1234。
- 连接成功后,你就能看到 VxWorks Shell 了。输入
i命令,可以查看系统信息。
我曾经在 Simulator 上调试一个网卡驱动,死活收不到包。查了两天,最后发现是 Simulator 的虚拟网卡没配置 MAC 地址。嗯,这种坑只有踩过才知道。
2.4 BSP(板级支持包)概念与加载
BSP 是什么?说白了,它就是 VxWorks 和硬件之间的翻译官。没有 BSP,VxWorks 不知道你的板子长什么样——CPU 是什么型号、内存多大、外设怎么访问。
BSP 的组成:
| 组件 | 说明 |
|---|---|
| 启动代码 | 初始化 CPU、MMU、中断控制器 |
| 内存映射 | 定义物理地址到虚拟地址的映射关系 |
| 设备驱动 | 板载外设的底层驱动(串口、网口、定时器等) |
| 配置文件 | config.h、makefile 等,定义系统参数 |
加载 BSP:
- 获取 BSP:从 Wind River 官网下载对应板子的 BSP 包。或者,如果你用的是官方开发板,BSP 通常随 SDK 一起提供。
- 导入 Workbench:File -> Import -> Wind River -> VxWorks BSP Project。选择 BSP 源码目录,Workbench 会自动识别。
- 编译 BSP:右键项目 -> Build Project。第一次编译会下载依赖的内核模块,时间比较长。我建议泡杯咖啡等着。
- 生成 VxWorks 镜像:编译成功后,在
default/目录下会生成vxWorks文件。这就是可执行的内核镜像。
BSP 加载到目标板:
- 通过 BootROM:把
vxWorks镜像烧写到板子的 Flash 中,上电自动加载。 - 通过网络加载:配置 TFTP 服务器,把镜像放在 TFTP 目录下,板子启动时通过 bootp 协议获取。
- 通过 Simulator:在 Workbench 中直接指定镜像路径,Simulator 启动时自动加载。
我个人最常用的是网络加载方式。开发阶段改代码频繁,每次烧 Flash 太慢了。网络加载改完直接重启板子,几秒钟就能看到新效果。
sysLib.c 和 config.h,把内存大小、时钟频率、外设地址这些参数填对。
好了,环境搭建这部分就讲到这里。下一章咱们开始写第一个驱动程序——一个简单的字符设备驱动。到时候你会看到,环境搭好了,写驱动其实没那么难。