目标机管理用况

关于本文

Eclipse中创建一个统一的目标机管理组件是很有趣的。部分兴趣来自于CDT,在CDT当前的一个Bugzilla记录中记录了一个“远程系统框架”的初始工作:

l        https://bugs.eclipse.org/bugs/show_bug.cgi?id=65471

设备软件开发项目(DSDP)已经获得开发一个“目标机管理(TM)”框架的特许,当事人可以扩展这个框架以满足推动与远程系统进行交互的需求。

本文总结了我们已知的目标机管理用况,目标如下:

l       确保当事人理解TM是什么,它能够做什么和不能做什么。

l       TM创立一些共同的术语。

l       确保我们设计基本框架的时候记得所有对TM的需求。

本文不是一个纯粹的用况说明书,它还包含了一些关于实现或者数据结构的想法,我们觉得这些实现或者数据结构有助于阐明问题。

并不是本文中所有的用况都将在TM系统的第一个版本中实现。部分用况将作为扩展而不是框架来实现。

本文的目标是表达出关于TM的一个大的规划,确保我们所讨论的框架足够通用。

TM是什么?

当一个软件开发者编写运行在其他计算机系统上而不是本地(我们叫做目标系统)的程序的时候,开发过程中需要与各种远程系统进行交互。这些交互可能需要:

l       构建程序(远程构建)

l       连接,并且获得远程(目标)系统的状态信息

l       部署程序(下载)

l       运行或者调试程序

l       测试程序(自动测试、性能测试等等)

l       从远程系统获取数据(上载)

尽管可能由不同的Eclipse扩展来实现这些相应的功能,TM将为这些交互提供一个统一的用户接口。为了做到这一点,TM框架将为远程系统(目标机)定义维护一个注册信息,包括属性和通信参数。

某些远程系统(目标机)将被一个团队的开发者所共享,或者位于很远的地方。对于这样的共享目标机,TM框架将提供接口用于:

l       目标机发现(发现一个合适的远程系统),

l       在用户之间交换目标机信息,并且

l       保留目标机,确保对共享目标机的排他性访问。

 

对于远程目标机的独占,应该允许定义一个目标机组,该目标机组能够被整个的保留或不保留,从而能够运行或者测试一个软件系统——需要同多个远程目标机进行交互。

TM框架应该允许提供安全相关的扩展,从而实现与远程系统的“安全通信”,以及保留目标机的“安全授权”。

范围:TM不是什么?

TM的范围一直延伸到注册工具(例如调试器或者自动测试框架)接管为止,TM与其客户端之间的边界是比较模糊的,特别是为了硬件调试而下载程序或者重新启动的情况下。一般来说,TM应该准备目标机连接、选择一个上下文以便其他工具(例如调试器)能够接管上下文的调试。

术语定义

       我们将运行软件的远程计算机系统叫做“目标机”,然而我们将为软件开发过程中涉及到的其他远程计算机保留“远程系统”这个术语,例如构建主机和数据库主机。

       考虑到两种类型的远程系统可能会使用相同的通信协议,并且目标机注册表中可能同时注册这两种类型的系统,我们将不会严格的区分这两种系统,并且允许这两个术语适当的混合。

       构建系统例如“make”经常使用“目标”这个术语来指代构建的结果或者目的。因此,我们会将构建输出叫做“构建目标”以区别于目标机系统。

 

远程系统

Remote System

通过某种通信协议访问的计算机系统,提供一些服务给远程用户。远程系统可以是虚拟的,也就是说通过软件在同一台主机上模拟或者仿真一个远程系统。

远程主机

Remote Host

允许多个用户同时并发访问的远程系统。一般而言,远程主机用于运行软件工具,而远程目标机则用于运行和测试被开发的系统。

目标机

Target

用于运行或调试被开发软件的远程系统。一般而言,目标机的用户将会排他性(独占)的访问目标机,然而主机则允许多用户并行访问。

单上下文目标机

Single Context Target

只提供一个上下文的目标机,也就是一个连接到硬件调试探针上的单核系统。

多上下文目标机

Multi Context Target

提供多上下文的目标机,也就是说目标机上运行着一个OS,并且需要用户选择单个的上下文,以便于操作。

开发目标机

Development Target

开发者工作中最主要的目标机,相对于仅用于测试的(共享)目标机。开发目标机应该足够的快并且容易访问,以确保好的工作流。

