2014-03-05 59 views
2

如果可能,我的目标是编译一个C应用程序;可以说一个简单的Hello World应用程序,然后从Vxworks Tshell加载应用程序然后执行它。VXWORKS RTOS RTP应用程序

我已阅读过关于Real Time Processes和Vxworks可执行文件“.vxe”的信息。

我工作的公司使用Vxworks作为其所有产品上运行的RTOS。

限制 - 我无法访问Tornado开发环境或任何Windriver工具。我只能访问运行RTOS的嵌入式硬件。

是否有第三方编译器可用于构建将在VxWorks上执行的应用程序?

请不要嘲笑我;我试图去了解超出我的专业知识的东西。我是一名电子技术员,非常熟悉硬件,但不熟悉RTOS。

回答

1

是的,可以这样做 - 当我使用一些实际使用vxworks作为RTOS的NI产品时,我自己也是这样做的。下面的链接可以帮助:

http://digital.ni.com/public.nsf/allkb/81D1172E3C28A5E4862575CC0076A230

你只需要下载工具链 - 某些版本连接到该链接,你也能够从WindRiver公司网站获得。

既然你不会使用工作台,你将需要自己维护makefile等 - 这是你需要许可证,运行gnu compliers不需要许可证。哪一个会留下另一个建议,获得一个临时许可证并安装工作台(只是为了获得编译工具链),然后使用make从命令行构建。

+0

虽然,我从来没有做过这种使用的RTP - 这可能是比较困难的,你可能会更好坚持DKMS – mjs

+1

酷链接,但DKM(.OUT)是目的部分链接的文件。未找到任何符号(列表printf或OS调用)将由加载程序解析。 RTP通常是静态链接的(当然也可以.so),并且需要访问工作台附带的开发头文件和库。 – Benoit

2

简短回答:NO

它不仅仅是编译器。有一组应用程序需要链接的库,而这些库仅随vxWorks开发环境提供。

另外,RTP是在VxWorks 6.2中引入的。任何早于此的东西(任何Tornado ......)都不支持RTP。

VxWorks拥有可下载内核模块(DKM)的概念,您可以将其视为可以在内核中动态加载的“代码库”或可重定位模块(通过多种方式,包括发布“ld”命令在vxworks shell中)。

正如mjs指出的那样,可以使用GCC工具链来编译DKM,因为它创建了一个部分链接的.out文件。缺少的任何符号都由加载程序解决。当然,如果你使用任何操作系统原语,这些DKMs与RTP无关。 RTP是一个可执行文件,DKM是一个不直接执行任何操作的代码模块(其他代码/ shell通常会在刚加载的DKM中调用一个函数)。

RTP是一个完全链接的可执行文件,它意味着所有符号(如printf,OS调用等)必须在编译时解析(是的,您可以使用共享库,但符号仍然必须定义并且.so指出)。这些函数在头文件中声明并保存在作为Workbench开发工具一部分的库中。

没有开发工具,库和头文件,你不能为RTP开发代码。

+0

我读的是可以编译的可重定位模块,通过tshell可以使用ld命令来加载模块。这可能吗?我相信我可以访问程序员构建目录,但我无法访问他们的构建工具。谢谢你的智慧。 – MageNewbie

+0

它只是gcc的虽然.... – mjs