1 简介
Boost项目提供了一组全面的,经过同行评审的,可移植的C++源代码库,这些库可与C++标准库一起很好地工作。
VxWorks是由Wind River构建的实时操作系统。
VxWorks支持Boost C++库的子集。支持的库是:
Atomic
Chrono
Container
Context
Contract
Date Time
Exception
Filesystem
Graph
Log
Math
Program Options
Random
Regex
Serialization
Timer
Type Erasure
BOOST Tests
在先前的文章(给VxWorks 7添加Boost C++库支持)中,我们解释了如何编译并启用boost的VxWorks内核,本文将描述如何从boost.org网站移植一些boost示例代码,并在VxWorks 7目标系统上运行它。
2 前提
本文的说明假定你正在使用:
Windows工作站,其上安装了以下软件:
风河VxWorks 7,SR0620
Windows版Git
你已经完成了上一片文章,“给VxWorks 7添加Boost C++库支持”:
https://www.gaitpu.com/vxworks/adding-vxworks-7-boost-c++-library-support.html
3 相关文件
有关本主题的更多信息,请参考:
风河文档:
VxWorks对第三方软件的支持
非风河文档:
https://www.boost.org/
4 在WINDRIVER WORKBENCH中创建一个实时进程(RTP)项目
4.1 基于VxWorks源代码编译(VSB)创建一个boostvsb的RTP
你必须基于先前文章中启用了Boost的VxWorks项目创建RTP项目。在workbench中,执行一下操作:
File > New > Wind River Workbench Project
选择一个 Real Time Process Project
图1:选择RTP编译类型
将项目命名为“boostapp”,你需要基于在上一篇文章中创建的VSB来创建工程,VSB之前被称为“boostvsb”,选择Browse,找到文件boostvsb/vsb.vxconfig,这样RTP项目就基于“boostvsb”了。
4.2 将RTP.C重命名为RTP.CPP
RTP项目源文件必须重命名为“rtp.cpp”,因为这个boost源文件是C++而不是C的源代码,因此必须正确编译。
在Workbench Project Explorer view中右键单击“rtp.c”,选择“Rename”,然后将文件名设置为“rtp.cpp”。
图2:重命名源码文件
5 找到BOOST库示例代码
5.1 访问boot.org网站
在网络浏览器中,访问到https://www.boost.org。“boostvsb”项目是包含了boost数学库后建立的,因此我们将选择boost.org上一些使用了数学库的示例代码。
5.2 找到几何示例代码
选择boost的“几何库”示例,访问至https://www.boost.org/doc/libs/1_54_0/libs/geometry/doc/html/index.html,在“Spatial Indexes”下,单击“Examples”。
图3:找到几何示例代码
选择示例“Index of polygons stored in vector.”
图4:选择存储在向量中的多边形的索引
这提供了示例源代码,该应用程序使用boost数学库来创建多边形数学对象的树,然后询问并输出其值。highlight此源代码并复制它。
6 将BOOST应用程序打包成一个RTP项目
6.1 将源代码复制到rtp.cpp文件
请确保负责所有的boost网站示例源代码行并替换“rtp.cpp”文件里的内容。
图5:将源代码复制到RTP项目中
6.2将boost_system库添加到RTP构建属性
右键单击boostapp RTP,然后选择“属性Properties”,选择“Build Properties”,“Libraries”,单击"Add to all", 选择"Add library file (-I)" 然后输入: "-I boost_system"
图6:将Core Boost库添加到RTP项目
点击"Apply and Close",然后点击 "Yes" 来重新索引项目。现在可以重新编译这个项目,编译应该可以成功完成。如果你遇到任何编译错误提示boost库缺失的话,你必须从库的对话框的编译属性(Build Properties)里手动添加这些库。
注意:如果你在你的RTP代码里面使用了boost现成库,你必须增加(-I boost_thread)作为一个额外的RTP库。
7 运行这个BOOST应用程序RTP
7.1 从Workbench启动VxWorks Simulator目标机
在Workbench的target connection窗口中,为你在上一遍文章中创建的“boostvip” VIP项目来创建一个VxWorks模拟器连接。
图7:创建VxWorks Simulator目标连接
启动目标机
7.2 调整内核调度程序以启用时间分片
在VxWorks目标内核shell中,输入以下内容:
-> kernelTimeSlice(1)
Boost应用程序可以在此VxWorks内核配置上更成功地运行。
7.3 在目标上运行bootapp RTP
右键单击Workbench中的“boostapp”项目,然后选择“Run/Debug Real Time Process”,观察boost多边形应用程序在目标上运行,并从VxWorks仿真目标机的控制台生成输出。
图8:运行Boost Polygon应用程序
点击“阅读原文”查看更多相关文章