2015年4月21日 西米奇

“Simics代理”-从外部自动化目标中的任务(含视频)

由雅各布Engblom

jakob-engblom-intro-picture

在目标系统上自动化任务是虚拟平台使用的一个重要方面。使用Simics实现自动化的方法有很多,而且正在添加更多的方法。最近,我们增加了一个新特性西米奇代理,帮助用户自动化任务并将软件和测试上传到目标系统,如在演示视频中显示

Simics Agent位于目标系统软件堆栈中,允许Simics上传和下载文件,检查目标文件系统的内容,并向目标软件和操作系统发出命令——无需编写目标串行控制台或其他目标输入的脚本。它使自动化更容易实现,因为您可以对目标系统内的操作进行更健壮的控制。原理如下图所示。Simics Agent只是调用目标操作系统来让命令在其他软件和串行控制台不可见的情况下执行。这也意味着可以控制没有任何暴露或打开的串行端口、以太网连接或其他通用IO的目标。它甚至不需要有一个活动的shell——只要目标OS有一个发出命令的API,代理就可以使用它。

matic-2

虽然拥有一个运行完全未经修改的目标软件堆栈的虚拟平台确实具有重要的价值,但在许多情况下,最好只更改一点点目标软件,以使用户能够更有效地工作。对于许多开发和测试任务来说,这样的简化是非常有价值的,并且运行代理对目标的干扰影响可以忽略不计。新的Simics Agent就是这种系统的一个例子。

Simics Agent的主要目的是使文件和软件在目标系统上移动和移出变得更加容易。对于任何虚拟或物理平台,这都是一个非常常见的问题——如何获得想要在其上运行的软件,以及如何从其收集输出文件?在许多情况下,解决方案是像实际系统那样部署软件,但在其他情况下,最好使用能够提供快速周转时间的方法,这在物理系统中是不可能的(参见我的之前关于自动化的博客文章Simics作为替代方案)。特别是当我们对一个稳定且给定的操作系统上的单个应用程序感兴趣,或者注入一个动态加载的内核模块时,使用某种代理将新编译的系统导入目标系统是很有意义的。

如果我们从总体上来看虚拟机解决方案,它们通常提供某种形式的特殊驱动程序或代理,以便更容易地与目标系统一起工作。例如,VmWare和VirtualBox提供了安装在目标系统上的工具,以实现与主机以及鼠标和键盘捕获的高效文件共享。Simics Agent是应用于Simics的相同概念。

matic-1

代理在实现时的一个主要优势是,它完全不需要更改目标硬件就可以执行其工作。上面的图片表明,不需要特殊的设备和特殊的设备驱动程序来将文件移动到目标系统中,就像我们以前可靠的“simicsfs”解决方案那样。相反,代理依赖于在目标系统的用户级工作的魔法指令。西米奇代理是一个用户级程序,通过魔法与西米奇模拟器通信指令,这使得它很容易移植到一个新系统,它可以有效地从管理程序和操作系统层穿孔的因为它不需要内存映射设备硬件。

Agent的另一个好处是它可以完全由Simics控制。不需要在目标命令行中输入命令。当向主机或模拟网络中的服务节点使用ftp或nfs等特性时,必须通过目标系统的命令行注入命令。这确实需要目标有一个命令行系统,并且在脚本编写时它是可用的。有了代理,它也可以从后门获得命令,不需要进行交互。Agent可以通过直接调用主机OS API向目标系统中的软件发送命令。这使得它更加健壮和方便。它还将输出重定向回Simics,以便代理执行的操作的输出在Simics命令行中可见,而不是在目标命令行中可见。

可以终止Simics Agent的用户级进程,以减少对目标系统的干扰。例如,可以使用Simics Agent将软件和测试文件加载到目标系统,然后退出。此时,目标系统上除了文件系统中一个小的额外二进制文件外什么都没有。没有任何东西可以干扰目标软件,即使是理论上。

总之,我们这里有一个很好的例子,让一个软件堆栈稍微意识到它是在模拟器上运行的,可以在模拟器可用性方面获得很大的好处。在某些情况下,让一个人在内部做事要简单得多——《Simics Agent》为《Simics》提供了内部视角。

进一步的信息:

以前的在韩国获得了第一个基于通信的列车控制(CBTC) SIL4认证
下一个X-47B自动空中加油成功!