共享目标机

Shared Target

被多个远程用户使用的目标机。(一般而言同时只能有一个用户,因此目标机在用户访问时被保留,以确保排他性的访问。对于允许多个用户同时并发访问的远程系统,我们叫做“远程主机”。

实验室目标机

Lab Target

不能被直接访问的共享目标机,所以,类似上电/断电、复位或者控制台访问等操作必须通过一个实验室管理系统来进行。

现场目标机

Fielded Target

已经被部署到一个“很远”的站点的目标机,因此,缺乏对软件开发和安全通信的支持。现场目标机运行固定的,部署的目标机配置。

构建目标

Build-target

运行一个构建系统(例如make)的结果或目的。

目标机定义

Target Definition

目标机提供的属性,通过属性可以标识目标机,并且打开通信通道提供服务。

静态目标机定义

Static Target Definition

目标机定义中永远不会改变的部分,即使启动一个不同的OS。例如CPU类型、内存大小、位置、bootloader、外围连接等等。

目标机配置

Target

Configuration

加载到目标机上,用于运行软件的设置。例如加载OS的内核映象、指定到硬件接口的IP地址、JTAG寄存器文件、运行在目标机上的远程服务等等。目标机配置是动态目标机定义的一部分。

目标机注册表

Target Registry

一个共享的目标机定义数据库,或许会集成到实验室管理系统。

实验室管理系统

Lab Management System

软件和硬件的联合体,允许对实验室目标机的远程访问,包括远程断点和上电,以及通过一个终端服务器重定向串行控制台。

目标机组

Target Group

一起使用的一个目标机集合。

本地目标机列表

Local Target List

软件开发者经常会用到的一个目标机列表。它是目标机注册表的一个子集,加上额外的、只有软件开发者本地使用的本地目标机定义。

本地目标机列表中的成员都是类似连接、下载、调试和运行的操作的主要候选者。

远程服务

Remote Service

目标机能够提供各种各样的服务,例如由运行在目标机上的代理提供的控制台提示符、数据传输、重新启动、数据查询或者其他特殊服务。

目标机的远程服务也可以通过一个连接到目标机的附加硬件来提供,例如连接到JTAG接口的ICE盒子。

对于每个由TM系统使用的远程服务,都应该有一个本地适配器来确保服务可用。

通信通道

Communication

Channel

通过通信通道来访问远程服务。通信通道或许是类似普通的TCP/IP(指定主机+端口号)、telnet或者安全shellssh)。

相同的远程服务可以通过不同的通信通道来访问。

远程服务适配器

Remote Service

Adapter

TM系统的一个本地扩展,使得用户可以通过GUI的操作来使用远程服务。

目标机连接类型

Target

Connection Type

连接目标机的主要方法,例如“Linux kgdb连接”。连接可能使用单个或多个远程服务完成不同的任务。

连接类型将使用到额外的服务,例如目标机配置。连接类型的主要用途是使用户创建一个初始的目标机连接时更加方便。一般会定义一个向导,协助完成初始连接所需的所有属性设置。

角色

