如何从RTP应用程序执行dump memory (d())
,xbdCreatePartition
,dosFsVolFormat
,dosFsShow
等shell命令?
Linux提供系统命令来完成这项工作,如何在VxWorks6.9中实现?
答案 0 :(得分:0)
如果您正在寻找等效的system()
,为了让您执行任意命令,您就不走运了。
但是,用于与之交互的“Shell”实际上是一个C解释器,并且可以从代码中调用正在运行的任何命令。因此,您可以从您自己的代码中调用dosFsVolFormat
。
这里有一个警告,即大多数功能都在内核中实现,因此这些功能可能在您的RTP中不可用。可用的功能因发行版而异,也可能取决于您的内核配置。您可以将标头的用户版本与内核版本进行比较,以查看可用的内容。
但是,您始终可以编写自己的系统调用,以将内核功能公开给RTP应用程序。
答案 1 :(得分:0)
您不能直接从RTP调用内核函数。您可以创建一个内核模块项目,该项目可以接收来自TCP的命令并为您执行内核功能。从RTP项目中,您将从TCP发送这些命令。您可以使用串行通道协议或消息通道等代替TCP。
这样做的主要原因是将内核空间与应用程序空间分开,以便您的应用程序不会导致内核崩溃。
答案 2 :(得分:-1)
我假设你有一台主机和一个在vxworks上运行的目标。这意味着您使用的是交叉编译器IDE,例如Windriver Workbench或Tornado。
此时,您有两种可能性。
1)您的目标上有VGA或HDMI端口,因此您可以轻松插入显示器,并且可以看到vxworks外壳在蓝屏上运行。
您可以运行shell命令。
https://userweb.jlab.org/~brads/Manuals/VxWorks/vxWorks_commands.html
2)您可以使用windriver调试工具。但是您需要向vxworks内核映像添加组件,例如INCLUDE_DEBUG_AGENT。您可以自己配置它。连接远程设备时,可以打开shell窗口并开始键入系统调用。
祝你好运......