VxWorks 6.8 下安装与配置 Qt 4.8.3 详细指南
1. 前言 #
本文详细描述了在 VxWorks 6.8 操作系统下安装和设置 Qt 的方法,给出了完整的操作过程,并包含在 vxsim 虚拟机和实际目标板上编译、运行 Qt demo 程序的详细步骤。
2. 开发环境及工具 #
安装前请准备以下工具:
| 序号 | 名称 | 备注 |
|---|---|---|
| 1 | Qt-vxworks-commercial-src-4.8.3.zip | 需从相关渠道获取 |
| 2 | MinGW 5.1.6 | 可从官网下载 |
| 3 | Strawberry Perl | 可从官网下载 |
| 4 | VxWorks 6.8 (Workbench 3.2) | 需从相关渠道获取 |
| 5 | Windows 7 64bit | 开发机操作系统 |
说明:
- Strawberry Perl 下载地址:http://strawberryperl.com
- MinGW 下载地址:http://sourceforge.net/projects/mingw/files
- Qt for VxWorks 版本和 VxWorks 6.8 需从相关渠道购买。
3. 开发环境安装配置 #
3.1 安装 Workbench 3.2 #
请参考 VxWorks 6.8 安装手册,按说明书一步一步安装即可,本文不再赘述。
3.2 安装 MinGW #
解压 MinGW,双击 MinGW-5.1.6.exe,按默认设置安装,建议安装在 C 盘。
3.3 安装 Strawberry Perl #
双击 strawberry-perl-5.18.1.1-32bit.exe,按默认设置安装,建议安装在 C 盘。
安装完成后需要设置环境变量,在 Path 中添加:
C:\MinGW\bin;C:\strawberry\c\bin;C:\strawberry\perl\site\bin;C:\strawberry\perl\bin
3.4 安装 Qt 4.8.3 #
- 将
Qt-vxworks-commercial-src-4.8.3.zip解压。 - 复制到 Wind River Workbench 的 workspace 目录中。
- 根据使用场景重命名:
- 在 vxsim 虚拟机上测试:改为
qtsimdkm - 在目标机上使用:改为
qtp4dkm
- 在 vxsim 虚拟机上测试:改为
这样做可以避免不同开发环境在交叉编译时引入错误配置。
设置环境变量 #
- vxsim 虚拟机开发:在 Path 中添加
D:\WindRiver\workspace\qtsimdkm\bin
- 目标机开发:在 Path 中添加
D:\WindRiver\workspace\qtp4dkm\bin
注意:上述两个路径不要同时添加,以免出错。
4. 在 vxsim 虚拟机上开发 Qt 应用程序 #
4.1 编译 windML 库 #
参考官方手册 Wind River Media Library SDK Programmer’s Guide 5.3,按标准步骤配置并编译。注意此时 CPU 选择 SIMPC。
4.2 新建 VxWorks 镜像 #
以 vxsim 虚拟机为例:
- 在 Workbench 3.2 中选择 File → New → VxWorks Image Project。
- 建立一个名为
zvipsim的虚拟机镜像工程。
工程建立完成后,双击 Kernel Configuration,添加以下组件包:
INCLUDE_WINDML
INCLUDE_POSIX_ADVISORY_FILE_LOCKING
INCLUDE_POSIX_FTRUNC
INCLUDE_POSIX_MQ
INCLUDE_POSIX_MEM
INCLUDE_POSIX_SCHED
INCLUDE_POSIX_SEM
INCLUDE_POSIX_PTHREADS
INCLUDE_POSIX_PTHREAD_SCHEDULER
NUM_FILES=200
RTP_FD_NUM_MAX=200
INCLUDE_MMAP # 注:VxWorks 6.8 中无此包
INCLUDE_POSIX_MAPPED_FILES
INCLUDE_HRFS
INCLUDE_HRFS_FORMAT
HRFS_DEFAULT_MAX_BUFFER=1024
HRFS_DEFAULT_MAX_FILES=200
INCLUDE_XBD_RAMDRV
INCLUDE_XBD_PART_LIB
然后在 usrAppInit.c 中添加以下代码,用于在系统启动时创建 RAM disk:
/* for QT */
#include "stdio.h"
#include "hrFsLib.h"
#include "xbdPartition.h"
#include "xbdRamDisk.h"
#define DEVNAME "/tmpram" /* name of the RAM disk */
#define BLOCKSIZE 512
#define DISKSIZE (BLOCKSIZE * 10000)
/* end of QT */
void usrAppInit (void)
{
#ifdef USER_APPL_INIT
USER_APPL_INIT; /* for backwards compatibility */
#endif
/* add application specific code here */
/* for QT ----------------- */
STATUS error;
device_t xbd;
xbd = xbdRamDiskDevCreate(BLOCKSIZE, DISKSIZE, 0, DEVNAME);
if (xbd == NULLDEV)
{
printf("**Failed to create RAM disk\n");
return;
}
printf("RAM disk created OK\n");
error = hrfsFormat(DEVNAME, DISKSIZE, BLOCKSIZE, 1000);
if (error != OK)
{
printf("**failed to format RAM disk, errno=0x%0x\n", error);
return;
}
printf("RAM create and format OK\n");
/* end of QT --------------------- */
}
完成以上配置后编译镜像。编译成功后,在 VxWorks 6.8 Development Shell 中进入 zvipsim/default 目录,执行:
vxsim --size 800M
启动虚拟机。
4.3 配置 Qt #
在 VxWorks 6.8 Development Shell 中进入 qtsimdkm 目录,执行 configure:
configure -confirm-license -embedded -platform win32-g++ \
-xplatform qws/vxworks-simdkm-g++ \
-exceptions -qt-freetype -qt-zlib -qt-libpng -qt-libtiff \
-qt-libjpeg -qt-libmng -no-qt3support -no-openssl \
-nomake examples -nomake docs -nomake translations \
-no-script -no-webkit \
-prefix /tmp/qtsimdkm -static -release \
-D QT_QWS_TEMP_DIR=\\\"/tmpram\\\" -make make
说明:加粗或需要修改的部分要根据实际开发环境调整。以上是 vxsim 虚拟机的配置。如果是 x86 目标机,需要改为:
-xplatform qws/vxworks-Pentium4dkm-g++-prefix /ata0a/tmp/qtp4dkm
configure 执行完成后,会在 qtsimdkm 目录下生成 Makefile。随后进入该目录执行 make 进行编译(大约需要 10~20 分钟)。
编译成功后,将 workspace\qtsimdkm\lib 下的所有内容复制到 C:\tmp\qtsimdkm\lib。如果是目标环境,则复制到目标机硬盘 /ata0a/tmp/qtp4dkm/lib 下。
4.4 编译并运行 Qt 程序 #
- 在 VxWorks Development Shell 中进入
qtsimdkm\demos\affine目录,执行make,编译生成可执行文件affine。
- 将编译出的
affine文件复制到虚拟机镜像所在目录workspace\zvipsim\default。 - 启动虚拟机:
vxsim --size 800M
- 在 vxsim0 中执行以下命令:
ld < affine
taskSpawn("main", 200, 0x01000000, 0x100000, main, 0, 0, 0, 0, 0)
即可看到 Qt demo 程序运行界面。
至此,VxWorks vxsim 虚拟机上运行 Qt 成功。
5. 在目标机上开发 Qt 应用程序 #
5.1 编译 windML 库 #
同样参考 Wind River Media Library SDK Programmer’s Guide 5.3 进行配置和编译。根据目标板选择对应的 CPU(本文测试目标板 CPU 为 Intel ATOM,选择 Pentium4)。
5.2 新建 VxWorks 镜像 #
按照 4.2 节步骤建立 VxWorks Image Project,注意在选择 CPU 和 BSP 时使用目标板实际的 BSP。建好后同样在 usrAppInit.c 中添加创建 RAM disk 的代码,并添加以下组件包:
INCLUDE_WINDML
INCLUDE_POSIX_ADVISORY_FILE_LOCKING
INCLUDE_POSIX_FTRUNC
INCLUDE_POSIX_MQ
INCLUDE_POSIX_MEM
INCLUDE_POSIX_SCHED
INCLUDE_POSIX_SEM
INCLUDE_POSIX_PTHREADS
INCLUDE_POSIX_PTHREAD_SCHEDULER
NUM_FILES=200
RTP_FD_NUM_MAX=200
INCLUDE_MMAP # 注:VxWorks 6.8 中无此包
INCLUDE_POSIX_MAPPED_FILES
INCLUDE_HRFS
INCLUDE_HRFS_FORMAT
HRFS_DEFAULT_MAX_BUFFER=1024
HRFS_DEFAULT_MAX_FILES=200
INCLUDE_XBD_RAMDRV
INCLUDE_XBD_PART_LIB
编译完成后通过网络下载到目标板测试,确认运行正常。
5.3 配置 Qt #
在 VxWorks 6.8 Development Shell 中进入 qtp4dkm 目录,执行:
configure -confirm-license -embedded -platform win32-g++ \
-xplatform qws/vxworks-Pentium4dkm-g++ \
-exceptions -qt-freetype -qt-zlib -qt-libpng -qt-libtiff \
-qt-libjpeg -qt-libmng -no-qt3support -no-openssl \
-nomake examples -nomake docs -nomake translations \
-no-script -no-webkit \
-prefix /ata0a/tmp/qtp4dkm -static -release \
-D QT_QWS_TEMP_DIR=\\\"/tmpram\\\" -make make
配置成功后会在 qtp4dkm 目录下生成 Makefile。打开命令行进入该目录执行 make 进行编译(大约 10~20 分钟)。
编译完成后,将生成的 lib 库文件复制到目标机硬盘 /ata0a/tmp/qtp4dkm/lib 下。
通过网络启动目标机,在 Workbench 上建立远程连接,将应用程序 D:\WindRiver\workspace\qtp4dkm\demos\affine\affine 下载到目标机。
下载完成后,在调试机 Shell 或目标机上执行:
taskSpawn("main", 200, 0x01000000, 0x100000, main, 0, 0, 0, 0, 0)
即可启动 Qt 程序。