CN101120323A - 用于测试设备的系统和方法 - Google Patents
用于测试设备的系统和方法 Download PDFInfo
- Publication number
- CN101120323A CN101120323A CNA2006800049492A CN200680004949A CN101120323A CN 101120323 A CN101120323 A CN 101120323A CN A2006800049492 A CNA2006800049492 A CN A2006800049492A CN 200680004949 A CN200680004949 A CN 200680004949A CN 101120323 A CN101120323 A CN 101120323A
- Authority
- CN
- China
- Prior art keywords
- routine
- message
- main process
- process equipment
- target device
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/28—Error detection; Error correction; Monitoring by checking the correct order of processing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/34—Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
- G06F11/3466—Performance evaluation by tracing or monitoring
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/362—Software debugging
- G06F11/3636—Software debugging by tracing the execution of the program
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/36—Preventing errors by testing or debugging software
- G06F11/3668—Software testing
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/54—Interprogram communication
- G06F9/541—Interprogram communication via adapters, e.g. between incompatible applications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2201/00—Indexing scheme relating to error detection, to error correction, and to monitoring
- G06F2201/865—Monitoring of software
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/542—Intercept
Abstract
一种用于提供与在嵌入式计算机上执行的线程的无缝通信的系统和方法。使用DAT系统,编程者能够经由脚本程序、任何服从COM的程序或者图形测试实用程序来测试线程的通信接口。DAT系统自动地格式化在嵌入式计算机与主机计算机之间发送的数据库并且考虑具体枚举大小、机器具体指针大小、机器具体结构对准边界、机器具体整数大小和机器具体直接排序。
Description
技术领域
本发明的领域涉及开发和测试。具体而言,本发明的领域涉及软件的开发和测试。
背景技术
嵌入式设备通常包括微处理器和应用软件。应用软件在实时操作系统(RTOS)的控制之下运行并且通常被分割成一个或者多个线程。线程是与嵌入式系统内定义的其它线程共享对微处理器的控制的可执行软件的独立单位。在许多嵌入式设备中,线程被分配有它自己的栈空间,赋予“优先级”,以及被分配有使线程能够作为“独立”实体来运行的其它资源。栈空间是存储器中为临时存储局部变量而保留的部分。优先级是在有多个线程在等待的情况下,由RTOS用来确定哪一线程获得对微处理器的控制的。资源可以包括RTOS为了管理线程而需要的杂项如队列、旗标等。用于线程的其它公共项是“任务”和“进程”。进程也意味着防止不同进程不利地相互影响的分离地址空间。在使用Microsoft的Windows操作系统(OS)的台式计算机上运行的进程的例子是Microsoft Word。
用于线程相互通信的普通方法是经由操作系统所提供的消息接发应用编程接口(API)。消息通常包括事件并且可选地包括在至少两个线程之间发送的数据块。例如,线程(“发送方”)构建消息并且从RTOS激活(invoke)一具体API。RTOS通知另一线程(“接收方”)已经发生某类事件。接收线程然后读取传入消息。用于线程通信的另一普通方法是经由函数调用。使用一个线程所提供的函数调用能够由另一线程激活。类似函数能够由在同一线程内共存的其它函数调用。用于函数的其它公共项包括子例程、过程或者方法。如这里所使用的,术语“通信接口”旨在于涵盖用于在两个线程之间传送数据的任何接口,比如经由消息接发或者远程函数调用通信。
存在与如上所述用于嵌入式设备的已知开发和测试系统相关联的数个问题。首先,已知测试系统要求使用具有操作RTOS的嵌入式设备,以测试线程的通信接口和执行线程本身。不利的是,已知系统不具备对通信接口和支持它们的对应线程进行模拟的能力。
其次,当使用多个平台来掌控运行线程时,存在代表不同机器上接口的兼容问题。不同类型的机器在它们的相应存储器空间中以不同的方式存储消息。已知测试系统没有自动地格式化数据以便发送到不同平台。在两个计算机之间不兼容的例子是当一个计算机在低存储器中存储具有最低有效字节的16位整数(2字节)(Little Endian)而另一计算机在高存储器中存储最低有效字节(Big Endian)时。当应用想要交互这一16位整数时,不同计算机以不同的方式解释该整数的值。
第三,已知系统软件要求创建能够与嵌入式软件通信的客户桌面工具。为具体嵌入式应用构建接口功能的过程是耗费时间的人工过程。桌面工具和嵌入式软件都要求对它们的应用的人工更新以使它们能够相互通信。由此,没有经由桌面工具对用于嵌入式软件应用的接口的无缝和自动访问。
第四,在与标准C/C++接口定义文件不兼容的其它编程语言中开发的桌面应用不能无缝地与嵌入式计算机交互。通常,接口定义文件定义了嵌入式软件所预期的消息的格式。诸如Visual Basic、LabVIEW等语言不能使用定义了接口格式的标准C接口定义文件。由此,使用这些语言的软件工程师不能测试在嵌入式设备上执行的线程。
因此需要没有前述限制的用于嵌入式软件开发和测试的改进设备。
发明内容
一个实施例包括一种方法。该方法可以包括:从主机设备向目标设备发送用以截获从激活例程到被激活例程的调用的请求;截获调用;收集作为对被激活例程的调用的部分来提供的至少一个参数;从目标设备向主机设备发送参数;以及基于主机设备和目标设备的特征来修改参数。
另一实施例包括一种系统。该系统可以包括:目标设备;以及主机设备,配置用以向目标设备发送用以截获从激活例程到被激活例程的调用的请求,目标设备被配置用以截获调用以及收集作为调用的部分来提供的至少一个参数,目标设备被配置用以从目标设备向主机设备发送参数;以及目标设备被配置用以基于主机设备和目标设备的特征来修改参数。
附图说明
图1是图示了用于测试嵌入式计算机的开发和测试系统。
图2是图示了作为图1的开发和测试系统的部分的通信数据库中某些部件的框图。
图3是图示了图1的开发和测试系统的另一实施例的框图。
图4A和图4B是能够用来与图3的嵌入式计算机通信的示例性脚本的图。
图5是图示了图1的开发和测试系统的另一实施例的框图。
图6是图示了图1的通信数据库的示例性内容的框图。
图7是图示了图5的生成部件的示例性对象分级的框图。
图8是图示了用于修改与图1的开发和测试系统一起使用的源文件的过程的流程图。
图9是图示了构建图1的通信数据库的过程的流程图。
图10是图示了使用图1的主机平台通信模块的过程的流程图。
图11是格式化通信的过程的流程图。
图12A-12D图示了当在具有不同机器特征的两个平台之间发送指针数据时管理指针数据的示例性方法。
图13是图示了使用脚本文件来与在嵌入式计算机上执行的线程通信的过程的流程图。
图14是图示了加载图3的消息接发自动化部件的过程的流程图。
图15是图示了向图3的开发和测试系统注册在脚本中执行的线程的过程的流程图。
图16A是图示了将消息通信从脚本发送到图3的开发和测试系统的过程的流程图。
图16B是图示了将函数调用的激活从脚本发送到图3的开发和测试系统的过程的流程图。
图17A是图示了脚本经由脚本从图3的开发和测试系统接收消息的过程的流程图。
图17B是图示了脚本经由远程函数调用从图3的开发和测试系统接收通信的过程的流程图。
图18是图示了利用图5的生成部件的过程的流程图。
图19是图示了起动图5的COM编译器的过程的流程图。
图20是图示了构建图5的生成部件的过程的流程图。
图21是图示了生成图1的生成部件的接口的过程的流程图。
图22是图示了使用来自任何服从COM的语言的图5的生成部件的过程的流程图。
图23是图示了测试通信接口中通过图1的通信数据库来标识的一个通信接口的过程的流程图。
图24是图示了基于监视在至少两个线程之间发送的通信来生成信息数据集的过程的流程图。
图25是用于测试消息的示例性用户接口。
图26是用于测试远程函数调用的示例性用户接口。
图27是图示了用于生成与图1的开发和测试系统一起使用的模板代码的过程的流程图。
图28是流程图,该流程图图示了生成用于对预定通信接口所定义的消息进行处理的代码的过程。
图29是图示了生成消息处理代码的过程的流程图。
图30是流程图,该流程图图示了生成用以将消息发送到预定通信接口的代码的过程。
图31是流程图,该流程图图示了生成用于响应于函数调用来处理平台间消息接发的代码的过程。
图32是图示了示例性生成代码的框图。
图33是图示了示例性生成代码的框图。
图34是流程图,该流程图图示了生成和使用用以截获在目标设备上执行的所选例程的代码的过程。
图35是流程图,该流程图图示了生成在图34的过程中在一个实施例中出现的截获代码的过程。
图36是图示了生成在图35的过程中在一个实施例中出现的代理的过程的流程图。
图37是图示了生成用以截获由目标设备执行的例程的代码的过程的流程图。
图38是用来接收模块信息以能够执行图35的过程的图形用户接口。
图39是用来从用户接收对将要执行的截获类型进行定义的指令的图形用户接口。
具体实施方式
如下具体描述涉及本发明的某些具体实施例。然而,本发明能够在如权利要求所定义和覆盖的多种不同方式下实施。在本说明书中对附图进行参照,在这些附图中通篇以相似的标号来表示相似的部分。
图1是图示了DAT系统100的一个实施例的框图。开发和测试(“DAT”)系统100允许开发者具有对他们的定义通信接口的自动和无缝访问。此外,DAT系统100使线程能够在分布式平台上运行并且允许任何编程语言对接口的无缝访问。
DAT系统100包括与主机计算机108数据通信的嵌入式计算机104。嵌入式计算机104执行嵌入式计算机通信模块112,该模块用来将通信路由到在嵌入式计算机104上执行的线程。主机108执行主机计算机通信模块116,该模块用来将消息路由到在主机计算机108上执行的线程120。嵌入式计算机通信模块112和主机计算机通信模块116能够将源自于一个平台、指定发送到另一平台、经由其它接口发送的其它消息和/或其它通信相互路由到对方。在本发明的一个实施例中,从一个平台到另一平台的所有通信都经由嵌入式计算机通信模块112和主机计算机通信模块116来发送。
嵌入式计算机104能够驻留于电话、外围设备上的卡、汽车、冰箱或者任何其它电子设备上。主机计算机108能够包括任何计算设备,该计算设备包括显示器和输入设备如鼠标、键盘。
主机计算机116也包括通信数据库124,该数据库自动地编译用以捕获通信接口“特征”的嵌入式和主机的接口定义文件。
DAT系统100提供用于消息接发和跟踪的标准化API、包含用来实施无缝消息接发和跟踪环境的协议组并且实施两个平台之间的通信链路。在本发明的一个实施例中,DAT系统100所提供的API包括用于如下各项的接口:(i)注册消息;(ii)读取消息;(iii)发送命令数据;(iv)发送响应数据;(v)广播消息;(vi)预订消息;(vii)返回在通信数据库中存储的消息的列表;(viii)返回具体消息的消息格式;以及(ix)返回具体消息的名称和/或标识符。DAT系统100的更多示例性API在下文中描述。
工作室模块128提供用于对通信接口124所标识的通信接口进行测试的图形用户接口和测试环境。DAT系统100提供对嵌入式软件应用所定义的所有消息和远程函数调用的完全可视性和控制。作为例子,使用工作室模块128,开发者能够扫描在数据库内消息和/或远程函数调用的整个列表并且在屏幕上显示它们。一旦选择具体消息或者远程函数,即能够查询通信数据库124以返回与该消息相关联的元素类型和名称。
在执行时,嵌入式计算机104和主机计算机108中的各线程注册到DAT系统100。注册使DAT系统100能够动态地路由消息而无需对路由表进行“硬编码”。线程在任何时间都能够调用DAT系统100所提供的专用编程接口“API”以通知DAT系统100请求线程“拥有”所选消息。拥有在本文中意味着具体线程在另一线程和/或应用发送消息的任何时间都接收该消息。当发出用以发送消息的请求时,DAT系统100确定拥有线程是否在本地或者在其它平台上。如果平台在本地,则将该消息直接地路由到拥有线程。如果平台在远方,则将该消息直接地路由到另一平台。如果该消息源于嵌入式计算机104,则主机计算机108在接收到时格式化该消息以与主机计算机108的机器特征相兼容。如果该消息源于主机计算机108,则主机计算机108格式化该消息以与嵌入式计算机104的机器特征相兼容。
嵌入式计算机通信模块112、主机计算机通信模块116和工作室模块128各自包括各种子例程、过程、定义语句和宏。计算机通信接口112、主机计算机通信模块116和工作室模块128可以用任何编程语言如C、C++、BASIC、Java、Pascal和Fortran来编写并且可以在公知操作系统之下运行。C、C++、BASIC、Pascal、Java和Fortran是工业标准编程语言,对于这些语言能够使用许多商用编译器来创建可执行代码。
嵌入式计算机104可以在任何现成或者专用实时操作系统的控制之下执行,该系统比如是VxWorks、Nucleus、Thread X、Windows CE、RTXC和Embedded Linux。
主机计算机108可以在任何现成或者专用实时操作系统的控制之下执行,该系统比如是UNIX、LINUX、DOS、OS/2、PalmOS、VxWorks、Windows 3.X、Windows 95、Windows 98、Windows NT、Windows CE和Windows XP。在嵌入式计算机104和主机计算机108上的各线程能够经由预定应用编程接口API分别与嵌入式计算机通信模块112和主机计算机通信模块116通信。下文的阐述描述了API所提供的某些例程。应当理解也可以提供其它例程。
应用编程接口属主方法 | |
方法 | |
广播 | 将响应广播到所有预订用户(仅广播消息类型) |
读取命令 | 读取由用户发送的命令(仅单向和双向消息类型) |
注册 | 注册与消息相关联的服务的权属关系(仅单向和双向消息类型) |
发送响应 | 发送响应(仅双向消息类型) |
注销 | 注销服务权属(仅单向和双向消息类型) |
用户方法 | |
方法 | |
读取响应 | 读取从属主发送的响应(仅双向和广播消息类型) |
发送和读取 | 组合发送命令方法和读取响应方法(仅双向消息类型) |
发送命令 | 将命令发送到注册属主(仅单向和双向消息类型) |
预订 | 预订与消息相关联的服务。一旦预订,消息对象将接收由服务的任何属主发送的所有广播(仅广播消息类型) |
取消预订 | 取消服务的预订 |
侦查(spy)API | |
方法 | |
读取命令 | 读取(侦查)从用户发送到注册属主的命令的拷贝 |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 |
注册 | 注册为接口的侦探以随后接收由服务的属主和用户发送的所有命令和响应的拷贝。 |
注销 | 注销对象作为侦探 |
<数据集方法> | 定义如下 |
属主函数API | |
方法 | |
注册 | 注册与函数相关联的服务的权属 |
读取参数列表 | 读取由调用方发送的参数列表 |
返回 | 将返回值发送到调用方(用户) |
注销 | 注销函数权属 |
<数据集方法> | 定义如下 |
用户函数API | |
方法 | |
调用 | 利用对象的参数列表来调用远程函数 |
读取返回值 | 读取由属主返回的返回值 |
侦查函数API | |
方法 | |
读取参数列表 | 读取(侦查)由调用方发送的参数列表的拷贝 |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 |
注册 | 注册对象为接口的侦探以随后接收在函数的用户与属主之间进行的所有调用和返回的拷贝 |
注销 | 注销对象作为侦探 |
<数据集方法> | 定义如下 |
数据集 | |
方法 | |
清空所有数据集 | 清空/删除与命令或者响应(消息)或者输入或者输出(函数)相关联的所有数据集 |
删除数据集 | 删除指定数目的数据集 |
插入数据集 | 插入指定数目的数据集 |
加载数据集 | 从数据库加载数据集并且将它们与接口对象相关联 |
存储数据集 | 将当前与接口对象相关联的数据集存储到数据库中 |
杂项API |
方法 |
指针设置 | 指定指针的属性,例如IN、IN/OUT、OUT、合用、专用 |
指针附加 | 每当修改指针地址或者大小时被激活 |
图2呈现了通信数据库124的功能框图。通信数据库124包括编译器200和访问引擎204。通信数据库124解析比如C、C++或者其它编程语言的标准接口定义文件并且自动地提取出接口和跟踪信息。接口定义文件包含用于线程通信和软件跟踪的接口的格式。在本发明的一个实施例中,编程者能够通过使用编译器程序在接口文件中定义这些特征。
在通信数据库124中组织和存储来自接口定义文件的信息,使得其它桌面应用能够经由主机计算机通信模块116来访问它。下文参照图9描述构建通信数据库124的示例性过程。
在本发明的一个实施例中,DAT系统100为主机计算机108上的应用提供对嵌入式计算机104上的例程进行远程函数调用(并且反之亦然)这一无缝和自动能力,而除了链接DAT系统100的库和报头文件之外,无需修改应用。下文参照图3描述自动生成支持远程函数调用的代码的示例性方法。
图3是图示了本发明的另一示例性实施例的框图。图3中所示本发明的实施例允许脚本语言无缝地访问在嵌入式计算机104和主机计算机108上执行的线程。
参照图3中所示本发明的实施例,DAT系统100也包括消息接发自动化部件(“MAC”)304和用于执行脚本的脚本引擎312。在本发明的一个实施例中,MAC 304是服从COM的对象,该对象提供用于执行如下功能的接口:指定接口的权属、生成数据集、发送信息字段、发送数据集、接收消息和列举由DAT系统100管理的各消息。脚本引擎312能够是支持诸如JavaScript、Visual Basic、VBScript、Tcl、Jscript、Python等脚本语言的任何专用或者现成引擎。
以下阐述对由MAC 304提供用于通信的各种对象的描述。在本发明的一个实施例中有6类接口对象:(i)属主消息对象;(ii)用户消息对象;(iii)侦查消息对象;(iv)属主函数对象;(v)用户函数对象;以及(vi)侦查函数对象。应当理解也可以使用其它类型的对象。
MAC 304的应用编程接口阐述如下。
属主消息对象 | |
方法 | |
广播 | 将响应广播到所有预订用户(仅广播消息类型) |
读取命令 | 读取由用户发送的命令(仅单向和双向消息类型) |
注册 | 注册与消息相关联的服务的权属(仅单向和双向消息类型)。 |
发送响应 | 发送响应(仅双向消息类型) |
注销 | 注销服务权属(仅单向和双向消息类型) |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
命令净荷 | 消息对象的命令净荷 |
响应净荷 | 消息对象的响应净荷 |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成为响应的部分 |
<数据集性质> | 定义如下 |
用户消息对象 | |
方法 | |
读取响应 | 读取从属主发送的响应(仅双向和广播消息类型) |
发送和读取 | 组合发送命令方法和读取响应方法(仅双向消息类型) |
发送命令 | 将命令发送到注册属主(仅单向和双向消息类型) |
预订 | 预订与消息相关联的服务。一旦预订,消息对象将接收由服务的任何属主发送的所有广播(仅广播消息类型) |
取消预订 | 取消服务的预订 |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
命令净荷 | 消息对象的命令净荷 |
响应净荷 | 消息对象的响应净荷 |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成响应的部分 |
<数据集性质> | 定义如下 |
侦查消息对象 | ||
方法 | ||
读取命令 | 读取(侦查)从用户发送到注册属主的命令的拷贝 | |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 | |
注册 | 注册为接口的侦探以随后接收由服务的属主和用户发送的所有命令和响应的拷贝。 | |
注销 | 注销对象作为侦探 | |
<数据集方法> | 定义如下 | |
性质 | ||
名称 | 接口的名称 | |
SUID | 用于接口的STRIDE唯一标识符 | |
命令净荷 | 消息对象的命令净荷 | |
响应净荷 | 消息对象的响应净荷 | |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成响应的部分 | |
<数据集性质> | 定义如下 |
属主函数对象 | ||
方法 | ||
注册 | 注册与函数相关联的服务的权属 | |
读取参数列表 | 读取由调用方发送的参数列表 | |
返回 | 将返回值发送到调用方(用户) | |
注销 | 注销函数权属 | |
<数据集方法> | 定义如下 | |
性质 | ||
名称 | 接口的名称 | |
SUID | 用于接口的STRIDE唯一标识符 | |
参数列表 | 用于函数对象的参数列表 | |
返回值 | 用于函数对象的返回值 | |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 | |
<数据集性质> | 定义如下 |
用户函数对象 | |
方法 | |
调用 | 利用对象的参数列表来调用远程函数 |
读取返回值 | 读取由属主返回的返回值 |
<数据集性质> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
参数列表 | 用于函数对象的参数列表 |
返回值 | 用于函数对象的返回值 |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 |
<数据集性质> | 定义如下 |
侦查函数对象 | |
方法 | |
读取参数列表 | 读取(侦查)由调用方发送的参数列表的拷贝 |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 |
注册 | 注册对象为接口的侦探以随后接收在函数的用户与属主之间进行的所有调用和返回的拷贝 |
注销 | 注销对象作为侦探 |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
参数列表 | 用于函数对象的参数列表 |
返回值 | 用于函数对象的返回值 |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 |
<数据集性质> | 定义如下 |
数据集 | |
方法 | |
清空所有数据集 | 清空/删除与命令或者响应(消息对象)或者输入或者输出(函数对象)相关联的所有数据集 |
删除数据集 | 删除指定数目的数据集 |
插入数据集 | 插入指定数目的数据集 |
加载数据集 | 从数据库加载数据集并且将它们与接口对象相关联 |
存储数据集 | 将当前与接口对象相关联的数据集存储到数据库中 |
在一个实施例中,对于消息对象而言,数据集是与命令(命令净荷)或者响应(响应净荷)相关联的数据的集合。单向消息具有命令数据集,广播消息具有响应数据集,而双向消息兼而有之。对于函数对象而言,数据集与输入(参数列表)和/或输出(返回值和出指针数据)相关联。
脚本语言允许开发者定制、自动化测试和添加宏功能。脚本语言一般而言对于此类功能是易于使用的。脚本语言也包含在编译语言中找到的同一功能中的相当部分,如循环、条件语句等。脚本程序是以由脚本引擎执行的脚本语言来编写的文本。消息接发自动化部件304提供对嵌入式计算机104和主机计算机108中各线程的通信接口的脚本语言无缝和即时访问。使用消息接发自动化部件304,能够在表达式中设置、读取、检验或者使用消息中的字段或者远程函数调用中的参数。经由消息自动化部件304,脚本程序也能够无缝地发送和接收与在嵌入式计算机104或者主机计算机108上运行的软件的通信。另外,建立这样的通信不要求对在嵌入式计算机104和/或主机计算机108上执行的线程的代码改变。
在本发明的一个实施例中,经由工作室模块128所提供的接口来起动脚本程序。在本发明的另一实施例中,脚本程序无需由工作室模块128起动,而是代之以能够用主机计算机通信模块116起动并且与该模块直接地通信。
图4A和图4B图示了能够在脚本引擎312中执行以与在嵌入式计算机104和/或主机计算机108上执行的线程114之一通信的示例性脚本。代码块404图示了可以用来发送双向消息的示例性代码。在代码块404的第3行上,该脚本设置与在通信数据库124中维护的消息之一相等的对象“msg”。在第6行,该脚本在与消息相关联的净荷中设置字段。正如本领域中所知,净荷是结构化数据。在第9行,该脚本发送命令消息并且等待响应。在第11行,该脚本接收响应数据。代码块408图示了可以用来预订广播的示例性代码。代码块412图示了可以用来激活函数的示例性代码。代码块416图示了可以用来注册函数权属的示例性代码。
图5是图示了本发明的另一实施例的框图。COM编辑器504自动地构建用作在服从COM的应用512与主机计算机通信模块116之间的接口的生成部件508。COM是一种无论应用的开发语言是什么都使不同应用能够使用已知接口来相互通信的Microsoft技术。为求兼容,COM指定了接口的特定格式和协议。
生成部件508为服从COM的应用512提供通过预定API对嵌入式应用的通信接口的无缝和即时访问。使用生成部件508,服从COM的应用512与在嵌入式计算机104和主机计算机108上执行的线程无缝地通信。主机计算机通信平台116以适合于通信目的地的形式来自动地格式化通信。格式化通信的示例性过程在下文中参照图11来描述。
下文的阐述是对生成部件508所提供的应用编程接口的描述。
属主消息对象 | |
方法 | |
广播 | 将响应广播到所有预订用户(仅广播消息类型) |
读取命令 | 读取由用户发送的命令(仅单向和双向消息类型) |
注册 | 注册与消息相关联的服务的权属(仅单向和双向消息类型)。 |
发送响应 | 发送响应(仅双向消息类型) |
注销 | 注销服务权属(仅单向和双向消息类型) |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
命令净荷 | 消息对象的命令净荷 |
响应净荷 | 消息对象的响应净荷 |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成响应的部分 |
<数据集性质> | 定义如下 |
用户消息对象 | |
方法 | |
读取响应 | 读取从属主发送的响应(仅双向和广播消息类型) |
发送和读取 | 组合发送命令方法和读取响应方法(仅双向消息类型) |
发送命令 | 将命令发送到注册属主(仅单向和双向消息类型) |
预订 | 预订与消息相关联的服务。一旦预订,消息对象将接收由服务的任何属主发送的所有广播(仅广播消息类型) |
取消预订 | 取消服务的预订 |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
命令净荷 | 消息对象的命令净荷 |
响应净荷 | 消息对象的响应净荷 |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成响应的部分 |
<数据集性质> | 定义如下 |
侦查消息对象 | ||
方法 | ||
读取命令 | 读取(侦查)从用户发送到注册属主的命令的拷贝 | |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 | |
注册 | 注册为接口的侦探以随后接收由服务的属主和用户发送的所有命令和响应的拷贝。 | |
注销 | 注销对象作为侦探 | |
<数据集方法> | 定义如下 | |
性质 | ||
名称 | 接口的名称 | |
SUID | 用于接口的STRIDE唯一标识符 | |
命令净荷 | 消息对象的命令净荷 | |
响应净荷 | 消息对象的响应净荷 | |
出指针数据 | 出指针数据-定义为命令净荷的部分,组成响应的部分 | |
<数据集性质> | 定义如下 |
属主函数对象 | ||
方法 | ||
注册 | 注册与函数相关联的服务的权属 | |
读取参数列表 | 读取由调用方发送的参数列表 | |
返回 | 将返回值发送到调用方(用户) | |
注销 | 注销函数权属 | |
<数据集方法> | 定义如下 | |
性质 | ||
名称 | 接口的名称 | |
SUID | 用于接口的STRIDE唯一标识符 |
参数列表 | 用于函数对象的参数列表 |
返回值 | 用于函数对象的返回值 |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 |
<数据集性质> | 定义如下 |
用户函数对象 | |
方法 | |
调用 | 利用对象的参数列表来调用远程函数 |
读取返回值 | 读取由属主返回的返回值 |
<数据集性质> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
参数列表 | 用于函数对象的参数列表 |
返回值 | 用于函数对象的返回值 |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 |
<数据集性质> | 定义如下 |
侦查函数对象 | |
方法 | |
读取参数列表 | 读取(侦查)由调用方发送的参数列表的拷贝 |
读取响应 | 读取(侦查)从属主发送到用户的响应的拷贝 |
注册 | 注册对象为接口的侦探以随后接收在函数的用户与属主之间进行的所有调用和返回的拷贝 |
注销 | 注销对象作为侦探 |
<数据集方法> | 定义如下 |
性质 | |
名称 | 接口的名称 |
SUID | 用于接口的STRIDE唯一标识符 |
参数列表 | 用于函数对象的参数列表 |
返回值 | 用于函数对象的返回值 |
出指针数据 | 出指针数据-定义为参数列表的部分,组成输出的部分 |
<数据集性质> | 定义如下 |
数据集 | |
方法 | |
清空所有数据集 | 清空/删除与命令或者响应(消息对象)或者输入或者输出(函数对象)相关联的所有数据集 |
删除数据集 | 删除指定数目的数据集 |
插入数据集 | 插入指定数目的数据集 |
加载数据集 | 从数据库加载数据集并且将它们与接口对象相关联 |
存储数据集 | 将当前与接口对象相关联的数据集存储到数据库中 |
注意到在一个实施例中,MAC 304、工作室模块128和生成部件508能够一起用来为各类应用提供通信系统。例如,使用MAC 304的应用编程接口,第一语言的脚本程序能够经由生成部件508、在嵌入式计算机104上执行的线程、在主机计算机108上执行的线程以及工作室模块128与同一或者第二语言的脚本程序即服从COM的应用512通信。
另外,例如使用生成部件508的应用编程接口,服从COM的应用能够经由MAC 304、另一服从COM的应用、在嵌入式计算机104上执行的线程、在主机计算机108上执行的线程和工作室模块128与脚本程序通信。
另外,例如使用工作室128,用户能够发送消息到服从COM的应用512、脚本程序、在主机计算机108上执行的线程、在嵌入式计算机104上执行的线程以及从服从COM的应用512、脚本程序、在主机计算机108上执行的线程、在嵌入式计算机104上执行的线程接收消息。
图6是图示了通信数据库124的一个实施例的代表框图。视实施例而定,可以向数据库添加附加类型的信息和/或可以省略某些类型的信息。
通信数据库124包括平台特有配置部分604。平台特有配置部分604包含嵌入式计算机机器特征和主机计算机机器特征。特征能够包括诸如平台是Bit Endian还是Little Endian的指示、枚举大小、指针大小、结构对准边界等项目。注意到在本发明的一个实施例中,嵌入式计算机机器特征和主机计算机机器特征存储于与通信数据库124不同的位置,比如主机计算机通信模块116或者嵌入式计算机104。
通信数据库124也包括消息部分608和原型部分610。消息部分608和原型部分610分别描述在嵌入式计算机104和主机计算机108上各消息和远程函数调用的特征。特征能够包括:(i)消息的唯一名称和/或标识符;(ii)消息的总大小;(iii)通信的类型,例如单向消息、双向消息、广播消息、远程函数调用;以及(iv)作为通信的部分来传递的数据的类型。单向消息从通信的“用户”发送到通信的“属主”。线程能够经由注册例程来请求消息的权属,该例程经由主机计算机通信模块116的应用编程接口来提供。双向消息包括从用户发送到属主的“命令”和从属主发送到用户的“响应”。广播消息被发送到已经注册接收广播的所有线程。
通信数据库124也包括用于维护跟踪点的跟踪点部分612。通信数据库124也包括在消息接发部分608中标识的消息和在原型部分610中列举的函数所支持的数据类型的描述。
数据类型部分616包括:(i)作为消息或者远程函数调用的部分的数据结构中数据类型的描述,例如整数、字符、布尔、浮点、数组等;(ii)各消息中各元素的字段名称;(iii)以及可以作为消息的部分的嵌入式指针的特征的描述。
图7是图示了生成部件508的示例性部件分级的框图。服从COM的对象512起初经由根对象704来访问生成部件508。经由根对象704,服从COM的对象512能够发送命令并且从在通信数据库124中定义的特定消息和远程函数调用接收响应。例如,如图7中所示,服从COM的对象具有对与“消息1”相关联的对象708和与“消息2”相关联的对象712的访问权。使用与这些消息对象相关联的预定接口,服从COM的对象512能够利用在嵌入式计算机104上执行的线程来发送和接收净荷。
图8是图示了修改用以与DAT系统100通信的源代码的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。从步骤804开始,编程者添加用以激活由DAT系统100提供的注册方法的API调用。在本发明的一个实施例中,注册线程提供唯一线程标识代码。
接着在步骤808,编程者添加用以激活由DAT系统100提供的读取方法的API调用。继续到步骤812,编程者在适用的情况下添加用以激活由DAT系统100提供的发送方法的API调用。
继续到状态816,编程者添加用以“预订”消息的API调用。预订消息允许订户绑定到具体消息并且随后接收所有广播发送。其它消息接发API可以由DAT系统100比如针对如下各项来提供:发送命令;发送响应;广播消息、以及定义消息净荷的数据(内容)和元数据(特征)。
图9是图示了绑定通信数据库124的示例性过程的框图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。在本发明的一个实施例中,响应于用户请求来执行图9中所示过程。
从状态904开始,工作室模块128从用户所提供的多个接口定义文件中的各文件读取和提取信息。接着在步骤908,工作室模块128从接口定义文件中的各文件提取通信接口。提取的信息能够包括:(i)通信的类型,例如单向、双向、广播、远程函数调用;(ii)作为通信的部分来传递的数据的类型;(iii)作为消息或者远程函数调用的部分的数据结构中数据类型的描述,例如整数、字符、布尔;(iv)可以是消息的部分的嵌入式指针的特征的描述,例如存储器是“合用”还是“专用”、与通信接口相关联的存储器的发送方法以及与通信接口相关联的指针数据。
接着在步骤916,工作室模块128存储嵌入式计算机机器特征。嵌入式计算机机器特征能够通过用户输入、嵌入式计算机104的自动诊断来提供或者由嵌入式计算机104自动地提供。嵌入式计算机机器特征的例子在上文中参照图6有所描述。在本发明的一个实施例中,假设这些特征固定,即在各连接上完全相同。
进行到步骤920,工作室模块128存储主机计算机机器特征。主机计算机机器特征能够通过用户输入或者主机计算机108的自动诊断来提供。主机计算机机器特征的例子在上文中参照图6有所描述。
图10是图示了使用DAT系统100的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。从步骤1004开始,DAT系统100从各线程接收注册信息。接着在步骤1008,DAT系统接收用于特定消息的净荷。
继续到步骤1012,DAT系统100格式化用以发送到它的目的地线程的净荷。注意到如果目的地线程在发送线程本地,则格式化可能是不必要的。下文参照图11描述格式化数据以便发送到远程平台的示例性过程。进展到步骤1016,DAT系统100将格式化的净荷发送到目的地线程。
图11是图示了格式化用于在不同平台上使用的数据的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。在本发明的一个实施例中,图11所执行的过程是由DAT系统100的主机计算机通信模块116执行。另外,图11涉及格式化用于从一个平台如主机计算机108发送到另一平台如嵌入式计算机104的净荷的过程。
图11中所示过程的使用提供了在分布式异质计算平台上相互通信的应用之间的互操作性。在本发明第一个实施例中,为了减少嵌入式设备上的处理和存储器要求,DAT系统100在主机计算机108上执行所有数据格式化。
当在不同计算机上的两个应用在通信时,主机计算机108使用嵌入式计算机104和主机计算机108的平台特征以及单独接口定义信息(“通信接口信息”)来恰当地映射消息。在一个实施例中,嵌入式计算机104总是以它的本机形式、即消息存储于它的存储器中的形式来发送和接收消息。主机计算机108在接收这些消息时将它们映射成它的形式而在发送消息到嵌入式计算机104时将消息转换成嵌入式计算机104平台的本机形式。
从判决状态1104开始,主机计算机通信模块116确定目的地线程是本地的还是远程的。如果线程是本地的,则该过程继续到步骤1108并且查询净荷以便发送到目的地线程。如果该发送是本地的,则没有必要对净荷更多修改。
再次参照判决步骤1104,如果目的地线程不是本地的,则该过程继续到步骤1112,其中主机计算机通信模块116将净荷中的数据和指针所引用的数据拷贝到用于发送到嵌入式计算机104的消息中。下文参照图12A、12B、12C和12D进一步具体描述管理指针数据的示例性过程。
继续到步骤1116,如有必要,则主机计算机通信模块116格式化净荷中数据内元素的字节次序。例如,如果主机计算机108是Big Endian而嵌入式计算机104是Little Endian或者相反,则主机计算机通信模块116保留数据中位的次序。
继续到步骤1124,主机计算机通信模块116格式化净荷中数据类型的大小。例如,如果嵌入式计算机104将某一位长度用于某些数据类型而主机计算机使用不同位长,则主机计算机通信模块116调整用于发送到其它平台的数据的大小。进展到步骤1128,主机计算机通信模块116根据接收平台的任何要求来调整数据结构的排序。
图12A-12D各图示了对净荷中从一个平台传递到另一平台的指针进行管理的示例性方法。图12A涉及针对“命令”消息从嵌入式计算机104上的线程接收净荷的过程。在一个实施例中,针对净荷中各指针来执行图12A。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。在本发明的一个实施例中,图12中所示方法由主机计算机通信模块116执行。注意到当嵌入式计算机通信模块112接收命令消息时在嵌入式计算机通信模块112上执行图12中所示相似的过程。然而在一个实施例中,对于这样的过程而言,嵌入式计算机通信模块112不执行任何对接收到的数据的平台间格式化,因为这样的格式化由主机计算机通信模块116执行。
在从状态1204开始之前,在嵌入式计算机104上的线程已经激活作为嵌入式计算机通信模块112的应用编程接口的部分的发送命令。作为响应,嵌入式计算机通信模块112已经构建并且发送平台间消息到主机计算机通信模块116。该平台间消息包括作为发送命令的部分来标识的净荷并且如果适用则包括由净荷中的指针所引用的数据。
从步骤1204开始,主机计算机通信模块116获得在所发送的通信的净荷中所选指针的嵌入式指针属性。在本发明的一个实施例中,属性信息存储于所发送的通信中。各指针的第一属性是指针被分类为“入”、“出”或者“入/出”。“入”属性表示了指针所引用的数据从命令的发送方传递到消息的属主但是没有数据要由消息的属主返回。“出”属性表示了命令的发送方将不发送指针所引用的数据但是数据将由属主返回并且存储于指针所引用的地址中。“入/出”属性表示了指针所引用的数据将从命令的发送方发送而消息的属主将返回在存储器中存储的由指针引用的数据。
各指针的第二属性是指针是“专用”还是“合用”。“专用”存储器的管理(当没有使用时释放存储器)由DAT系统100处理。“合用”存储器的管理由用户和/或消息的属主处理。
继续到步骤1210,主机计算机通信模块116创建用以保持指针数据的本地缓存器。继续到判决步骤1212,主机计算机通信模块116确定指针属性是“入”还是“入/出”。如果指针属性是“入”或者“入/出”,则该过程继续到步骤1214。继续到步骤1214,主机计算机通信模块116将从嵌入式计算机104发送的指针数据拷贝到本地缓存器中。在这一步骤,主机计算机通信模块116根据上文参照步骤1116、1124和1128描述的过程来格式化指针数据。
接着在步骤1218,主机计算机通信模块116将缓存器的地址拷贝到净荷中。继续到判决步骤1220,主机计算机通信模块116确定指针的第一属性是否为“入”。如果指针的第一属性是“入”,则该过程继续到判决步骤1222。在判决步骤1222,主机计算机通信模块116确定指针的第二属性是否为“专用”。如果指针的第二属性是专用,则该过程继续到步骤1228。否则,如果指针的第二属性不是专用即为合用,则该过程结束。
再次参照判决步骤1212,如果第一属性不是“入”或者“入/出”,则属性是“出”,而该过程继续到步骤1216。在步骤1216,主机计算机通信模块116将本地缓存器的地址拷贝到净荷中。从步骤1216或者从判决步骤1220(如果第一属性是“入/出”),该过程继续到步骤1224。在这一步骤,主机计算机通信模块116等待主机计算机108上的线程激活由DAT系统100的应用编程接口提供的响应命令。在收到响应时,该过程继续到步骤1226。在这一步骤,格式化响应数据以便发送到嵌入式计算机104。
该过程从步骤1226或者从判决步骤1222(如果指针的第二属性是“专用”)继续到步骤1228,其中主机计算机通信模块116等待主机计算机104上的线程激活在主机计算机通信模块116的应用编程接口中的读取完成命令。在收到读取完成命令时,该过程继续到步骤1230,其中主机计算机通信模块释放存储器。
图12B涉及对从主机计算机108上的线程发送到嵌入式计算机104上的线程的命令消息中的净荷内的指针进行管理的过程。图12B具体图示了在图11的步骤111中发生的步骤。在一个实施例中,针对净荷中各指针来执行图12B。视实施例而定,可以添加附加步骤、删除其它步骤或者重新安排步骤的排序。当从嵌入式计算机104上的线程发送命令消息到主机计算机108时由嵌入式计算机执行相似过程。然而在这一过程中,嵌入式计算机通信模块112不执行任何对发送净荷的格式化,因为由主机计算机通信模块116在收到净荷时执行格式化。
从步骤1230开始,主机计算机通信模块116创建缓存器以保持用于发送到嵌入式计算机104的平台间消息。另外在这一步骤,主机计算机通信模块116为嵌入式指针在平台间消息中创建报头。另外在这一步骤,主机计算机通信模块116在平台间消息中存储指针的指针属性。
继续到判决步骤1232,主机计算机通信模块116确定指针的指针属性是否为“出”。如果所选指针的属性是“出”,则该过程结束。然而如果指针属性不是“出”,即它是“入”或者“入/出”,则该过程继续到步骤1244。在步骤1244,主机计算机通信模块116将指针所引用的数据拷贝到报头中。另外,主机计算机通信模块116格式化用于由在嵌入式计算机108上的线程使用的数据。例如,主机计算机通信模块执行上文参照步骤1116、1124和1128描述的步骤。
接着在判决步骤1236,主机计算机通信模块116确定指针属性是否为“入”。如果指针属性是“入”,则该过程继续到步骤1240。在这一步骤,如果经授权,则主机计算机通信模块116释放存储器,即释放表示为”合用”的指针的属性。然而,如果指针属性不是“入”,则该过程结束。
图12C涉及从嵌入式计算机通信模块112接收响应消息的过程。图12C具体图示了在图11的步骤111中发生的步骤。在一个实施例中,针对净荷中各指针来执行图12C。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。当从嵌入式计算机104上的线程发送命令消息到主机计算机108时由嵌入式计算机104执行相似过程。然而在这一过程中,嵌入式计算机通信模块112不执行任何对所发送的净荷的格式化,因为由主机计算机通信模块116在收到净荷时执行格式化。
在从状态1250开始之前,在嵌入式计算机104上的线程已经激活作为嵌入式计算机通信模块112的应用编程接口的部分的发送响应命令。作为响应,嵌入式计算机通信模块112已经构建并且然后发送平台间消息到主机计算机通信模块116。平台间消息包括作为发送响应的部分来标识的净荷并且如果适用则包括由净荷中的指针所引用的数据。
从判决步骤1250开始,主机计算机通信模块116确定在平台间消息中指针的指针属性是否表示属性“入”。如果指针属性表示了属性“入”,则该过程继续到步骤1252,而主机计算机通信模块116格式化接收的数据用于与主机计算机108。例如在一个实施例中,主机计算机通信模块116执行上文参照步骤1116、1124和1128描述的步骤。
然而如果指针属性不表示“入”,即指针属性表示“入/出”或者“出”,则该过程继续到步骤1254。在步骤1254,主机计算机通信模块116创建用以存储由嵌入式计算机104发送的指针数据的本地缓存器。继续到步骤1256,主机计算机通信模块116将来自平台间通信的指针数据拷贝到本地缓存器中。接着在步骤1258,主机计算机通信模块116将缓存器的地址拷贝到所接收的净荷中。
继续到判决步骤1260,主机计算机通信模块116确定它是否应当释放指针。在本发明的一个实施例中,这通过读取指针属性来确定。如果指针属性表示“专用”,则主机计算机通信模块116判决释放存储器。然而如果指针属性表示“合用”,则主机计算机通信模块116允许用户释放存储器。
如果主机计算机通信模块116在步骤1260中决定释放存储器,则该进程继续到步骤1262,其中主机计算机通信模块116等待主机计算机108上的线程激活读取完成命令。继续到步骤1264,主机计算机通信模块116释放本地缓存器。该过程从判决步骤160(如果主机计算机通信模块116不释放指针)或者步骤1264结束。
图12D涉及对从主机计算机108上的线程发送到嵌入式计算机104上的线程的响应消息中的净荷内的指针进行管理的示例性过程。图12D具体图示了在图11的步骤1112中发生的步骤。在一个实施例中,针对净荷中各指针来执行图12D。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。当从嵌入式计算机104上的线程发送响应消息到主机计算机时由嵌入式计算机104执行类似过程。然而在这一过程中,嵌入式计算机通信模块112不执行任何对所发送的净荷的格式化,因为由主机计算机通信模块116在收到净荷时执行格式化。
在开始之前,在嵌入式计算机104上的线程已经发送命令消息而在主机计算机108上的线程已经通过激活DAT系统100的API的发送响应例程来做出响应。
从步骤1265开始,主机计算机通信模块116分配传出缓存器中的空间(“报头”)用以存储由指针引用的数据。传出缓存器是从主机计算机通信模块116发送到嵌入式计算机通信模块112的平台间消息的部分。继续到判决步骤1266,主机计算机通信模块116确定指针属性是否表示“入”。如果指针属性表示“入”,即它们不表示“出”或者“入/出”,则该过程继续到判决步骤1267。在判决步骤1267,主机计算机通信模块116确定是否释放与在对应发送命令过程中分配的存储器相关联的存储器。在本发明的一个实施例中,这通过读取指针属性来确定。如果指针属性表示”合用”,则主机计算机通信模块116判决释放存储器。然而如果指针属性表示“专用”,则主机计算机通信模块116允许用户拥有并且最终释放存储器(经由本地操作系统所提供的例程)。如果主机计算机通信模块116确定它应当释放存储器,则该过程继续到步骤1268,而主机计算机通信模块116释放存储器。该过程从步骤1268或者判决步骤1266(如果指针属性不表示“入”)继续到步骤1270,而主机计算机通信模块116格式化用于发送到嵌入式计算机的由指针引用的数据。例如在一个实施例中,主机计算机通信模块116执行上文参照步骤1116、1124和1128描述的步骤。作为格式化的部分,格式化的数据被存储于报头中(步骤1265)。
图13是图示了根据脚本引擎312中的脚本来使用DAT系统100的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。从步骤1304开始,工作室模块128已经从用户接收用以加载脚本文件的请求并且它在这里也这样做。接着在步骤1312,工作室确定与脚本文件相关联的脚本类型。脚本类型能够用不同方式来确定,包括检查所标识的脚本文件的扩展名或者根据脚本本身的内容来确定。脚本语言的示例性类型包括JavaScript、Visual Basic、VBScript、Tcl、Jscript、Python等。
进展到步骤1316,工作室模块128标识与脚本类型相关联的对应脚本引擎312。继续到步骤1320,工作室模块128初始化脚本引擎312。
接着在步骤1324,工作室模块128加载消息接发自动化部件(“MAC”)304。下文参照图14描述加载MAC 304的过程。继续到步骤1328,MAC 304被“暴露”于脚本引擎312。在本发明的一个实施例中,暴露MAC 304包括向脚本引擎312提供MAC 304的句柄。接着在步骤1332,起动脚本引擎,从而允许在步骤1304中加载的脚本访问MAC 304的API。进展到步骤1336,脚本程序能够使用MAC 304的API与线程114通信。下文参照图15描述使用MAC 304的示例性进程。
图14是图示了加载MAC 304的过程的流程图。图14具体图示了在图13的步骤1324中发生的步骤。从步骤1404开始,工作室模块128调用MAC 304的初始化例程并且传递通信数据库124的句柄作为参数。接着在步骤1408,MAC 304生成消息接发自动化部件“MAC”数据库对象。MAC数据库对象包含来自通信数据库114的信息中的某些信息。MAC数据库由脚本程序用来访问MAC 304的应用编程接口。
图15-17是图示了使用脚本语言与MAC 308通信的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。图15是涉及向MAC 304注册特定消息的过程的流程图。从步骤1504开始,在脚本引擎312中执行的脚本激活MAC 304的注册方法。继续到步骤1508,MAC对象调用主机计算机通信模块116的注册API。
图16A是图示了经由MAC 304发送消息的过程的流程图。从步骤1604开始,脚本取回对MAC数据库对象的引用。接着在步骤1606,脚本请求MAC数据库对象提供对消息对象的引用。消息对象由脚本程序用来与通信的属主通信或者从其它处接收通信。使用消息对象,脚本能够设置消息的字段、发送消息、接收消息和执行其它标准的消息接发功能。
继续到步骤1610,MAC数据库对象从通信数据库124取回消息定义信息。在本发明的一个实施例中,经由主机计算机通信模块116取回消息定义信息。在本发明的另一实施例中,直接从通信数据库124取回消息定义信息。消息定义信息包括:(i)通信的类型,例如单向、双向、广播、远程函数调用;以及(ii)作为通信的部分来传递的数据的类型。接着在步骤1614,MAC数据对象基于从通信数据库124取回的原型定义来创建MAC消息对象。
继续到步骤1618,MAC数据库对象从通信数据库取回针对所请求的消息对象而存储的任何数据集。接着在步骤1622,MAC数据库对象将数据集添加到(在步骤1614中创建的)消息对象。
进展到步骤1624,MAC数据库对象向脚本返回对消息对象的引用。接着在步骤1628,脚本能够使用对消息对象的引用来设置消息的数据字段。脚本具有经由MAC数据库对象对多个可读和可写数据集的访问权。在这一步骤,脚本能够标识用于后续使用的数据集之一。继续到步骤1632,脚本激活方法对象的发送方法。继续到步骤1636,MAC数据库对象将当前索引所引用的数据集发送到拥有所述消息的线程。
接着在判决步骤1640,MAC数据库对象确定是否启用自动递增。自动递增使脚本能够以每个发送命令来发送不同数据集。如果启用了自动递增,则该过程继续到步骤1644,而MAC数据库对象选择下一数据集。再次参照判决步骤1640,如果未启用自动递增,则该过程结束。
图16B是图示了经由MAC 304激活函数的过程的流程图。从步骤1650开始,脚本取回对MAC数据库对象的引用。接着在步骤1654,脚本请求MAC数据库对象来提供对远程函数调用对象的引用。远程函数调用对象由脚本程序用来与处理远程函数调用的线程通信。使用远程函数调用对象,脚本能够设置将在激活远程函数调用时传递的参数。
继续到步骤1658,MAC数据库对象从通信数据库124取回远程函数调用原型定义信息。在本发明的一个实施例中,经由主机计算机通信模块116取回原型定义信息。在本发明的另一实施例中,直接从通信数据库124取回消息定义信息。
接着在步骤1662,MAC数据库对象基于从通信数据库124取回的远程函数调用原型定义来创建MAC远程函数调用对象。
继续到步骤1664,MAC数据库对象从通信数据库取回针对所请求的远程函数调用对象而存储的任何数据集。接着在步骤1666,MAC数据库对象将数据集添加到MAC远程函数调用对象。
进展到步骤1668,MAC数据库对象向脚本返回对远程函数调用对象的引用。接着在步骤1670,脚本能够使用远程函数调用对象来设置远程函数调用的数据字段(参数)。脚本具有经由MAC数据库对象对多个可读和可写数据集的访问权。在这一步骤,脚本能够标识用于后续使用的数据集之一。继续到步骤1672,脚本激活远程函数调用对象的调用方法。继续到步骤1674,MAC数据库对象将当前索引所引用的数据集发送到处理远程函数调用的线程。
接着在判决步骤1676,MAC数据库对象确定是否启用自动递增。自动递增使脚本能够以每个发送命令来发送不同数据集。如果启用了自动递增,则该过程继续到步骤1678,而MAC数据库对象选择下一数据集。再次参照判决步骤1676,如果未启用自动递增,则该过程结束。
图17A是图示了经由MAC 304接收消息的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤1700开始,脚本调用MAC数据库对象的读取方法。接着在步骤1704,MAC数据库对象调用主机计算机通信模块116的读取API。继续到步骤1708,主机计算机通信模块116等待接收消息。继续到步骤1712,MAC数据库对象从主机计算机通信模块116接收消息和消息标识符。接着在步骤1720,MAC数据库对象将消息对象返回给脚本,该脚本继而能够访问所请求的消息的内容。
图17B是图示了脚本经由MAC 304所提供的函数调用应用编程接口来接收通信的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。从步骤1750开始,脚本调用MAC数据库对象的读取方法。接着在步骤1754,MAC数据库对象调用主机计算机通信模块116的读取API。
继续到步骤1758,MAC数据库对象等待接收远程函数调用命令消息。接着在步骤1762,MAC数据库对象接收该远程函数命令消息和函数标识符。
继续到步骤1764,远程函数调用对象被返回到脚本程序。接着在步骤1766,脚本程序访问远程函数调用对象的输入参数。
进展到步骤1768,MAC数据库对象向脚本返回对远程函数调用对象的引用。接着在步骤1770,脚本激活远程函数调用对象的返回方法。继续到步骤1772,远程函数调用对象调用主机计算机通信模块116的发送应用编程接口。继续到步骤1774,MAC数据库对象将当前索引所引用的数据集发送到处理远程函数调用的线程。
接着在判决步骤1776,MAC数据库对象确定是否启用自动递增。自动递增使脚本能够以每个发送命令来发送不同数据集。如果启用了自动递增,则该过程继续到步骤1778,而MAC数据库对象选择下一数据集。再次参照判决步骤1776,如果未启用自动递增,则该过程结束。
图18是图示了与来自任何服从COM的语言的DAT系统100接口的过程的流程图。视实施例而定,可以添加步骤、删除其它步骤以及重新安排步骤的排序。从步骤1804开始,用户加载“起动”COM编辑器工具504(图5)。下文参照图19描述加载COM编译器工具的示例性过程。
接着在步骤1808,COM编译器构建生成部件508(图5)。生成部件508是可由其它服从COM的程序访问的COM对象。使用生成部件508,服从COM的程序能够容易地:测试接口、发送通信到在嵌入式计算机104或者主机计算机108上执行的线程、接收从在嵌入式计算机或者主机计算机108上执行的线程发送的通信以及如这里描述的其它功能。生成部件508提供用于执行前述各功能的多个预定接口。下文参照图20描述构建生成部件508的示例性过程。
继续到步骤1816,生成部件可经由任何服从COM的语言来访问。下文参照图22描述使用生成部件的示例性过程。
图19是起动COM编译器工具504的示例性过程的流程图。图19具体图示了在图18的步骤1804中发生的某些步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤1904开始,用户标识数据库。DAT系统100能够支持用于多个项目的多个数据库。继续到步骤1908,用户选择所选数据库的哪些消息或者功能也将包含于生成的COM对象中。在本发明的一个实施例中,用户经由图形用户接口实用程序来选择消息和/或远程函数调用。
继续到步骤1912,用户选择编译器版本。COM编辑器504需要知道正在用来构建生成部件508的编译器的版本以便用恰当的格式提供恰当的控制文件。进展到步骤1916,COM辑器504请求用户指定构建类型如释放或者调试。
图20是图示了构建生成部件508的示例性过程的流程图。图20具体图示了在图18的步骤1808中发生的某些步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤2004开始,COM编辑器工具将用户所标识的数据(步骤1904)加载到存储器中。接着在步骤2008,COM编辑器工具开始针对如下各项来执行的过程:(i)用户所标识的所有消息和/或远程函数调用(步骤1908);(ii)所标识的消息和/或远程函数调用的所有净荷;以及(iii)用来访问生成部件508中所有其它对象的根对象。在一个实施例中,针对前述各对象来执行步骤2012、2016、2020和2024。
在步骤2012,COM编辑器504为各对象生成软件接口。下文参照图21描述生成接口的示例性过程。接着在步骤2016,生成部件为对象生成COM类定义,也称之为联合类(co-class)。继续到步骤2020,COM编辑器为各COM对象生成COM类实施。至于与生成软件接口、COM类定义和COM类实施有关的更多信息,请参见如下文献:DON BOX,ESSENTIAL COM(1998)和BRENT RECTOR,CHRIS SELLS & JIMSPRINGFIELD,ATL INTERNALS(1999)。
进展到判决步骤2024,COM编辑器504确定它是否已经处理所有消息/远程函数调用、净荷和根对象。如果尚未处理所有这些对象,则该过程返回到步骤2012(上文讨论)。然而,如果已经处理所有项目,则COM编辑器504继续到步骤2028并且如果有任何需要的编译器特有文件则提供这些文件。
接着在步骤2032,COM编辑器504发起所选编译器来构建生成部件508。在本发明的一个实施例种,在动态链接库“.DLL”中提供COM部件。进展到步骤2036,COM编辑器504向主机计算机108中的注册表注册动态链接库。
图21是图示了生成接口的过程的流程图。图21具体图示了在图20的步骤2012中发生的步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤2104开始,COM编辑器504为“内置”构件功能生成方法定义。接着在步骤2108,COM编辑器504为子对象2108生成访问器函数。例如,根对象的子对象包括各消息和/或远程函数调用。另外例如,消息对象和/或远程函数调用对象的子对象包括与该对象相关联的一个或者多个净荷。进展到步骤2112,COM编辑器504生成用于设置和获得对象性质的接口。
图22是图示了使用生成部件508的过程的流程图。图22具体图示了在图18的步骤1816中发生的某些步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
在从步骤2216开始之前,用户已经打开COM开发环境并且经由该COM开发环境加载生成部件508。
从步骤2216开始,用户创建对生成部件508的引用。接着在步骤2220,用户创建根对象的实例。进展到步骤2224,用户能够使用根对象访问器函数来取回所需消息对象或者远程函数调用对象。继续到步骤2228,用户能够使用对象的访问器函数来选择所需净荷对象。
继续到步骤2232,用户激活净荷对象的方法来获得或者设置净荷对象的性质。例如,用户能够在净荷对象中存储数据。接着在步骤2236,用户激活消息对象或者远程函数调用对象上的方法来发送通信。用户也可以激活消息对象上的其它方法,比如注册消息,在消息上的此类任何广播通过激活过程来接收。其它方法在上文中参照图5有所描述。接着在步骤2240,用户实施事件句柄来接收所接收的异步通信(如果有)。
图23是图示了使用工作室模块128的过程的流程图。工作室模块128提供用于测试由通信数据库124标识的各通信接口的图形用户接口控制面板。从步骤2304开始,用户加载所选通信数据库124。用户可以具有用于不同对象的不同通信数据库。一旦加载,用户可以查看和选择通信数据库124中的任何通信接口。在选择之后,用户能够针对数据库来执行多个功能,比如:指定通信接口的权属(步骤2312)、生成数据集(状态2316)、发送信息字段(步骤2320)和发送数据集(步骤2324)。
图24是图示了基于监视在DAT系统100之下执行的两个线程之间的通信来生成数据集的过程的流程图。注意到生成数据集的过程可以由用户通过任一如下各项来启动:(i)工作室模块128;(ii)激活主机计算机通信模块116的方法的C语言源代码;(iii)在脚本引擎312中执行的脚本;或者(iv)经由生成部件508的服从COM的应用。
从步骤2404开始,用户指定将要跟踪的通信数据路径。例如,DAT系统100能够跟踪经由消息或者经由远程函数调用发送的数据。
接着在步骤2408,DAT系统100监视和存储跨经各指定通信路径发送的数据。在本发明的一个实施例中,数据存储于持久型测试数据对象中。继续到步骤2412,任何线程然后能够选择和取回任何持久型测试数据对象的内容并且将数据用于测试。继续到步骤2416,DAT系统100的线程之一使用持久型数据对象之一将数据从所选持久型数据对象之一跨经通信数据路径之一进行发送。
图25图示了由工作室模块128提供的示例性用户接口2500。用户接口2500包括列举在通信数据库124中维护的所有接口的接口窗口2504。在接口列表中的各条目可由用户选择。响应于用户选择,在屏幕上显示通信窗口2508。通信窗口2508包括允许用户注册消息或者远程函数调用的权属的注册图标2510。在一个实施例中,如果消息是双向消息,则通信窗口被划分成命令窗口2508和响应窗口2510。命令窗口和响应窗口包括一个或者多个数据集字段2512。数据集字段的数目可由用户配置。数据集示出了最新净荷的内容和可由用户可配置数目的先前收到的净荷。
使用数据集字段2512,用户能够为特定命令消息构建净荷并且设置响应消息的净荷。另外,用户能够选择“存储数据集”图标2514用以存储通信数据库124中数据集字段2512内的值。随后用户能够选择“加载数据集”图标2516来加载所存储的值。另外,用户可以选择时钟图标2518以使工作室模块128以可由用户配置的时间间隔自动地依次重复和发送数据值。
图26图示了允许用户查看和测试作为函数调用的部分来传输的参数的示例性用户接口2600。使用注册图标,用户能够注册函数的权属。用户窗口2608显示允许用户选择函数中参数的值的多个参数字段2610。属主窗口2610显示已经传递到函数的参数。用户接口2600允许如上文参照图25所述那样保存和加载数据集。
图27是图示了自动地生成用于与嵌入式计算机通信模块112或者主机计算机通信模块116一起使用的源代码模板的过程的流程图。在本发明的一个实施例中,图27的过程由工作室模块128执行。在本发明的另一实施例中,图37的过程由独立工具如代码生成器执行。为便于描述,如下描述涉及代码生成器。然而应当理解,这样的功能能够由工作室模块128或者通信数据库124提供。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤2704开始,用户标识对通信接口进行定义的一个或者多个接口定义文件。例如在图32的代码块3200中图示了接口定义文件的一部分。
继续到步骤2708,用户选择所选接口定义文件中的一个或者多个通信接口。在本发明的一个实施例中,代码生成器提供用于选择通信接口的图形用户接口实用程序。
接着在步骤2716,生成“线程”的代码模板用于处理接口定义文件中的各所选消息。下文参照图28描述生成线程的示例性过程。在图32的代码块3204中示出了示例性模板。
进展到步骤2720,为接口定义文件中的各所选函数生成线程的模板。下文参照图31描述生成线程的示例性过程。在图32的代码块3204中示出了示例性模板。
图28是图示了用于为接口定义文件中的各标识消息生成线程的过程的流程图。图28具体图示了在图27的步骤2716中发生的步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
在从步骤2800开始之前,创建消息处理例程以处理用户已经标识的所有消息。消息处理例程包括循环以及继该循环之后的切换语句。例如参见代码块3204。从步骤2800开始,进入循环并且针对标识的各消息来执行步骤2804、2808和2812。继续到步骤2804,代码生成器添加代码行以注册各消息。例如参见代码块3204。在本发明的一个实施例中,源代码包括用以激活由嵌入式计算机通信模块112或者主机计算机通信模块116提供的注册例程的代码。用以激活注册例程的代码被置于生成的切换语句之前。
接着在步骤2808,代码生成器为标识的各消息生成消息处理代码。下文参照图29描述生成消息处理代码的示例性过程。继续到步骤2812,代码生成器创建用于发送消息的例程。下文参照图30描述创建用于发送消息的例程的示例性过程。
图29是图示了生成消息处理代码的过程的流程图。图29具体图示了在图28的步骤2908中发生的步骤。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。针对在图27的步骤2708中由用户标识的各消息来执行图29中所示过程。
从步骤2904开始,代码生成器生成情况(case)语句。继续到步骤2908,代码生成器向用户生成用以指导用户添加代码的注释。
继续到判决步骤2912,代码生成器确定消息是否为“双向”。如果消息是“双向”,则该过程继续到步骤2916。否则该过程继续到步骤2920。
在步骤2916,代码生成器在生成的情况语句中添加用以激活发送响应例程的代码。作为例子,图32的代码块3204包括对“SendMessageTwoWayResponse”例程的调用。下文参照图30的3016描述生成响应例程如“SendMessageTwoWayResponse”例程的过程。在本发明的一个实施例中,生成的代码将激活DAT系统100的API如SendResponse()。在这一步骤,代码生成器也可以为便于用户而生成其它API,例如用以设置和附加指针的例程。进展到步骤2920,代码生成器也可以生成用以调用由API提供的释放例程的代码。
图30是图示了生成用于经由在图27的步骤2708中由用户标识的通信接口来发送消息的例程的模板的过程的流程图。图30具体图示了在图28的步骤2812中发生的步骤。从步骤3008开始,代码生成器确定消息是单向、双向还是广播。如果消息是单向或者双向,则该过程继续到步骤3010。在步骤3010,代码生成器生成如下函数,该函数用以发送激活发送命令的命令。在图32的代码块3208中示出示例性的生成代码模板。继续到判决步骤3012,代码生成器确定通信是单向或者双向。如果消息不是单向(即双向),则该过程继续到步骤3016。在步骤3016,代码生成用于发送响应的函数。生成的代码激活用以发送响应的API。
再次参照判决步骤3008,代码生成器确定消息是否为广播消息。如果消息是广播,则该过程继续到步骤3020。在步骤3020,代码生成器添加如下代码,该代码用以激活作为嵌入式主机通信模块112和主机计算机通信模块116的API的部分的广播例程。该过程从步骤3012(如果通信是“单向”)、3020和3016继续到步骤3024。在步骤3024,代码生成器确定在消息的净荷中是否存在指针。如果存在指针,则该过程继续到步骤3028。在步骤3028,代码生成器生成如下代码,该代码用以激活作为通信库API的部分的指针设置命令。接着在步骤3032,代码生成器生成用以激活API附加指针的代码。注意到在步骤3032和3028中生成的命令在生成的发送响应命令(步骤3016)之前被插入到生成的代码中。
图31是流程图,该流程图图示了生成用于经由远程函数调用跨平台通信的模板代码的过程。在本发明的一个实施例中,平台间函数调用激活本地函数,该本地函数经由嵌入式计算机通信模块112和主机计算机通信模块116所提供的消息接发来与同一名称的远程函数通信。
视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。从步骤3104开始,针对步骤3108、3112和3116来执行循环。在该循环中生成模板代码以便在本地平台即嵌入式计算机104或者主机计算机108上执行。在这一背景下的本地平台被定义为没有待激活的例程的计算机。针对在图27的步骤2708中由用户标识的各函数来执行步骤3108、3112和3116。在步骤3108,代码生成器生成发送命令。接着在步骤3112,所生成的代码生成读取命令。继续到步骤3116,代码生成器生成用以返回响应的代码。在图33的代码块3212中示出了从步骤3108、3112和3116所得到的示例性代码块。
接着在步骤3120,针对步骤3124、3128、3132、3136和3140来执行循环。在这一循环中生成模板代码以便在远程平台上执行。继续到步骤3124,代码生成器生成用以激活API的注册例程的代码。进展到步骤3128,代码生成器生成如下代码,该代码激活在其它平台上的线程所请求的本地API并且发送响应消息。在代码块3124中示出了从步骤3124、3218、3132、3136和3140所得到的示例性代码块。
接着在判决步骤3132,代码生成器确定在函数的参数中是否有指针。如果在函数的参数中没有指针,则该过程结束。然而如果有指针,则该过程继续到步骤3136而代码生成器生成如下代码,该代码用以激活设置指针的API。进展到步骤3140,代码生成器生成如下代码,该代码用以激活附加指针的API。该过程然后结束。
图34是流程图,该流程图图示了生成和使用用以截获在目标设备如嵌入式计算机104上执行的所选例程的代码的过程。在这一步骤,在一个实施例中,用户已经开发其目标在于在嵌入式计算机104上编译和执行的多个源代码文件。可以执行图34的过程以允许主机计算机108截获嵌入式设备104上的例程之一到嵌入式设备104上另一例程的调用。在截获该调用之后,主机计算机108可以执行比如如下各项的示例性动作:(i)允许用户查看和分析数据;(ii)调用嵌入式计算机104上的截获例程并且将结果转发到例程的激活器;和/或(iii)出于将来使用和诊断的目的,存储由例程的激活器提供的参数信息和/或存储向例程的激活器传递的返回信息。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
从步骤3404开始,为一个或者多个所选模块生成截获代码。在一个实施例中,在步骤3404,响应于用户对特定模块(例程集)的选择,用户能够定义将针对主题模块来执行的截获类型。该模块的目标在于在目标设备如嵌入式计算机104上执行。在这一步骤,用户除了能够定义下文讨论的其它项目之外还能够定义如下项目:(i)主机计算机108是否将激活嵌入式计算机104中的例程;(ii)是否将在主机计算机108而不是嵌入式计算机104上提供例程;或者(iii)用户是否请求用以动态地激活所选例程在目标设备上的激活这一能力。下文参照图35描述生成截获代码的示例性过程。视用户的选择而定,生成代码用于在主机计算机120和嵌入式计算机104上执行。
在一个实施例中,步骤3404由代码生成模块执行。在一个实施例中,代码生成模块可以与工作室模块128集成。在另一实施例中,代码生成模块可以包括在主机计算机108上执行的独立应用(未示出)。
继续到步骤3408,利用在步骤3404中选择的一个或者多个模块来编译在步骤3404中生成的代码以创建可执行程序。接着在步骤3412,在主机计算机108和/或嵌入式计算机104上执行在步骤3404中编译的代码。
进展到步骤3416,嵌入式计算机104可选地向主机计算机108提供跟踪信息以便观察和/或存储捕获。在一个实施例中,跟踪信息包括向在嵌入式计算机104上执行的例程传递的或者从该例程返回的参数和/或返回信息。跟踪信息可以存储于嵌入式计算机104中的日志内并且被主机计算机108定期地请求。
接着在步骤3420,主机计算机108能够动态地截获在嵌入式计算机104上执行的所选函数。在一个实施例中,由工作室模块128提供图形用户接口以允许用户向嵌入式计算机104发送请求截获在嵌入式计算机104上执行的一个或者多个所选函数的信号。在另一实施例中,该信号通过脚本语言来提供。在又一实施例中,该信号通过应用程序来发送。响应于这一信号并且在激活待截获的例程时,嵌入式计算机104收集已经为待截获的例程提供的参数并且将收集的参数发送到主机计算机108以供处理。一旦主机计算机108已经完成处理所截获的例程,主机计算机108将返回信息提供给嵌入式计算机104以便返回到调用了截获的例程的例程。在一个实施例中,经由上文参照图11的步骤1116、1124和1128描述的数据适配过程来修改从嵌入式计算机104发送到主机计算机108的参数信息。另外在一个实施例中,经由上文参照图11的步骤1116、1124和1128描述的数据适配过程来修改从主机计算机108发送到嵌入式计算机104的返回信息。
在一个实施例中,用户也可以请求动态地停止对特定例程的截获。在这一实施例中,请求可以从主机计算机108异步地发送到嵌入式计算机104:请求继续对截获的例程的调用而不进行截获。
接着在步骤3424,用户可以选择请求重新使用在步骤3412收集的跟踪信息(步骤3404)。在一个实施例中,用户可以使用在步骤3424收集的参数集和/或返回信息并且将此信息提供给在主机计算机108或者嵌入式计算机104上执行的例程。
图35是图示了生成截获代码的过程的流程图。图35具体图示了针对图34的步骤3404在一个实施例中发生的某些步骤。
从步骤3508开始,代码生成模块从用户接收数据捕获指令。在一个实施例中,作为这一步骤的部分,用户为一个或者多个模块定义将要截获哪些例程以及将要如何截获它们。在一个实施例中,能够选择三种不同类型的截获中的一类或者多类截获:“占位(stub)”、“代理”或者“委托”。占位使主机计算机108能够激活嵌入式计算机104上的相应方法。代理使嵌入式计算机104能够激活在主机计算机108或者另一平台上执行的同一名称的方法。委托截获对所选函数的调用。对于各类截获即占位、代理或者委托,源代码由代码生成模块自动地生成以执行相应功能。为便于描述,生成的用于各类截获的源代码通过它的相应类型来表述,例如占位包括用来执行上述“占位”截获的代码。
在一个实施例中,提供图形用户接口3900,该接口显示位于所选源代码模块内的各例程。如图39中所示,显示所选模块中的多个例程,例如“DevInit”和“DevRun”。对于各例程而言,用户可以指定例程为“占位”、“代理”或者“委托”。在一个实施例中,有效的选择组合包括如下组合:无选择框、仅占位、仅代理、仅委托以及占位和委托。
继续到步骤3516,代码生成模块视用户的选择而定在由用户选择的模块的源代码中生成一个或者多个代理。下文参照图36来描述创建代理的示例性过程。接着在步骤3520,代码生成模块视用户的选择而定生成一个或者多个占位。作为生成占位的部分,生成用于在从主机计算机108接收调用的客户机设备上执行的代码。继续到步骤3524,代码生成模块视用户的选择而定在由用户选择的源代码模块中生成一个或者多个委托。下文参照图37具体描述创建委托的示例性过程。
图36是图示了在图35所示过程的一个实施例中出现的生成代理的过程的流程图。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。
作为初始步骤的部分,代码生成模块提供与原例程同名的新代理例程。由此在编译之后,当其它例程激活占位例程时,它们将调用新代理例程而不是原例程。在步骤3604,代码生成模块提供用以收集所传递的参数的代码。接着在步骤3608,代码生成模块包括如下代码,该代码用以构建将参数发送到主机计算机108的消息。继续到步骤3612,代码生成模块提供用以发送消息的代码。进展到步骤3616,代码生成模块生成用以等待响应和拷贝输出的代码。接着在步骤3620,代码生成模块提供如下代码,该代码用以将输出返回到对例程进行激活的例程。
图37是流程图,该流程图图示了生成用以截获由目标设备执行的例程的代码的过程。视实施例而定,可以添加附加步骤、删除其它步骤以及重新安排步骤的排序。在一个实施例中,作为预备步骤,代码生成为截获例程提供源代码框架,例如为例程提供开始令牌和结束令牌以及提供例程的名称。在一个实施例中,截获模块的名称是与所选例程相同的名称。在这一情况下,所截获的例程的名称重命名为新名称。这有利地消除了修改对截获的例程进行调用的例程这一需要。在另一实施例中,修改对截获的例程(委托例程)进行激活的例程以激活截获模块。有利地,如果用于所截获的函数的源代码不可获得则这一点是有用的。此外在一个实施例中,作为预备步骤,代码生成为截获例程提供源代码框架,例如为例程提供开始令牌和结束令牌以及提供例程的名称。
从步骤3704开始,代码生成模块在委托截获代码中生成用于“动态超驰”的代码。作为这一步骤的部分,在一个实施例中,代码生成引擎生成如下代码,该代码确定主机计算机108是否已经发送信号以截获相应委托函数。继续到步骤3712,代码生成模块生成如下代码,该代码被配置为如果用户已经请求不截获调用则执行该代码。在步骤3712,代码生成模块3712生成用以在对被截获函数的调用之前收集跟踪信息的代码。在一个实施例中,用以收集跟踪信息的代码的生成可选择地由用户启用或者禁用。在另一实施例中,通过在主机计算机108上的应用如脚本程序、工作室模块或者Windows应用在运行时间来确定是否收集跟踪信息。
继续到步骤3716,代码生成模块生成用以激活所截获的模块的代码。继续到步骤3720,代码生成模块生成用以在对被截获函数的调用之后收集跟踪信息如返回信息的代码。注意到在一个实施例中,跟踪信息被存储于主机计算机108可以请求其内容的日志文件中。
DAT系统100提供单个虚拟环境,该环境使线程能够位于不同平台上并且仍无缝地相互通信。DAT系统100视嵌入式计算机104、主机计算机108和存储于通信数据库124中的通信接口的机器特征而定,通过自动地转换数据来提供在两个平台之间的通信可互用性。DAT系统100提供对设计到嵌入式计算机的软件应用中的基于消息的和远程的函数函数调用接口的自动和无缝访问。DAT系统100自动地提取接口信息并且构建消息接发和远程函数调用信息的数据库。
使用工作室模块128,用户具有对嵌入式应用接口的完全可视性和控制而无需解决如下问题:(i)更新桌面工具以适应新消息;(ii)更新嵌入式软件以支持桌面工具的新功能;(iii)使用什么目标编译器;(iv)使用什么RTOS;以及(iv)一个或者多个线程在什么平台上执行。DAT系统100允许经由脚本语言或者任何服从COM的应用对存储于通信数据库124中的接口的无缝访问。
尽管以上具体描述已经示出、说明和指出了如应用于各种实施例的本发明的新颖特征,但是应当理解在不脱离本发明的精神的情况下,本领域技术人员可以做出在所示设备或者过程的形式和细节上的各种省略、替换和变化。本发明的范围通过所附权利要求而不是通过以上描述来指明。落入权利要求等同含义和范围内的所有变化将被囊括于权利要求的范围内。
Claims (22)
1.一种方法,包括:
从主机设备向目标设备发送请求以截获从激活例程到被激活例程的调用;
截获所述调用;
收集作为对所述被激活例程的所述调用的部分来提供的至少一个参数;
从所述目标设备向所述主机设备发送所述参数;以及
基于所述主机设备和所述目标设备的特征来修改所述参数。
2.根据权利要求1所述的方法,还包括修改所述激活例程以调用一截获例程。
3.根据权利要求1所述的方法,还包括:
将所述被激活例程从第一名称重命名为第二名称;以及
提供具有所述第一名称的截获模块。
4.根据权利要求1所述的方法,还包括:
从所述主机设备向所述目标设备发送返回信息:
基于所述主机设备和所述目标设备的特征来修改所述返回信息;以及
将所发送的返回信息提供给所述被激活例程的激活例程。
5.根据权利要求4所述的方法,还包括:
从所述主机设备激活在所述目标设备上的所截获的所述被激活例程;以及
从所述被激活例程接收返回信息;以及
其中发送所述返回信息包括从所述被激活例程提供所接收的所述返回信息。
6.根据权利要求1所述的方法,还包括停止对从所述激活例程到所述被激活例程的调用的截获。
7.根据权利要求1所述的方法,其中相对于所述激活例程的执行异步地接收从所述主机设备到所述目的设备的所述请求。
8.根据权利要求1所述的方法,还包括在所述主机设备中存储所发送的参数。
9.一种系统,包括:
用于从主机设备向目标设备发送请求以截获从激活例程到被激活例程的调用的装置;
用于截获所述调用的装置;
用于收集作为对所述被激活例程的所述调用的部分来提供的至少一个参数的装置;
用于从所述目标设备向所述主机设备发送所述参数的装置;以及
用于基于所述主机设备和所述目标设备的特征来修改所述参数的装置。
10.根据权利要求9所述的系统,还包括:
用于从所述主机设备向所述目标设备发送返回信息的装置;
用于基于所述主机设备和所述目标设备的特征来修改所述返回信息的装置;以及
用于将所发送的返回信息提供给所述被激活例程的所述激活例程的装置。
11.根据权利要求9所述的系统,其中相对于所述激活例程的执行异步地接收从所述主机设备到所述目标设备的所述请求。
12.根据权利要求9所述的系统,还包括用于在所述主机设备中存储所发送的参数的装置。
13.根据权利要求9所述的系统,还包括用于修改截获例程以调用所述激活例程的装置。
14.根据权利要求9所述的系统,还包括:
将所述被激活例程从第一名称重命名为第二名称;以及
提供具有所述第一名称的截获模块。
15.一种系统,包括:
目标设备;以及
主机设备,配置为向所述目标设备发送请求以截获从激活例程到被激活例程的调用,所述目标设备被配置为截获所述调用以及收集作为所述调用的部分来提供的至少一个参数,所述目标设备被配置为从所述目标设备向所述主机设备发送所述参数;以及所述目标设备被配置用以基于所述主机设备和所述目标设备的特征来修改所述参数。
16.根据权利要求15所述的系统,其中所述主机设备被配置为基于所述主机设备和所述目标设备的特征修改返回信息,其中所述主机设备被配置为将所修改的返回信息发送到所述目标设备,以及其中所述目标设备将所发送的返回信息提供给所述被激活例程的所述激活例程。
17.根据权利要求15所述的系统,其中相对于所述激活例程的执行异步地接收从所述主机设备到所述目的设备的所述请求。
18.根据权利要求13所述的系统,还包括在所述主机设备中存储所发送的参数。
19.一种在电子设备中生成代码的方法,所述方法包括:
在所述电子设备中,标识至少一个待截获的例程;以及
在所述电子设备中,生成截获代码,其中所述截获代码被配置为在执行过程中以及响应于来自请求方的信号而激活一例程,以向所述请求方发送与所截获的例程相关联的至少一个参数。
20.根据权利要求19所述的方法,还包括提供一例程以基于所述主机设备和所述目标设备的特征来修改所述参数。
21.根据权利要求19所述的方法,还包括修改一激活例程以调用截获例程。
22.根据权利要求19所述的方法,还包括:
将所述被激活例程从第一名称重命名为第二名称;以及
提供具有所述第一名称的截获模块。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US11/061,283 US7530076B2 (en) | 2001-03-23 | 2005-02-18 | Dynamic interception of calls by a target device |
US11/061,283 | 2005-02-18 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN101120323A true CN101120323A (zh) | 2008-02-06 |
Family
ID=36698732
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA2006800049492A Pending CN101120323A (zh) | 2005-02-18 | 2006-02-13 | 用于测试设备的系统和方法 |
Country Status (4)
Country | Link |
---|---|
US (3) | US7530076B2 (zh) |
KR (1) | KR20070115925A (zh) |
CN (1) | CN101120323A (zh) |
WO (1) | WO2006091408A2 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819551A (zh) * | 2009-02-27 | 2010-09-01 | 国际商业机器公司 | 记录企业信息系统的服务交互数据的方法和系统 |
CN103235756A (zh) * | 2013-04-22 | 2013-08-07 | 北京航空航天大学 | 一种面向嵌入式系统分区应用程序软件的仿真测试方法 |
Families Citing this family (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7530076B2 (en) * | 2001-03-23 | 2009-05-05 | S2 Technologies, Inc. | Dynamic interception of calls by a target device |
US7020867B2 (en) * | 2001-03-23 | 2006-03-28 | S2 Technologies, Inc. | System and method for automatically generating code templates for communication via a predefined communication interface |
US7987451B1 (en) * | 2006-11-20 | 2011-07-26 | Mcafee, Inc. | System, method and computer program product for verifying invocations of interfaces |
KR100925517B1 (ko) | 2007-09-20 | 2009-11-05 | 엠디에스테크놀로지 주식회사 | 임베디드 디바이스 테스트 시스템 및 그 방법 |
CN101174237B (zh) * | 2007-11-28 | 2011-04-13 | 华为技术有限公司 | 一种自动化测试方法、系统及一种测试设备 |
CN101650648A (zh) * | 2008-08-14 | 2010-02-17 | 鸿富锦精密工业(深圳)有限公司 | 动态调用功能模块的系统及方法 |
CN101888396B (zh) * | 2009-05-12 | 2013-08-28 | 华为技术有限公司 | 调用设备能力的方法、微技设备和服务器 |
CN101902368B (zh) * | 2010-06-10 | 2012-08-29 | 福建升腾资讯有限公司 | 模拟批量瘦客户机操作的web性能测试方法及其测试系统 |
US9946560B2 (en) * | 2014-09-02 | 2018-04-17 | Apple Inc. | Development environment for multiple electronic devices |
CN105094925B (zh) * | 2015-08-25 | 2018-05-04 | 无锡力芯微电子股份有限公司 | 通用一次性可编程芯片的烧录滚动码方法和系统 |
CN108614765B (zh) * | 2016-12-12 | 2021-07-16 | 中国航空工业集团公司西安航空计算技术研究所 | 目标机中嵌入式软件测试数据获取方法 |
US10235161B2 (en) * | 2017-02-06 | 2019-03-19 | American Megatrends, Inc. | Techniques of adding security patches to embedded systems |
KR20240003252A (ko) | 2022-06-30 | 2024-01-08 | (주)제니퍼소프트 | 애플리케이션 성능 모니터링 시스템 및 방법 |
Family Cites Families (87)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6006277A (en) * | 1987-11-06 | 1999-12-21 | Bea Systems, Inc. | Virtual software machine for enabling CICS application software to run on UNIX based computer systems |
US5701427A (en) * | 1989-09-19 | 1997-12-23 | Digital Equipment Corp. | Information transfer arrangement for distributed computer system |
US5420516A (en) * | 1991-09-20 | 1995-05-30 | Audio Precision, Inc. | Method and apparatus for fast response and distortion measurement |
JP2838344B2 (ja) * | 1992-10-28 | 1998-12-16 | 三菱電機株式会社 | 半導体装置 |
US5497463A (en) * | 1992-09-25 | 1996-03-05 | Bull Hn Information Systems Inc. | Ally mechanism for interconnecting non-distributed computing environment (DCE) and DCE systems to operate in a network system |
US5530848A (en) * | 1992-10-15 | 1996-06-25 | The Dow Chemical Company | System and method for implementing an interface between an external process and transaction processing system |
JPH0827769B2 (ja) * | 1992-10-30 | 1996-03-21 | インターナショナル・ビジネス・マシーンズ・コーポレイション | 通信インターフェースの生成システム及びその方法 |
US5649131A (en) * | 1992-12-30 | 1997-07-15 | Lucent Technologies Inc. | Communications protocol |
GB9316948D0 (en) * | 1993-08-14 | 1993-09-29 | Ibm | Programming aid for distributed computing systems |
US5778228A (en) * | 1994-08-16 | 1998-07-07 | International Business Machines Corporation | Method and system for transferring remote procedure calls and responses over a network |
US5794047A (en) | 1994-09-29 | 1998-08-11 | International Business Machines Corporation | Method of walking-up a call stack for a client/server program that uses remote procedure call |
WO1996017306A2 (en) * | 1994-11-21 | 1996-06-06 | Oracle Corporation | Media server |
US5872909A (en) * | 1995-01-24 | 1999-02-16 | Wind River Systems, Inc. | Logic analyzer for software |
US5600790A (en) | 1995-02-10 | 1997-02-04 | Research In Motion Limited | Method and system for loading and confirming correct operation of an application program in a target system |
US7770013B2 (en) * | 1995-07-27 | 2010-08-03 | Digimarc Corporation | Digital authentication with digital and analog documents |
IL116804A (en) | 1996-01-17 | 1998-12-06 | R N S Remote Networking Soluti | Application user interface redirector |
US5926636A (en) * | 1996-02-21 | 1999-07-20 | Adaptec, Inc. | Remote procedural call component management method for a heterogeneous computer network |
US6014638A (en) * | 1996-05-29 | 2000-01-11 | America Online, Inc. | System for customizing computer displays in accordance with user preferences |
US6279124B1 (en) * | 1996-06-17 | 2001-08-21 | Qwest Communications International Inc. | Method and system for testing hardware and/or software applications |
US5881230A (en) * | 1996-06-24 | 1999-03-09 | Microsoft Corporation | Method and system for remote automation of object oriented applications |
US6275871B1 (en) * | 1996-07-03 | 2001-08-14 | Siemens Aktiengesellschaft | Asynchronous transport optimizing observer-pattern-like system supporting several modes for an interface definition language-less communication subsystem |
US20020032803A1 (en) * | 1996-07-15 | 2002-03-14 | Paul Marcos | Method and apparatus for dynamically brokering object messages among object models |
US5799266A (en) | 1996-09-19 | 1998-08-25 | Sun Microsystems, Inc. | Automatic generation of test drivers |
US6029181A (en) * | 1996-09-26 | 2000-02-22 | Honeywell, Inc. | System and method for translating visual display object files from non-component object model (COM) objects to COM objects |
TW347498B (en) | 1996-09-30 | 1998-12-11 | Casio Computer Co Ltd | Information supply system |
US6047280A (en) * | 1996-10-25 | 2000-04-04 | Navigation Technologies Corporation | Interface layer for navigation system |
US5867153A (en) * | 1996-10-30 | 1999-02-02 | Transaction Technology, Inc. | Method and system for automatically harmonizing access to a software application program via different access devices |
US6002868A (en) * | 1996-12-31 | 1999-12-14 | Compaq Computer Corporation | Test definition tool |
US5978902A (en) * | 1997-04-08 | 1999-11-02 | Advanced Micro Devices, Inc. | Debug interface including operating system access of a serial/parallel debug port |
US6038604A (en) * | 1997-08-26 | 2000-03-14 | International Business Machines Corporation | Method and apparatus for efficient communications using active messages |
US6070189A (en) * | 1997-08-26 | 2000-05-30 | International Business Machines Corporation | Signaling communication events in a computer network |
US6279123B1 (en) * | 1997-09-15 | 2001-08-21 | Lucent Technologies, Inc. | System for viewing and monitoring embedded processor operation |
US6070174A (en) * | 1997-09-30 | 2000-05-30 | Infraworks Corporation | Method and apparatus for real-time secure file deletion |
US5991778A (en) * | 1997-09-30 | 1999-11-23 | Stratfor Systems, Inc. | Method and apparatus for real-time secure file deletion |
US6418439B1 (en) * | 1997-11-12 | 2002-07-09 | Ncr Corporation | Computer system and computer implemented method for translation of information into multiple media variations |
US6066181A (en) * | 1997-12-08 | 2000-05-23 | Analysis & Technology, Inc. | Java native interface code generator |
US6658486B2 (en) | 1998-02-25 | 2003-12-02 | Hewlett-Packard Development Company, L.P. | System and method for efficiently blocking event signals associated with an operating system |
JP4562910B2 (ja) * | 1998-03-23 | 2010-10-13 | マイクロソフト コーポレーション | オペレーティングシステムのアプリケーション・プログラム・インターフェース |
US6205576B1 (en) * | 1998-06-05 | 2001-03-20 | Nortel Networks Limited | Method and apparatus for identifying indirect messaging relationships between software entities |
US6157955A (en) * | 1998-06-15 | 2000-12-05 | Intel Corporation | Packet processing system including a policy engine having a classification unit |
US6971048B1 (en) * | 1998-06-15 | 2005-11-29 | Sun Microsystems, Inc. | Testing device driver hardening |
US20010051974A1 (en) * | 1998-06-23 | 2001-12-13 | Ron Saad | Method and apparatus for automatic generation of data interfaces |
US6321347B1 (en) * | 1998-07-06 | 2001-11-20 | Mci Communications Corporation | Network testing system and method |
US6807667B1 (en) * | 1998-09-21 | 2004-10-19 | Microsoft Corporation | Method and system of an application program interface for abstracting network traffic control components to application programs |
US6546553B1 (en) * | 1998-10-02 | 2003-04-08 | Microsoft Corporation | Service installation on a base function and provision of a pass function with a service-free base function semantic |
US6629123B1 (en) * | 1998-10-02 | 2003-09-30 | Microsoft Corporation | Interception of unit creation requests by an automatic distributed partitioning system |
US6397255B1 (en) * | 1998-12-23 | 2002-05-28 | At&T Corp. | Method and apparatus for providing intelligent network services |
US6430570B1 (en) * | 1999-03-01 | 2002-08-06 | Hewlett-Packard Company | Java application manager for embedded device |
US6550060B1 (en) * | 1999-04-08 | 2003-04-15 | Novadigm, Inc. | Method and system for dynamic injection of dynamic link libraries into a windowed operating system |
US6842903B1 (en) * | 1999-05-19 | 2005-01-11 | Sun Microsystems, Inc. | System and method for providing dynamic references between services in a computer system |
US6473794B1 (en) * | 1999-05-27 | 2002-10-29 | Accenture Llp | System for establishing plan to test components of web based framework by displaying pictorial representation and conveying indicia coded components of existing network framework |
US6493719B1 (en) * | 1999-07-26 | 2002-12-10 | Microsoft Corporation | Method and system for scripting for system management information |
US7430670B1 (en) * | 1999-07-29 | 2008-09-30 | Intertrust Technologies Corp. | Software self-defense systems and methods |
US6931623B2 (en) * | 1999-08-30 | 2005-08-16 | Touchnet Information Systems, Inc. | Method of accessing data and logic on existing systems through dynamic construction of software components |
US6507877B1 (en) * | 1999-09-03 | 2003-01-14 | Whamtech, Inc. | Asynchronous concurrent dual-stream FIFO |
US6546477B1 (en) * | 1999-09-20 | 2003-04-08 | Texas Instruments Incorporated | Memory management in embedded systems with dynamic object instantiation |
US6487713B1 (en) * | 1999-09-24 | 2002-11-26 | Phoenix Technologies Ltd. | Software development system that presents a logical view of project components, facilitates their selection, and signals missing links prior to compilation |
EP1102498B1 (en) * | 1999-11-09 | 2004-02-25 | Nortel Networks Corporation | Telephony services in a communications network |
IL132916A (en) | 1999-11-14 | 2004-02-08 | Mcafee Inc | Method and system for intercepting an application program interface |
US6467084B1 (en) * | 1999-12-16 | 2002-10-15 | Emware, Inc. | Systems and methods for reprogramming an embedded device with program code using relocatable program code |
US6625648B1 (en) * | 2000-01-07 | 2003-09-23 | Netiq Corporation | Methods, systems and computer program products for network performance testing through active endpoint pair based testing and passive application monitoring |
US6529985B1 (en) * | 2000-02-04 | 2003-03-04 | Ensim Corporation | Selective interception of system calls |
US6721942B1 (en) * | 2000-03-31 | 2004-04-13 | Unisys Corporation | Component object model interface to C++ type conversion |
US6363417B1 (en) * | 2000-03-31 | 2002-03-26 | Emware, Inc. | Device interfaces for networking a computer and an embedded device |
GB0009945D0 (en) | 2000-04-20 | 2000-06-07 | Sgs Thomson Microelectronics | Debugging device nad method |
US7363633B1 (en) * | 2000-04-24 | 2008-04-22 | Microsoft Corporation | Registering and storing dependencies among applications and objects in a computer system and communicating the dependencies to a recovery or backup service |
US7047176B2 (en) * | 2000-05-05 | 2006-05-16 | Fujitsu Limited | Method and system for hardware simulation |
US6938246B2 (en) * | 2000-05-08 | 2005-08-30 | Microtune (San Diego), Inc. | Diagnostic tool for a portable thread environment |
GB0011020D0 (en) * | 2000-05-09 | 2000-06-28 | Ibm | Intercepting system API calls |
US6681386B1 (en) * | 2000-05-22 | 2004-01-20 | International Business Machines Corporation | Method, system, and program for parameter expansion, generation, and execution of scripts in a networked environment |
US6505342B1 (en) * | 2000-05-31 | 2003-01-07 | Siemens Corporate Research, Inc. | System and method for functional testing of distributed, component-based software |
US7013345B1 (en) * | 2000-06-12 | 2006-03-14 | Metric Systems Corporation | Method and apparatus for wireless networking |
US6779134B1 (en) * | 2000-06-27 | 2004-08-17 | Ati International Srl | Software test system and method |
US6892328B2 (en) * | 2000-09-29 | 2005-05-10 | Tanisys Technology, Inc. | Method and system for distributed testing of electronic devices |
US7406681B1 (en) * | 2000-10-12 | 2008-07-29 | Sun Microsystems, Inc. | Automatic conversion of source code from 32-bit to 64-bit |
CA2325684A1 (en) | 2000-11-10 | 2002-05-10 | Harm Sluiman | Automation and isolation of software component testing |
US20020065945A1 (en) * | 2000-11-29 | 2002-05-30 | Brad Calder | System and method for communicating and controlling the behavior of an application executing on a computer |
US20020065869A1 (en) * | 2000-11-29 | 2002-05-30 | Brad Calder | Method and process for virtualizing user interfaces |
US20020092003A1 (en) * | 2000-11-29 | 2002-07-11 | Brad Calder | Method and process for the rewriting of binaries to intercept system calls in a secure execution environment |
US6944850B2 (en) * | 2000-12-21 | 2005-09-13 | Intel Corporation | Hop method for stepping parallel hardware threads |
US7171670B2 (en) * | 2001-02-14 | 2007-01-30 | Ricoh Co., Ltd. | Method and system of remote diagnostic, control and information collection using multiple formats and multiple protocols with verification of formats and protocols |
US7020867B2 (en) * | 2001-03-23 | 2006-03-28 | S2 Technologies, Inc. | System and method for automatically generating code templates for communication via a predefined communication interface |
US7530076B2 (en) | 2001-03-23 | 2009-05-05 | S2 Technologies, Inc. | Dynamic interception of calls by a target device |
US6851117B2 (en) * | 2001-05-25 | 2005-02-01 | Sun Microsystems, Inc. | Supplanting motif dialog boxes via modifying intercepted function calls from an application |
US6865599B2 (en) * | 2001-09-04 | 2005-03-08 | Chenglin Zhang | Browser-to-browser, dom-based, peer-to-peer communication with delta synchronization |
US7325185B1 (en) * | 2003-08-04 | 2008-01-29 | Symantec Corporation | Host-based detection and prevention of malicious code propagation |
US7590743B2 (en) * | 2003-12-23 | 2009-09-15 | Softricity, Inc. | Method and system for associating a process on a multi-user device with a host address unique to a user session associated with the process |
-
2005
- 2005-02-18 US US11/061,283 patent/US7530076B2/en not_active Expired - Fee Related
-
2006
- 2006-02-13 WO PCT/US2006/004931 patent/WO2006091408A2/en active Application Filing
- 2006-02-13 KR KR1020077020002A patent/KR20070115925A/ko not_active Application Discontinuation
- 2006-02-13 CN CNA2006800049492A patent/CN101120323A/zh active Pending
-
2009
- 2009-05-05 US US12/435,998 patent/US20090217292A1/en not_active Abandoned
-
2011
- 2011-01-05 US US12/985,242 patent/US20110107348A1/en not_active Abandoned
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101819551A (zh) * | 2009-02-27 | 2010-09-01 | 国际商业机器公司 | 记录企业信息系统的服务交互数据的方法和系统 |
CN101819551B (zh) * | 2009-02-27 | 2013-01-02 | 国际商业机器公司 | 记录企业信息系统的服务交互数据的方法和系统 |
CN103235756A (zh) * | 2013-04-22 | 2013-08-07 | 北京航空航天大学 | 一种面向嵌入式系统分区应用程序软件的仿真测试方法 |
CN103235756B (zh) * | 2013-04-22 | 2015-11-04 | 北京航空航天大学 | 一种面向嵌入式系统分区应用程序软件的仿真测试方法 |
Also Published As
Publication number | Publication date |
---|---|
US20050257191A1 (en) | 2005-11-17 |
KR20070115925A (ko) | 2007-12-06 |
WO2006091408A2 (en) | 2006-08-31 |
US20110107348A1 (en) | 2011-05-05 |
WO2006091408A3 (en) | 2007-04-26 |
US7530076B2 (en) | 2009-05-05 |
US20090217292A1 (en) | 2009-08-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN101120323A (zh) | 用于测试设备的系统和方法 | |
US7237230B2 (en) | System and method for generating data sets for testing embedded systems | |
US8122292B2 (en) | Debugging of business flows deployed in production servers | |
US5634127A (en) | Methods and apparatus for implementing a message driven processor in a client-server environment | |
EP1117035A1 (en) | Runtime environment component services | |
US20040177361A1 (en) | Generic application program interface for native drivers | |
US7523458B2 (en) | Method for providing stand-in objects | |
WO2000029927A2 (en) | A method and system for loading instructions into an executing process | |
US20070198705A1 (en) | System and method for integrating resources in a network | |
CN107301179A (zh) | 数据库读写分离的方法和装置 | |
US20020038368A1 (en) | User interface integration method | |
EP0733968A2 (en) | Method and system for type identification for multiple object interfaces in a distributed object environment | |
WO2017167543A1 (en) | Multiform persistence abstraction | |
AU2002247399B2 (en) | Development and testing system and method | |
US6687900B1 (en) | Method and system for loading instructions into an executing process | |
Guide | PV-WAVE® | |
AU2002247399A1 (en) | Development and testing system and method |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C02 | Deemed withdrawal of patent application after publication (patent law 2001) | ||
WD01 | Invention patent application deemed withdrawn after publication |
Open date: 20080206 |