1. 前言

本文详细描述了在 vxworks6.8 操作系统下,如何安装设置 QT 的方法,给出了详细的过程,图文并茂,并给出了在 vxsim 虚拟机和实际目标板上编译运行 QT demo 程序的详细过程。

2. 开发环境及工具

安装前先准备以下工具

序号 名称 备注
1 Qt-vxworks-commercial-src-4.8.3.zip  
1 Qt-vxworks-commercial-src-4.8.3.zip  
2 MinGW5.1.6  
3 Strawberry Perl  
4 vxWorks6.8(workbench3.2)  
5 Win7(64bit) 开发机操作系统

以上工具中,StrawBerry 可从官网上下载(http://strawberryperl.com),MinGW也可从官网上下载(http://sourceforge.net/projects/mingw/files) ,QT for vxworks 版本和 vxworks6.8 要从相关渠道购买。

3. 开发环境安装配置

3.1. 安装 Workbench3.2

详见 vxworks6.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

VxWorks 6.8 QT

3.4. 安装 QT4.8.3

将 Qt-vxworks-commercial-src-4.8.3.zip 解 压 , 复 制 到 windriver workbench 目录中的workspace 中,复制后,进行名称更改,在 vxsim 虚拟机上测试的改为 qtsimdkm,在目标机上的改为 qtp4dkm,这样防止开发环境不同,导致在交叉编译中引入不同的配置,造成后续 QT 程序编译错误。

VxWorks 6.8 QT

设置环境变量 若在 vxsim 虚拟机下开发 QT 程序,则将环境变量的 PATH 指向 qtsimdkm 目 录下的路径,在 path 值后添加 D:\WindRiver\workspace\qtsimdkm\bin

VxWorks 6.8 QT

若在目标机上开发 QT 程序,则将环境变量的 PATH 指向 qtp4dkm 目录下的路径,在 path 值后添加 D:\WindRiver\workspace\qtp4dkm\bin

注意: 1、上述两个路径不要同时写上,以免出错。

4. vxsim 虚拟机上 QT 应用程序开发

4.1. 编译 windML 库

参考 windML 官方手册 Wind River Media Library SDK Programmer's Guide, 5.3,按标准步骤一步步配置、编译即可。注意此时配置选择的 CPU 要为 SIMPC。

4.2. 新建 vxWorks 镜像

以 vxsim 虚拟机为例, 在 workbench3.2 中,File->New->Vxworks Image Project,建立一个 zvipsim 的虚拟机镜像工程。

VxWorks 6.8 QT

VxWorks 6.8 QT

VxWorks 6.8 QT

VxWorks 6.8 QT

VxWorks 6.8 QT

工程建立完成后,对镜像进行配置,双击 Kernel Configuration,打开镜像的配置包界面

VxWorks 6.8 QT

添加以下包


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 (注:vxworks6.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 ---------------------*/
}

完成以上工作,编译镜像,编译成功后用 vxworks6.8 development shell,进入 zvipsim/default 目录,运行 vxsim –size 800M,启动虚拟机,如下图所示。

VxWorks 6.8 QT

VxWorks 6.8 QT

4.3. 配置 QT

在 vxworks6.8 development shell,进入到 qtsimdkm 目录,执行 configure,具体 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 配置命令及配置结果界面如下:

VxWorks 6.8 QT

VxWorks 6.8 QT

Configure 配置命令执行完后,会在 qtsimskd 目录下生成 makefile 文件。之后进行 make 操作。

在启动->搜索里输入 cmd, 进入 workspace\qtsimskd 目录,输入 make 命令进行编译,约要十到二十分钟时间。

Make 编译成功后,需将 workspace\qtsimdkm\lib 下面所有内容复制到c:\tmp\qtsimdkm\lib。如果是目标环境中,则将编译的 lib 复制到目标机硬盘/ata0a/tmp/qtp4dkm/lib 下。

4.4. 编译、运行 QT 程序

在 vxworks Development shell 中,进入 qtsimdkm\demos\affine 中,运行 make,编译 affine 程序,生成可执行的 affine

VxWorks 6.8 QT

编译成功后提示如下

VxWorks 6.8 QT

运行 qt 程序

将刚编译出来的 qtsimdkm\demos\affine\affine 文件复制到虚拟机镜像所在目录 workspace\zvipsim\default, 在 Vxworks Development shell 中 , 进 入 vxsim 文 件 所 在 目 标 workspace\zvipsim\default,执行 vxsim –size 800M,启动虚拟机

VxWorks 6.8 QT

VxWorks 6.8 QT

在 vxsim0 中,输入 ld<affine,回车,导入 affine;输入taskSpawn("main",200,0x01000000,0x100000,main,0,0,0,0,0),启动程序,即可看到 QT 的 demo 程序!

VxWorks 6.8 QT

VxWorks 6.8 QT

Vxworks vxsim 虚拟机上运行 QT 成功!

5. 在目标机上 QT 应用程序开发

5.1. 编译 windML 库

windML 官方手册 Wind River Media Library SDK Programmer's Guide, 5.3,按标准步骤一步步配置、编译即可。注意需根据目标板配置选择 CPU,本文所测试的目标板 CPU 为 Intel ATOM,CPU 选择 Pentium4

5.2. 新建 vxWorks 镜像

按 4.2 节步骤建立 Vxworks Image Project,注意在第二步选择 CPU 和 BSP时,选择目标板实际的 BSP。建好后,并同 4.2 节一样,在 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 (注:vxworks6.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

在 vxworks6.8 development shell,进入到 qtp4dkm 目录,执行 configure,具体configure 配置内容如下


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

上述配置内容中的黑色字体要根据不同的开发环境进行修改。Configure 配置命令如下

VxWorks 6.8 QT

配置成功后结果如下,会在 qtp4dkm 目录下生成 makefile 文件。

VxWorks 6.8 QT

打开命令行,在 cmd, 进入 workspace\qtp4dkm 目录,使用 make 命令编译QT,约要十到二十分钟时间。编译成功后,提示如下:

VxWorks 6.8 QT

则将编译的 lib 复制到目标机硬盘/ata0a/tmp/qtp4dkm/lib 下,配置完成。

VxWorks 6.8 QT

将 lib 库文件内容上传到目标机硬盘上后,就可以开始测试 QT 程序了。通过网络方式启动目标机,在 workbench 上建立远程连接,将需下载的应用程序D:\WindRiver\workspace\qtp4dkm\demos\affine\affine,下载到目标机。

下 载 程 序 后 , 在 调 试 机 上 的 Shell 或 在 目 标 机 上 输 入 启 动 命 令 taskSpawn("main",200,0x01000000,0x100000,main,0,0,0,0,0),即可启动 QT 程序。

VxWorks 6.8 QT

VxWorks 6.8 QT

获取BSP,请关注微信公众号:北南南北

北南南北