将c / c ++代码移植到VxWorks的问题

时间:2009-06-09 19:21:48

标签: c++ vxworks

我需要将已经支持Linux / Mac的c / c ++代码库移植到VxWorks。我是VxWorks的新手。你能告诉我可能出现的问题吗?

4 个答案:

答案 0 :(得分:3)

我们最近进行了相反的转换 - 我们将代码从运行VxWorks的PowerPC机器移植到运行Linux的Intel系统。我不记得在操作系统之间的差异方面遇到很多障碍。显然,对OS特定API的任何调用都必须改变,我们没有广泛使用这些函数。

我们最大的问题不是操作系统之间的差异,而是PowerPC和英特尔硬件之间的差异。 PowerPC是Big Endian,Intel是Little Endian。我们的软件是用C语言编写的,并且对字节顺序做了许多假设,这是让它再次顺利运行的绝对噩梦。实际上有数百种结构定义了位域,需要重新排序才能正常工作。我们最终在GCC中实现了#pragma,它们在定义时反转了这些位域(#pragma reverse_bitfields)。

答案 1 :(得分:2)

很大程度上取决于您要定位的VxWorks版本以及实际的目标处理器本身。你需要处理的一件事是没有分页内存系统或虚拟内存 - 你有什么东西。环境本身比Linux系统更受限制。有时,移植应用程序所涉及的工作会一直回到架构级别,因为资源不像linux中那样无限制。

其他一些提示:

  • 许可证vxworks,以便您拥有可用的源代码
  • 在开发周期中尽快使用真实的物理目标;不要指望模拟器准确地模仿目标
  • 根据需要使用TSR(技术支持请求);我不知道他们如何构建购买创建TSR的权利,但不要让任何人在这些方面便宜

答案 2 :(得分:1)

根据您使用VxWorks字节序运行的处理器,结构打包和内存对齐都可能是问题。我最后一次使用VxWorks时,它支持pthreads,socket和mutex层,可以很容易地模仿unix环境。

答案 3 :(得分:0)

在不了解您正在移植的应用程序的情况下很难说:它使用了什么linux库和api调用?它是自包含的,还是依赖于大量的linux命令行工具和脚本来完成它的工作?

正如平均所说,字数会导致你出现比预期更多的问题 - 特别是如果你没有为此做好准备。