开发者(Developer

       软件开发者,期望能够简单的建立目标机连接,从而能够构建、下载、运行、调试和测试他们的软件。他们一般不愿意输入关于目标机的的管理信息,但是期望能够快速的与目标机建立连接。

 

实验室管理员(Lab Administrator

实验室管理员负责将新的目标机安置到共享目标机实验室。他们为新目标机输入属性和管理信息,例如访问权限,这样开发者就可以找到、保留和连接目标机。实验室管理员也能够使目标机离线或者断电。

 

超级用户(Power User

       超级用户类似于开发者,但是附加的权限可以在目标机注册表中执行管理任务,例如修改目标机访问权限或者强行收回被正在度假的开发者保留的目标机。根据对目标机注册表不同的访问权限,超级用户也有不同的角色。

 

目标机注册表(Target Registry

       目标机注册表大部分时间比较被动,记录了由开发者或者实验室管理员输入的目标机信息。但是经过特殊实现的目标机注册表能够在内容发生变化时能够向TM客户端报告事件,例如目标机的添加、删除、保留或不保留。

 

实验室管理系统(Lab Management System

       类似于目标机注册表,实验室管理系统能够向TM客户端报告事件,例如硬件故障或者管理系统关机。

 

状态更新定时器(Status Update Timer

本地状态更新定时器,能够触发TM系统周期性的查询已经连接目标机的状态信息,就像UNIX的“top”命令。

 

目标机(Target

目标机自己不是一个角色,但是能够提供远程服务,通过服务的本地适配器在TM系统中触发事件。

限制

扩展性(Extensibility

从目标机注册表类型、通信通道和服务或者对目标机的工具操作的角度,TM系统应该具有扩展性。

 

简单(Simplicity

访问本地目标机应该简便,也就是说,当只需要基本功能的时候,不能因为使用了TM框架而引入过分复杂的用户接口。

 

安全(Security

       TM框架的扩展可以实现安全关键特性,例如关于目标机注册表的身份验证或者安全通信。框架不能影响这些特性。

 

伸缩性(Scalability

       当使用共享目标机注册表的时候,注册表必须能够容纳数千个目标机和数千个并发的用户。其中大多数是寻找目标机和保留目标机。

       本地目标机列表则不需要容纳太多的已连接的目标机,但是单个的目标机(或者目标机组)或许由数千个节点(CPU、组件、类似进程的OS对象)组成。也有可能在每个时隙处理大量的来自目标机的事件。因此目标机状态相关的任何视图的更新(来自于实际的状态被事件修改)都必须避免成对出现。

 

低速连接Slow Connections

系统必须能够处理非常慢的目标机连接,或者非常大的通信延迟(目标机非常远)。无论TM注册的服务在哪里都需要通信,对这些通信进行限制是绝对有必要的。目标机状态信息应该只有在必要时才更新,也就是只有需要查看的时候。应该能够在“连续更新”和“按照需求的快照”之间允许触发视图显示目标机状态。

 

文档化的APIDocumented APIs

所有的功能都应该能够通过API的方式提供,用来编程,从而实现单元测试。

 

系统用况

使用本地目标机

 

启动初始化(Initial Startup

角色:  开发者

概要:  TM系统在工作区中的第一次使用做准备。

描述:

Eclipse第一次启动的时候(也就是说新工作区刚刚创建)允许Eclipse插件在TM系统中自动执行操作:自动调用注册的服务,在本地目标机列表中创建缺省的连接,搜索目标机注册表并连接(参见目标机发现),或者为启动准备一个预先固定的配置。

结果:  工作区准备好(自动添加了目标机定义)

添加一个本地目标机(Add a Local Target

角色:开发者

概要:

为本地目标机定义属性,然后添加到本地目标机列表中,为连接、运行、下载以及状态信息查询做好准备。

描述:

对于开发者,仅仅添加一个本地目标机是不够的,本地目标机应该与一些操作关联在一起,例如检索状态信息,下载,运行等等。

开发者不愿意输入任何与将要进行的操作没有关系的信息,所以对一个初始的连接才有必要输入需要的属性信息。开发者不用为静态目标机定义或者目标机配置数据而费心。

这些应该通过“目标机连接类型”来实现,“目标机连接类型”作为一个Eclipse的“新向导(New Wizard)”注册到“文件>新建>目标机”菜单中。

在向导中应该对输入的信息进行验证,确保输入的信息能够连接到目标机。

基于现有目标机定义的设置添加一个本地目标机定义是有意义的,所以只有其中的部分设置被修改(“克隆一个目标机定义”)。

结果:目标机定义被添加。

注意:参见“添加一个共享目标机”(由实验室管理员负责为目标机添加)。

导出目标机定义(Export Target Definition

角色:开发者

概要:导出一个运作的目标机定义,供其他开发者使用。

描述:

选择一个需要导出的目标机定义,然后导出到一个外部源。外部源可以是文件(可以直接发给其他开发者),或者是目标机注册表,从而使本地目标机为大家所共享。

导出可以通过Eclipse的“导出”向导来实现。或者实现一个类似于“Eclipse启动配置(Eclipse Launch Configurations)”的本地目标机列表,从而目标机定义可以声明为“本地”或者“共享”,在共享的情况下,能够通过版本控制系统的方式导出/导入。

结果:目标机信息被导出。

导入目标机定义(Import Target Definition

角色:开发者

概要:从外部源导入目标机定义。

描述:

目标机定义的外部源可以是文件或者是共享目标机的注册表。当从共享目标机注册表导入一个目标机定义的时候,注册表中对目标机定义的引用被保存下来,从而可以执行保留/不保留操作。

结果:目标机信息被添加到本地目标机列表。

异常:

如果导入的目标机定义的名字已经存在,则类似于“new target (1)”的目标机定义的名字将被创建。

目标机发现(Target Discovery

角色:开发者

概要:

搜索LAN和本地串行连接,查找任何可用的目标机或者目标机注册表,从而可以立即投入使用。

描述:

用户启动目标机发现,并且选择连接通道(串口、网络)来检测目标机。所有发现的目标机或者目标机注册表以列表的方式展示在用户面前,便于添加到已知的本地服务。

结果:目标机、目标机注册表被添加。

修改目标机定义(Modify Target Definition

角色:开发者,实验室管理员

概要:修改目标机定义的设置。

描述:

修改目标机定义的设置,例如,修改系统(内核)映象、修改注册服务的的选项(例如使能控制台服务的日志功能)、添加或删除远程服务。

对于共享目标机,本地开发者或许只能允许修改动态设置(例如加载一个不同的系统映象)而不能修改类似CPU类型的静态信息。

              对于共享目标机,在导出到共享目标机注册表之前修改仅限于本地。

结果:目标机定义被修改。

删除本地目标机定义(Remove Local Target Definition

角色:开发者

概要:从本地目标机列表中删除一个目标机定义。

描述:

从本地目标机列表中删除一个未被引用的目标机定义。

如果目标机被保留,删除过程中将询问是否解除保留目标机(有可能目标机被同一个用户在不同的会话中使用)。

结果:目标机定义从本地目标机列表中删除。

注意:对于共享目标机,从本地列表中删除之后,并没有从共享目标机注册表中删除(共享目标机可以从注册表中退出)。关于删除共享目标机,参见“删除实验室目标机”

连接目标机(Connect Target

角色:开发者

概要:

启动所有连接所需的程序和服务,完成初始协议的握手操作,验证连接是有效的。

描述:

“连接”的含义依赖于目标机提供的服务。连接之后,用户知道目标机可用了(已经上电并且连接好了)。如果有目标机上有注册的服务则会连续的显示更新的目标机信息,并且这些服务被启动。

目标机连接或许需要启动附加的程序。特别是虚拟目标机——通过软件模拟一个系统。这种情况下至少需要启动一个模拟器。其他需要启动的程序包括用于安全通信通道的软件(例如ssh),网络文件系统服务,代理控制器或者消息代理。

结果:目标机可用,可以执行下载、运行/调试、状态信息查询和复位等操作。

断开目标机(Disconnect Target

角色:开发者

概要:断开所有目标机服务。

描述:

断开所有连接到目标机的服务,关闭依赖于这些连接的程序和工具,终止那些用于支持目标机连接,但是不再使用的程序。

结果:目标机断开。

刷新目标机状态信息(Refresh Target State Information

角色:开发者,状态更新定时器,目标机

概要:

查询目标机,获得动态状态信息,例如进程列表、运行/挂起状态、系统加载等等。

描述

TM系统应该显示目标机状态信息,例如进程清单,可用的内存,资源使用等等。其中有些信息需要持久的显示(通过一个或多个Eclipse视图显示),然而其他信息也许只在需要的时候才更新(通过对话框显示)。对于TM中来自目标机的不同信息需要不同的适配器。

有些状态信息或许是通过接收来自目标机上运行的代理的事件自动更新的。而其他信息则需要显式的查询。有些显式查询可以配置成按照给定的事件间隔自动运行。

TM系统需要维护一个内部的数据结果来容纳所有这些目标机状态信息,不论是通过事件或者定时器更新的,还是应该被持久的显示。

结果:显示动态状态信息。

打开目标机控制台(Open Target Console

角色:开发者

概要:连接到一个目标机,并且显示一个命令行提示符。

描述:控制台的实现依赖于目标机是否提供控制台服务。

结果:目标机控制台打开了。

远程构建(Remote Build

角色:开发者

概要:在远程系统上构建一个工作区或者单个的项目。

描述:

这个用况并不是由TM框架自身来处理的,而是由外部的构建服务使用TM框架提供的服务来完成这个任务的。控制台功能是否可用依赖于是否目标机提供控制台服务。

结果:目标机控制台打开了。

目标机查询(Target Inventory

角色:开发者

概要:

查询目标机,从而自动获得静态目标机属性,例如MAC地址、内存大小、CPU类型和速度等等。

描述:

这项功能依赖于目标机提供的服务。当提供查询服务时,从目标机查询静态信息,并且显示在一个对话框中。在对话框中的信息项可以接受或者拒绝增加目标机定义。所有接受的信息将被添加到静态目标机属性。

结果:静态目标机信息被更新了。

下载(Download

角色:开发者

概要:选择一个或多个文件,下载到本地目标机列表中一台目标机。

描述:

              有不同类型的下载:

l       加载到目标机内存的一个绝对地址(例如通过一个JTAG调试器)

l       加载到目标机的flach存储器中(“特殊加载”)

l       加载一个内核模块到目标机

l       下载到一个目标机文件系统

根据不同的下载类型,需要不同的属性,例如目标机文件系统位置、内存位置或者flash设备的类型。对于下载到目标机文件系统,最好有一个文件系统浏览器。也可以通过一个已知的,通过宿主机和目标机都能访问的文件系统位置,来实现,这种情况下需要一个路径名的映射,不够直观。

对每一种类型的下载,必须有一个远程的服务和相应的远程服务适配器注册来处理。“远程服务适配器”根据远程系统类型的不同,可能需要进行数据传输(ascii-ebcdicwindows-UNIX线端)。

下载操作或许被直接触发,或许作为一个“启动配置”脚本的一部分。

结果:数据被下载到目标机。

注意:

对于下载软件到多个目标机的情况参见“下载到目标机组”。需要讨论“下载到绝对地址”或者“flash编程”应该是TM系统的扩展,还是由调试器处理。

上载(Upload

角色:开发者

概要:从目标机上载文件到开发宿主机。

描述:

从目标机文件系统选择文件,然后在宿主机选择一个位置并开始上载。应该只能从文件系统上载,而不是从目标机内存的其他部分(这部分工作是被认为是调试器的一部分)。

结果:从目标机上载另外数据。

注意:对于从多个目标机上载数据的情况参见“从目标机组上载”

运行一个远程程序(Run a remote Program

角色:开发者

概要:在目标机上运行一个程序。

描述:

运行的程序可以是一个目标机内存中的入口点(符号或者一个绝对地址),或者是一个目标机文件系统中的路径。远程服务适配器必须提供运行的规范。

运行操作可以直接触发,或者作为“启动配置”脚本的一部分。启动配置脚本可能被配置成类似运行一个需要的本地程序、下载数据、复位目标机和执行目标机上的命令等一系列操作。

结果:程序开始运行。

调试一个远程程序(Debug a remote Program

角色:开发者

概要:关联调试器到目标机上的一个上下文。

前提:调试服务适配器已经注册。

描述:

调试操作可以直接触发,也可以是“启动配置”脚本的一部分。当直接启动调试器的时候,首先从目标机获得最新的状态信息,并显示出一个有效的可以关联的上下文清单(进程、任务、内核)。允许用户选择一个上下文然后与调试器关联。另外同时根据选中的上下文需要加载符号信息到调试器中。当调试器是通过一个“启动配置”脚本的一部分启动时,脚本应该和“运行程序”用况一样,然后关联调试器到一个指定的上下文。“运行”脚本也可以是空的,调试器可以关联到一个预先指定的上下文。

结果:启动调试器调试远程目标机上的一个上下文。

重新启动目标机(Reboot target

角色:开发者

概要:在远程目标机上开始重启动。

前提:目标机或者连接的实验室管理系统必须提供可编程的重启动服务。

描述:

如果对于重启动有的选择,就打开一个对话框来指定选项(例如JTAG调试器,可能会提供冷启动或者热启动)。否则在目标机上开始一个简单的重启动。

重启动有可能导致加载一个不同的系统映象(内核)到目标机,所以有可能导致“目标机配置”发生变化。

结果:目标机重启动。

为目标机运行一个(外部)工具(Run an (external) tool for a target

角色:开发者

概要:运行一个(外部)工具,并且将目标机定义的相关参数传给它。

前提:

必须选择一个目标机(或目标机组)来运行工具。外部工具必须注册,从而知道需要哪些参数以及这些参数需要如何传递。

描述:

从本地目标机列表中选择一个目标机(或目标机组),然后从菜单中选择工具并运行。

结果:目标机工具被启动。

使用共享目标机

       在各种共享目标机的用况之间不存在相互关系。主要角色总是开发者或者实验室管理员。因此没有为共享目标机提供用况图。

连接到目标机注册表(Connect to Target Registry

角色:开发者,实验室管理员

概要:连接到一个目标机注册表,从而能够检索可用的共享目标机信息。

概要:连接远程目标机注册表,并且输入登陆信息(如果注册服务需要)。

结果:目标机注册表被添加,目标机发现被使能。

添加一个共享目标机(Add a Shared Target

角色:实验室管理员

概要:

类似于添加一个本地目标机,但是需要输入更多的关于目标机的静态信息,这些信息可以用于目标机发现。更多的信息可以通过后来的目标机查询而添加。

同时,为实验室目标机建立初始的权限,规定哪些人可以使用共享目标机。

添加一个共享目标机可以通过两个步骤完成:首先添加一个本地目标机,然后将其“导出”到目标机注册表中。

当“共享目标机注册表系统”支持这些特性时,应该通知所有连接的客户端添加了一个目标机。

结果:共享目标机定义被添加,并通知连接的客户端。

修改共享目标机定义(Modify Shared Target Definition

角色:超级用户,实验室管理员

概要:

修改实验室目标机的属性,当硬件发生变化或者实验室目标机的访问权限应该变化的时候。

不同角色的用户可以进行不同的修改,一部分用户只能修改访问权限和说明,另外一部分则可以修改实际的硬件信息。

对共享目标机定义的其他修改还包括将目标机标识为破损或者不可用。

共享目标机注册表系统支持这些特征时,应该通知已连接的客户端目标机定义发生的变化,这些信息将在用户本地的目标机列表中显示出来。

结果:目标机定义在目标机注册表中被修改,并且通知了已连接的客户端。

删除共享目标机定义(Remove Shared Target Definition

角色:实验室管理员

概要:从目标机注册表中删除一个目标机定义(因为目标机已经从实验室删除)。

结果:从目标机注册表中删除目标机定义,并且通知了已连接的客户端。

撤销访问许可(Revoke Access Permissions

角色:实验室管理员

概要:撤销一个用户或者一组用户对实验室中所有目标机的访问许可。

结果:访问许可被取消。

实验室目标机查询(Lab Target Inventory

角色:实验室管理员

概要:类似本地目标机查询。或许允许对目标机是否可用以及提供的服务进行批量的周期检查。

结果:静态目标机定义被更新。

搜索目标机(Search for a Target

角色:开发者

概要:搜索所有的已连接的目标机注册表,查找与给定的搜索标准匹配的目标机描述。

描述:

尽管有些搜索标准依赖于可用的目标机注册表类型,但是有些搜索标准是固定的(例如CPU类型、内存大小和保留/不保留状态)。目标机注册表可以定义允许何种搜索标准。

当用户输入搜索标准之后,搜索结果将显示一个匹配标准的目标机列表。列表中的目标机通过某种标准(例如CPU类型或者内存大小)进行排序。

结果:

显示一个匹配的目标机列表,用户可以从中选择目标机加入到本地目标机列表中。当目标机被添加到本地目标机列表时可以自动保留。

保留目标机(Reserve a Target

角色:开发者

概要:将共享目标机标识为本地用户所保留。

结果:

目标机被标识为保留。目标机或许可以在经过一段时间的不活动之后自动设置为不保留状态,这依赖于目标机注册表的策略。

不保留目标机(Unreserve a Target

角色:开发者,超级用户,实验室管理员

概要:

从本地目标机列表中选择目标机,并将其标识为不保留。超级用户和实验室管理员可以对其他用户保留的目标机进行不保留操作。

结果:目标机被标识为不保留。

重启动实验室目标机(Power Cycle / Reboot a Lab Target

角色:开发者

概要:类似于重启动本地目标机,但是通过实验室管理系统来实施。

结果:目标机被重启动。

发送消息给目标机用户(Send a message to target users

角色:开发者,超级用户,实验室管理员

概要:发送消息给一个保留了目标机(或者有一个目标机列表)的人。

描述:

该消息可以询问用户是否可以归还目标机或者告诉他系统将要下线。消息可以通过远程注册服务或者Email发送。

结果:消息被发送。

使用目标机组

目标机组是一个管理实体,可以保留、不保留或者整体进行下载和上载操作。用况类似于单个的目标机:

l       创建目标机组(Create Target Group

l       添加目标机到组(Add Target(s) to Group

l       从组中删除目标机(Remove Target(s) from Group

l       保留目标机组(Reserve Target Group

l       不保留目标机组(Unreserve Target Group

l       加载系统到目标机组(Load System on Target Group

l       从目标机组上载数据(Upload data from Target Group

软件用况

       软件用况是由TM框架扩展开始的。包括各种由扩展添加到框架的服务的注册。

l       注册目标机注册表适配器(Register Target Registry Adapter

l       注册目标机连接类型(Register Target Connection Type

l       注册远程服务适配器(Register Remote Service Adapter

l        注册目标机工具或行为(Register Target Tool or Action

数据结构样本

本节列出了一些数据结构的例子。并不是所有的属性都应该出现在真实系统中,或许真实系统中还需要其他一些属性。在这里,样本只是阐明各种数据结构大致的数据结构。

静态目标机定义样本

静态目标机定义是外部目标机注册表或者实验室管理系统都要涉及的。外部系统决定应该存储什么属性,决定哪些属性是可用于目标机发现的。目标机注册表适配器决定可用的属性如何与未来的TM服务(例如保留/不保留、重启、控制台访问等等)集成。

属性

描述

目标机号(key

目标机独一无二的标识

目标机名

 

位置

目标机的物理位置

所有者

出现问题时的联系信息

索引一个管理区(目标机组),含有许可信息。

CPU系列(体系结构)

如果是多核系统,应该是主CPU。应该根据目标机CPU体系结构,相应的切换构建程序的编译器。

CPU类型

 

BSP

板级支持包,类似于Sun Ultra 4-MPMotorola mv5300的硬件系统名称。

CPU数量

 

CPU时钟速度

CPU的物理时钟速度

性能指标

性能数值,和测量性能指标的工具。

内存大小

 

外设

重要的外设清单,例如显卡。

安装的软件

固定安装在目标机上的软件清单,例如固化在ROM或者Flash中的bootloaderROM监控器或者不能改变的目标机OS。软件清单不需要很完整,只需要与目标机连接相关的。

保留者

保留目标机的用户ID,如果没有保留则为空。

保留开始时间

日期+时间

保留截止时间

日期+时间

网络接口

网络接口清单,每个接口包括:

l        设备名

l        MAC地址

l        IP地址(建议由实验室管理员管理,避免冲突)

l        网络交换端口

网关

如果不再同一网段,则网关的地址。

硬件服务

连接到目标机的硬件服务清单:

l        连接到终端服务器上的串口控制台,主机:端口

l        JTAG调试器,IP地址:端口

l        Trace工具

注释

各种形式的目标机注释。

目标机配置样本

目标机

静态目标机定义的引用

系统映象

关于内核映象(系统)的信息。或许包括一个映象的网络文件系统绝对路径,版本控制和发布信息,构建时间。可能会提供多个版本(包含调试信息的和不包含的)。

软件服务

目标机系统上可用的服务清单。例如telnetftpdsshdgdbserverTPTP代理。包括每一种服务的适当信息,例如监听端口。

挂接(mount)的文件系统

从远程主机上挂接的文件系统清单,包括远程主机标识和本地挂接点。

注释

任意形式的目标机配置的注释

问题

l        是否需要对多核系统更多的特殊处理,既相应的数据结构来独立的标识每一个核?

l        框架代码需要处理硬件调试相关的内容(例如扫描链设置)么。

l        Eclipse通信框架(ECF)已经有一些设施用于处理通信以及查找通信服务相关的内容。因此存在一些重叠,需要检查。

参考

l        DSDP项目建议书,http://www.eclipse.org/proposals/eclipse-dsdp/index.html

l        远程系统(目标机)定义,https://bugs.eclipse.org/bugs/show_bug.cgi?id=65471

l        Eclipse通信框架,http://www.eclipse.org/ecf/

l        IBM远程系统浏览器(RSE),http://www.developer.ibm.com/isv/rational/remote_system_explorer.html

 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值