用于测试应用程序的装置及其方法

文档序号:6525008阅读:207来源:国知局
专利名称:用于测试应用程序的装置及其方法
技术领域
本发明涉及用于测试应用程序的装置及其方法。在为建立、开发和测试为交互电视系统的应用程序中使用的写作工具中有特别的应用。
数字电视系统以数字而不是模拟形式给观众传输电视频道。数字频道在发射机端编码为数字数据流,而在接收机端使用数字解码器解码,数字解码器可以在数字机顶盒(DSTB)中或在集成的数字电视中。为允许交互性,可以通过和与提供电视频道相同的介质或者通过不同的介质例如电话连接提供一个上行链路。作为这里使用的术语“数字电视系统”例如包括任何卫星、陆地、电缆和其它系统。
数字解码器通常包含一个处理器,其上可以运行称为应用程序的程序。应用程序的例子包括节目指南、远程购物、问答比赛、家庭银行和远程投票。这种应用程序通常在电视屏幕上显示一个菜单,用户可以从其中选择一个特别的选项。选择的结果可以通过上行链路传输以允许采取适当的行动。
应用程序可以与各种硬件诸如智能卡读卡机、图形卡、红外遥控电路、键盘、输入/输出端口或调制解调器相互反应,它们也可以从传输电视信号的介质接收数据。为提供应用程序和硬件之间的接口,提供称为设备的软件模块。这种设备包含为管理外部事件和物理接口必需的逻辑资源。在本发明的说明中词“设备”用于指示这种软件模块。
随着提供给用户的服务数目的迅速增加,需要一种写作工具,它可以允许设计、建立、诊断和测试应用程序。
已知的写作工具通常允许在工作站上开发应用程序,例如WindowsNT或UNIX工作站。当应用程序为进行测试准备好时,它被整体下载到一个数字解码器,诸如一个DSTB。然后可以使用该数字解码器测试应用程序的性能。这一测试过程可能十分笨拙。
根据本发明,提供一种为接收机/解码器测试应用程序的装置,它包括为模拟接收机/解码器的功能的设备。
本发明提供的优点是,不必提供接收机/解码器和相关硬件来测试应用程序。本发明另外提供的优点是,应用程序的开发者可以看见在该应用程序中的任何改变的结果而不用下载该应用程序到接收机/解码器。
这里使用的术语“接收机/解码器”可以意味着一个用于接收解码或未解码信号的接收机,例如电视和/或无线电信号,这些信号可以由某些其它设备广播或传输。该术语还可以意味着一个用于解码接收到的信号的解码器。这种接收机/解码器的实现可以包括一个与接收机集成在一起的解码器,用于解码接收到的信号,例如“机顶盒”,这种解码器与物理上分离的接收器结合作用,或者这种解码器包括另外的功能,诸如万维网浏览器、视频记录器、或电视。
模拟接收机/解码器的功能的设备可以例如是编程接收机/解码器功能的处理器。
可以使该装置适用于运行应用程序,它可以使应用程序开发者看到如果该应用程序运行在实际的接收机/解码器上该应用程序将如何表现。优选,使该装置适用于在一个第一进程中运行应用程序和在一个第二进程中模拟接收机/解码器的功能。这可以允许在一个实际的接收机/解码器中发生的异步事件在第二进程中被模拟,而同时该应用程序在第一进程中正在运行。第一和第二进程可以是彼此独立的,和可以运行在同一处理器上。该装置可以另外包括一个分区的存储器,用于允许在第一进程和第二进程之间传送数据。
可以使该装置适用于在第一线程内运行应用程序,和在第二线程内模拟接收机/解码器的功能。第一和第二线程可以形成一个单一进程的部分。
该装置可以另外包括一个分区的存储器,用于允许在第一和第二线程之间传送数据。
接收机/解码器的功能至少部分可以用软件模拟,使得不一定提供在接收机/解码器内产生该功能的硬件。然而,在该装置具有相应于接收机/解码器上的硬件的硬件可用的地方,可以使用该硬件来模拟接收机/解码器的功能,因此可以使用相应于在接收机/解码器中的硬件的硬件来模拟接收机/解码器的功能。
该装置可以包括存储设备(诸如存储器,例如计算机存储器或计算机可读介质,诸如硬磁盘),用于存储包含表示由在接收机/解码器中的硬件项产生的数据的数据的文件。这可以允许模拟该项硬件的功能。还可以使该装置适用于产生模拟接收机/解码器输出的输出,例如在屏幕上显示。这可以允许应用程序开发者在屏幕上看到该应用程序的输出,就像它出现在电视屏幕上一样。还可以使该装置另外适用于接收作为表示由接收机/解码器接收到的数据的输入数据,例如从一项硬件。这样一项硬件可以在屏幕窗口内表示。例如,在遥控单元的场合,该遥控单元的表示可以在屏幕窗口内显示,用户可以与该遥控单元交互反应以便测试应用程序。这样,可以使该装置适用于产生一个为在屏幕上显示的输出,它表示接收机/解码器可以与之交互反应的一项硬件。
本发明还提供为编辑和测试一个应用程序的装置,包括为编辑该应用程序的编辑器和为如上所述测试该应用程序的装置。应该理解,术语“编辑器”包括为设计、建立或改变应用程序的程序或其它工具。以这一方式,可以在同一装置例如一个工作站上提供用于编辑应用程序的编辑器和用于模拟接收机/解码器的行为的模拟器以便测试该应用程序。
可以使编辑器适用于产生一个为在屏幕上显示的输出,同时使为模拟接收机/解码器的功能的设备适用于产生为在同一屏幕上显示的输出。这可以允许应用程序开发者在用于编辑应用程序的同一屏幕上看见该应用程序的输出。处理器可以包括为运行编辑器和为模拟接收机/解码器功能的设备两者的处理器。可以使模拟接收机/解码器的功能的设备适用于运行由编辑器已经编辑的应用程序。
采取上述任何形式的装置可以是这样的,使得接收机/解码器的功能至少是例如从遥控器、键盘或诸如调制解调器的通信设备接收和处理输入数据、解码视频数据、产生视频输出、调谐到广播信号、与智能卡通信之一,和优选是至少下述设备之一的一种功能遥控器(REMOTECONTROL),串口(SERIAL),并口(PARALLEL),总线1394(BUS1394),调制解调器(MODEM),网络(NETWORK),堆栈(STACK),时钟(CLOCK),键盘(KEYBOARD),指针(POINTER),图形设备(GRAPHIC),图像设备(PICTURE),音频设备(AUDIO),视频设备(VIDEO),服务设备(SERVICE),显示器(DISPLAY),SCTV,SCVCR,SCAUX,电源(POWER),备份设备(BACKUP),MLOAD,调谐器(TUNER),和智能卡(SMARTCARD)。
本发明还提供一个工作站,它包括一个用于编辑应用程序的编辑器,一个用于模拟接收机/解码器的功能的模拟器,和一个为显示编辑器的输出和模拟器的输出的显示器。
可以使工作站的模拟器适用于运行已经由编辑器编辑的应用程序。可以在显示器的窗口内显示模拟器的输出。可以在显示器的窗口内模拟为给应用程序输入数据的输入设备。
在本发明的方法方面,提供一种为接收机/解码器测试应用程序的方法,包括模拟接收机/解码器的功能。
该方法可以另外包括运行应用程序的步骤。可以在第一进程中运行应用程序,在第二进程中模拟接收机/解码器的功能。第一和第二进程可以彼此独立。第一和第二进程也可以在同一处理器上运行。可以使用分区存储器在第一进程和第二进程之间传送数据。
在该方法中,可以至少部分以软件模拟接收机/解码器的功能。可以使用相应于在接收机/解码器中的硬件的硬件模拟接收机/解码器的功能。
前述方法还可以包括使用模拟文件表示由在接收机/解码器中的一项硬件产生的数据的步骤。
前述方法还可以包括产生为在屏幕上显示模拟接收机/解码器的输出的一个输出的步骤。
前述方法还可以包括接收作为表示应该由接收机/解码器接收的数据的输入数据的步骤。
在本发明的方法方面,可以提供一种编辑和测试应用程序的方法,包括编辑应用程序和进一步包括任何上述测试应用程序的方法。
编辑方法可以产生为在屏幕上显示的输出,测试方法可以产生为在同一屏幕上显示的输出。编辑方法和测试方法可以在同一处理器上运行。测试方法可以测试已经由编辑方法编辑的应用程序。
本发明还提供一种计算机可读介质,其上存储有为执行任何上述方法的程序,以及包括为执行任何上述方法的计算机程序产品。
本发明还提供一种基本如参考


的和在其中表示的方法和设备。
一个方面的特征可以应用于另一方面,相似地,方法特征可以应用于装置方面,反之亦然。
现在参考附图纯粹以举例方式说明本发明的优选特征,附图中图1表示一个典型的数字电视系统的结构;图2表示图1的数字电视系统的交互反应系统的结构;图3是图1系统的接收机/解码器的结构的原理示意图;图4是接收机/解码器的分层结构的功能方框图;图5表示为运行应用程序写作工具的工作站;图6表示写作工具的主要元素;图7表示按照本发明的一个实施例的模拟器的主要模块;图8和9是模拟器操作的原理表示;图10是模拟器的操作的第二例子的表示;图11表示如何由接收机/解码器产生一个为输出的图像的例子;图12和13表示在一个模拟的接收机/解码器上运行的应用程序的例子。
图1表示数字电视系统1的一个概述。本发明主要包括一个常规的数字电视系统2,它使用公知的MPEG-2压缩系统传输压缩的数字信号。更详细地说,在广播中心的MPEG-2压缩器3接收数字信号流(有代表性的是视频信号流)。压缩器3由链接5与多路复用器和加密器4连接。
多路复用器4接收多个另外的输入信号,组合传送流和通过链路7传输压缩的数据信号给广播中心的发射机6,链路当然可以使用包括远程通信链路的多种形式。发射机6发出电磁波信号,通过卫星上行链路8传送到卫星转发器9,在那里信号被电子处理,经过空间的卫星下行链路10发送到地面的接收机12,常规上为由最终用户拥有或租用的碟形天线。为传输数据的其它传输通道当然是可能的,诸如地面广播、电缆传输、组合卫星/电缆链路、电话网络等。
由接收机12接收的信号传送给一个由最终用户拥有或租用的集成的接收机/解码器13,接收机/解码器13与最终用户的电视机14连接。接收机/解码器13把压缩的MPEG-2信号解码成电视信号,传送给电视机14。虽然在图1中表示的是单独的接收机/解码器,但是接收机/解码器也可以是集成的数字电视的一部分。如在这里使用的,术语“接收机/解码器”包括单独的接收机/解码器,诸如机顶盒,和具有集成在其内的接收机/解码器的电视机。
在一个多信道系统中,多路复用器4处理从一些并行信源接收的音频和视频信息,与发射机6反应来沿着相应数目的信道广播信息。除了音频视频信息,电报或应用程序或任何其它类型的数字数据都可以引入这些信道中的一些或全部,与传送的数字音频和视频信息交织在一起。
一个条件访问系统15与多路复用器4和接收机/解码器13连接,它的一部分位于广播中心,一部分位于解码器中。它能够使最终用户从一个或多个广播供应商访问数字电视广播。一张智能卡能够插入接收机/解码器13,它能够解读涉及商品提供的消息(亦即,通过广播供应商出售的一个或几个电视节目)。用解码器13和智能卡,最终用户可以采取预订方式或根据观看付费的方式购买提供的商品。
如上所述,由系统传输的节目在多路复用器4被加密编码,应用于一个给定传输的条件和加密密钥由访问控制系统15确定。用这种方法传输加密编码数据是付费电视系统领域所公知的。通常,加密编码数据与一个为解码该数据的控制字一起传送,控制字本身由所谓的运行密钥加密,用加密形式传输。
加密编码数据和加密控制字然后由解码器13接收,解码器13已经访问存储在插入解码器的智能卡中的相同的运行密钥,来对加密的控制字解密,其后解密传送的数据。已付货的用户将例如在每月一次的广播EMM(权限管理消息)中接收为解密加密的控制字必需的运行密钥,以便许可观看传送的信号。
一个交互式系统16,也与多路复用器4和接收机/解码器13连接,也是一部分位于广播中心,一部分位于编码器,能够使最终用户通过一个调制解调的回送通道17与多种应用程序相互作用。调制解调的回送通道也可以用来与条件访问系统15通信。交互式系统可以例如用于能够使收看者立即与传送中心通信,要求授权观看特定的节目,下载应用程序等。
附图2表示本发明的数字电视系统1的交互电视系统16的一般结构。
例如,交互系统16允许最终用户从屏幕目录购买商品,按需阅读本地新闻和气象图和通过他们的电视机玩游戏。
交互系统4000概括包括4个主要元件
●位于广播中心或某处的写作工具4004,用于允许广播提供商建立、开发、诊断和测试应用程序;●位于广播中心、连接到写作工具4004的应用程序和数据服务器4006,用于允许广播提供商准备、验证和格式化应用程序和数据,为交付给多路复用器和加密器4插入到MPEG-2传输流中(通常其专用部分),以便给最终用户广播;●包括一个运行时间引擎(RTE)4008的虚拟机,它是一个安装在由最终用户拥有或租用的接收机/解码器13内的可执行代码,用于允许最终用户接收、验证、和加载应用程序到解码器13的工作存储器中以便执行。引擎4008还运行常驻的通用应用程序。引擎4008独立于硬件和操作系统;●在接收机/解码器13和应用程序和数据服务器4006之间的调制解调的回送通道17允许信号在最终用户请求时指示服务器4006插入数据和应用程序到MPEG-2传输流中。
交互电视系统使用“应用程序”操作,这些应用程序控制其内包括的接收机/解码器和各种设备的功能。应用程序在引擎4008中作为“资源”文件表示。“模块”是一组资源文件和数据。接收机/解码器的“存储器体积”是为模块的存储空间。模块可以从MPEG-2传输流下载到接收机/解码器13。
参考图3,现在说明接收机/解码器13或机顶盒的元件。在该图中表示的元件将根据功能块说明。
解码器13包括一个中央处理器20,它包括相关的存储器元件并适用于从串行接口21、并行接口22、调制解调器23(连接到图1的调制解调的回送通道17)接收输入数据,和在解码器的前面板上的开关触点24。
另外,解码器还适用于从一个红外线遥控器25经过控制单元26接收输入信号,还有两个智能卡读卡机27、28,适用于分别读银行或订购智能卡29、30。带有插入的订购卡30的订购智能卡读卡机28与一个条件访问单元29接合,给多路分配器/解密器30提供必要的控制字,以允许将加密的广播信号解密。解码器还包括一个常规的调谐器31和解调器32,在卫星传送的信号由单元30滤波和多路分配之前接收和解调。
解码器内数据的处理一般由中央处理器20来进行。附图4举例说明了接收机/编码器的中央处理器20的软件结构。参考附图4,该软件结构包括一个运行时间引擎4008,一个设备管理器4068和多个设备4062和设备驱动器4066来运行一个或多个应用程序4056。
如在本说明中所使用的,一个应用程序是一块用于控制优选是接收机/编码器13的高级功能的计算机代码。例如,当一个最终用户将遥控器25聚焦在从电视机14的屏幕上看到的一个按钮目标并按下确认键时,与该按钮关联的指令序列运行。
一个交互式应用程序建议若干菜单并在最终用户的要求下执行命令,提供涉及该应用程序目的的数据。应用程序可以是常驻的应用程序,也就是存储在接收机/解码器13中的只读存储器(或者闪存储器或其它非易失存储器)中的应用程序,也可以是广播或下载到接收机/解码器13的随机存取存储器或闪存储器中的应用程序。
应用程序存储在接收机/解码器13的存储器位置中,作为资源文件出现。资源文件包含图形对象描述单元文件,变量块单元文件,指令序列文件,应用程序文件和数据文件,更详细的描述在以上提到的专利说明书中。
接收机/解码器包含的存储器分成一个随机存取存储器部分,一个闪存储器部分和一个只读存储器部分,但是这种物理结构与逻辑结构不同。存储器可以进一步分成与各种接口关联的存储器部分。从一种观点来看,存储器可以认为是硬件的一部分;从另一种观点来看,存储器可以被认为是支持和包含表示为与硬件分开的整个系统。
中央处理器20可以被认为位于形成虚拟机4007的一部分的运行时间引擎4008的中心。它在一边(“高级”的一边)与应用程序连接,在另一边(“低级”的一边)经过下面要讨论的各种中间逻辑单元连接到接收机/解码器硬件4061,包括上述各种接口(亦即,例如,串行接口21,并行接口22,调制解调器23和控制单元26)。
详细参考图4,各种应用程序与虚拟机4007连接;一些更一般使用的应用程序或多或少固定常驻在系统中,如在4057所指示的,而其它的应用程序将下载到系统中,比如从MPEG数据流或从要求的其它端口下载。
虚拟机4007除运行时间引擎4008外还包括一些常驻的库函数4006,库函数4006包括一个工具箱4058。程序库包含用C语言实现的多种功能,由引擎4008使用。这些包括数据操作,比如压缩、扩展或数据结构、线图的比较等。程序库4006还包括关于接收机/解码器13中的固件的信息,比如硬件和软件的版本号和可用随机存取存储器空间,以及当下载一个新的设备4062时使用的函数。函数可以下载到程序库中,存储在闪存储器或随机存取存储器中。
运行时间引擎4008连接到设备管理器4068,设备管理器4068与一组设备4062连接,设备4062与设备驱动器4060连接,4060依次与端口或接口连接。在广义上,一个设备驱动器可以被看作定义一个逻辑接口,以便两个不同的设备驱动器可以连接到一个公共的物理端口。一个设备通常会与超过一个的设备驱动器相连;如果一个设备与单个设备驱动器相连,则该设备通常会被设计成结合为通信所需要的所有的功能,以便避免需要一个单独的设备驱动器。一定的设备可以在它们自身之间通信。
如以下要说明的,有3种通信形式从设备4064上行到运行时间引擎通过变量、缓冲器和传送到一组事件队列的事件。
接收机/解码器13的每一种功能作为接收机/解码器13的软件体系中的一个设备4062来表示。设备可以是本地的或远程的。本地设备包括智能卡,SCART连接器信号,调制解调器,串行和并行接口,MPEG视频和音频播放器和MPEG部分和桌面提取器。远程设备4066在一个远程位置执行,与本地设备的不同之处在于,端口和程序必须由系统权威或设计者定义,而不是用由接收机/解码器的生产者提供和设计的设备和设备驱动器定义。
运行时间引擎4008在微处理器和一个公共应用程序编程接口的控制下运行。它们安装在每一台接收机/解码器13中,以便所有的接收机/解码器13从应用程序的观点来看都是一样的。
引擎4008在接收机/解码器13上运行应用程序4056。它执行交互应用程序4056,从接收机/解码器13外部接收事件,显示图形和文字,调用设备服务和使用为特定计算而连接到引擎4008上的程序库4006的功能。
运行时间引擎4008是安装在每一接收机/解码器13上的可执行代码,包括一个解释程序来解释和运行应用程序。引擎4008能适用于任何操作系统,包括单任务操作系统(比如MS-DOS)。引擎4008基于处理定序器单元(它采取各种事件,比如按键,来执行各种动作),包括它本身的调度程序来管理从不同的硬件接口传来的事件队列。它还处理图形和文本的显示。一个处理定序器单元包括一系列动作组。每一事件引起处理定序器单元根据该事件的特征从它当前的动作组移动到另一个动作组,和执行新动作组的动作。
引擎4008包括一个代码加载程序来加载和下载应用程序4056到接收机/解码器的存储器中。为了保证最佳的使用,只有必要的代码才加载到随机存取存储器或闪存储器中。下载的数据用验证机构验证,以防止一个应用程序4056的任何修改或者执行任何未授权的应用程序。引擎4008进一步包括一个解压缩器。因为应用程序代码(一种中间代码形式)为了节省空间和加快从MPEG流或经过一个内置的接收机/解码器方式下载而被压缩,因此代码必须在加载到随机存取存储器中之前被解压缩。引擎4008还包括一个解释程序来解释应用程序代码,以更新各种变量值和确定状态的改变,以及一个错误检验器。
在使用任何设备4026的服务之前,一个程序(比如一个应用程序指令序列)必须作为“客户程序”被申明,也就是说,到设备4062或设备管理器4068的一个逻辑访问通路。管理器给客户程序一个客户程序号,它在该设备的所有访问中都被引用。设备4062可以有几个客户程序,对每个设备4062的客户程序号依靠设备4062的类型来确定。一个客户程序由一个过程“设备打开频道”引入到设备4062。这一过程给客户程序分配一个程序号。一个客户程序可以通过过程“设备关闭频道”从设备管理器4068客户程序表中取出。
对由设备管理器4068提供的设备4062的访问可以是同步的或异步的。对同步访问,使用过程“设备调用”。这是一种访问立即可用的数据或不引起等候希望的响应的功能的手段。对异步访问,使用过程“设备输入/输出”。这是一种访问引起等待响应的数据的手段,例如扫描调谐器频率以找到一个多路复用器或从MPEG流获得返回的表。当要求的结果可用时,一个事件就输入到引擎的队列中表示它到达。一个进一步的过程“设备事件”提供管理不可预料的事件的一种方法。
运行时间引擎的主回路连接到各种处理定序器单元,并当该主回路碰到适当的事件时控制临时转移到一个处理定序器单元。
如上所述,提供写作工具4004以允许设计、建立、测试和诊断应用程序。写作工具运行在工作站(WS)上,诸如运行在Windows NT,Windows95或Windows98上的个人计算机(PC),或UNIX机器,或运行任何其它操作系统的工作站,并用于建立和编辑形成该应用程序的资源文件和数据文件。参考图5,工作站200包括屏幕210、计算机212、键盘214和鼠标216。计算机212包括处理器218、存储器220、硬盘222、输入/输出(I/O)端口224、以及其它在这种计算机中常规的硬件和软件。
图6表示出运行在工作站200上的一个写作工具4004的概述。写作工具4004包括一个编辑器410,用于建立和编辑形成应用程序的各种文件,程序库412,用于存储由编辑器410使用的现有文件,编译器414,用于编译由编辑器410产生的文件为可以由虚拟机例如图4所示虚拟机4007理解的中间语言,和模拟器100,用于模拟接收机/解码器的行为以便测试和诊断应用程序,其在下面说明。
应用程序包含资源文件,资源文件包含为一个虚拟机用中间语言写的指令,和可选的数据文件,数据文件包含要由该应用程序使用的数据。一个应用程序可以包括下述类型的资源文件中的一个或多个●模块文件-定义应用程序的入口点●面板文件-定义屏幕●类文件-定义由应用程序使用的数据结构●脚本文件-定义应用程序的行为●数据文件的例子如下●图标库文件-这些包含每象素4位的位图的集合直到最大尺寸80×64象素。这些图标可以由面板作为按钮或作为装饰使用。
●图像-这些文件包含任何尺寸的单一位图,每象素4位,给出16种颜色。这一类型的图像通常用作面板的背景。
●颜色表-这些用来定义可以在屏幕上显示模块的颜色。
●用户数据文件-这些文件由用户为由应用程序使用而定义。它们是ASCII文本文件或二进制文件。
在使用中,应用程序开发者使用存储在程序库412中的现有文件和使用编辑器410来产生为他的应用程序定制的文件。正被编辑的文件在工作站屏幕210上显示并使用键盘214和鼠标216输入改变。可以以各种方式显示文件,例如,图形文件可以作为图形在屏幕上显示,而对资源文件,可以显示文件中的代码,或可以显示代码的总结构或结构。
一旦已经建立一个应用程序,则使用编译器414将其转变为可由虚拟机理解的中间语言。
为测试应用程序,提供带有模拟器100的工作站,模拟器100模拟接收机/解码器的行为,以便可以在工作站200上测试该应用程序而不需被下载到实际的接收机/解码器。这允许应用程序被立即测试,并避免需要提供接收机/解码器和相关硬件。
参考图7,模拟器100的主模块是模拟的虚拟机101,模拟的设备管理器102,模拟的WS设备模块104、106,模拟的非WS设备模块108、110,模拟的图形库112,模拟的跟踪端口114(其用于输出跟踪消息,其可以用于例如诊断),模拟的遥控模块116(其模拟工作站屏幕上的遥控单元),模拟的TV窗口118(它通过在工作站屏幕上显示图像模拟电视),模拟的跟踪观看者120(它也在工作站屏幕上显示跟踪消息),WS资源122(它们是属于工作站的硬件,它们也在数字解码器中找到),和模拟文件124、126(它们包含模拟未在工作站中找到的硬件的行为)。应用程序脚本128是希望测试的应用程序代码。
模拟的虚拟机101加载并运行应用程序代码128。它变换应用程序中间语言的指令为可以由模拟的设备管理器102和/或WS理解的本地指令。
模拟的设备管理器102保证为应用程序对不同外设的一致的访问方式。它为应用程序提供向或从各种模拟的外设同步和异步传输和接收数据的方法。设备管理器102以提供给虚拟机101的程序库的形式实现。它包含接口模块,存储器控制模块,和系统模块,该系统模块允许(例如在进程间)为给设备发送命令和数据通信,和为同步接收由一个设备发送的数据通信。
设备模块104-110模拟接收机/解码器中的设备的行为。在WS设备模块104、106的场合,由该设备管理的硬件在实际接收机/解码器中和在工作站中都存在。这种设备的例子是时钟、串行端口、并行端口、调制解调器等。因为硬件在工作站上存在,因此可以使用实际的工作站硬件而不是模拟一件硬件的行为。不访问任何硬件的设备也归于这一类。非WS设备108、110模拟不在工作站上存在的硬件的设备。这种设备的例子是调谐器、多路分配器(demux)、智能卡读卡机,闪存储器等。因为相应的硬件在工作站上不存在,因此还必须模拟这些硬件的行为。实现该模拟的方式依赖于设备的行为;一般说,使用在特定文件例如模拟文件124、126中存储的数据实现。
现在参考一个UNIX工作站说明特定的模拟例子,虽然可以理解,可以使用其它类型的环境,诸如Windows NT,Windows95,Windows98,Windows2000,Solaris,LINUX,BeOS,NextStep等。
参考图8,模拟的设备管理器102包括设备管理器模块150,它提供与形式为程序库的模拟的虚拟机的接口,存储器控制模块152,它控制动态存储器资源,和进程间通信(IPC)模块154,用于给设备传输命令和数据并同步接收由一个设备发射的数据。为这些数据交换必需的存储器空间的本地化由分区的存储器156提供,其由模拟的设备管理器102配置到特别的区域。存储器的一部分可以由设备管理器102为动态分配和释放存储器空间配置。
分区存储器156的作用是表示一个数字解码器的实际存储器空间以及允许在UNIX环境中的进程之间交换信息。存储器被分为4个主要区域●由设备管理器为控制存储器使用的GMP(分区的存储器控制)区域158●由模拟器产生的公共区域160●独立于设备管理器动态产生的虚拟机管理的区域162●也是由虚拟机产生的其内分配专用分区的静态区域158存储器分成缓冲器,缓冲器的分配、释放和封锁在模拟器的控制下。
参考图8,说明模拟器操作的第一个例子。建立运行VM线程170、设备管理器模块150、存储器控制模块和进程间通信模块154的主线程。与模拟的设备180、182、184的对话通过UNIX套接字186和188以非连接方式发生。如上面所指出,与设备同步交换数据通过使用“设备调用”过程发生,而异步交换通过使用“设备I/O”过程发生。当调用“设备调用”或“设备I/O”过程时,虚拟机101给模拟的设备管理器102发送在分区的存储器156为交换数据分配的数据缓冲器的地址。设备管理器102接管该地址的控制;如果它在该分区的存储器之外,则设备管理器在分区的存储器内分配一个空间并复制必要的数据到这一空间。然后设备管理器在事件队列中放入命令消息,以便给适当的模拟的设备传送。
模拟的设备180、182、184在完全独立于模拟的虚拟机100的进程中运行。一个设备进程在第一次打开该设备时开始,在关闭最后的客户程序时结束。虚拟机给一个设备传送数据或者通过使用该设备的专用存储器空间或者通过分区的存储器。设备可以给虚拟机传送数据只能通过由设备管理器分配的存储器。所有接收到的命令消息,或设备对它的响应,以及异步事件,使用两个套接字。套接字186专用于与虚拟机的同步通信,而套接字188专用于设备的异步响应。
模拟的设备180、182、184包括过程库,它允许这些设备被考虑为一个命令组,每一个与一个过程相关。设备解码接收到的命令消息并调用相关的过程。这些过程要么访问工作站中等同于在实际DSTB中的硬件的硬件,或者包含模拟一个实际的DSTB的操作的数据的模拟文件。来自硬件的响应,或在一个模拟文件中的数据,然后通过分区的存储器回送到虚拟机。
为模拟异步接收从一个设备来的事件,在主线程中建立一个异步接收线程(线程IO)172。该线程的作用是接收已经由各种模拟的设备响应一个命令发送的事件和数据。接收到的事件以其到达顺序保存在一个表中,然后在由虚拟机提供的过程的控制下发送到虚拟机101。
图9原理表示模拟器的软件布局。虚拟机101与设备管理器102交互反应。从设备管理器102向各种设备190-197的命令传输通过过程“设备调用”301、“设备I/O”302和“设备事件”306、套接字传输协议304、通信管理器305、多客户管理器306和调度设备命令管理器307发生。存储器池管理器310管理共享的存储器312和在共享的存储器中为配置资源313、客户资源314、设备资源315、FIFO(先进先出)资源316和公共/专用分配器317分配空间。如上所述,共享的存储器允许数据在主线程和设备之间传输。事件管理器320处理来自设备190-197的异步事件。
在另一个优选的实施例中,设备模拟器在Windows NT环境中操作。在这一实施例中,设备作为动态连接库实现,而不是像在上述UNIX实施例中作为单独的程序实现。在NT环境中,没有IPC模块。在两个实现中,一个命令管理器负责从应用程序向模拟的设备传输事件,一个事件管理器负责从模拟的设备向应用程序传输事件。
参考图10,现在提供模拟器操作的第二个例子。该操作在某种方式类似于第一个例子,然而,与第一例子比较的不同在于虚拟机450和模拟的设备451和452在一个单一进程453中运行。单进程453可以例如是UNIX进程。在单进程453内,建立一个系统线程454,它运行虚拟机线程450连同模拟的设备管理器455和模拟的配置模块456。
与模拟的设备451(设备X)的对话在虚拟机450中通过在458调用包含在一个第一程序库459中的设备X功能启动。设备X功能在460为线程457产生模拟设备X451的请求。以相似方式,与模拟的设备452(设备Y)的对话通过在461调用包含在一个第二程序库462中的设备Y功能启动。设备Y功能在463为线程464产生模拟设备Y452的请求。
设备功能的调用在虚拟机线程内可以例如如下实现<pre listing-type="program-listing"><![CDATA[Thread_vm} ...   Device_Call0   Get address of Function F of Device D   Call the Function F   Function F0   Run function code   End of function F   End of Device_Call   ...   }]]></pre>设备451和452的模拟产生为虚拟机450的事件,其在465和466中传输给事件管理器467。
事件管理器467是一个模块,它允许●虚拟机在系统线程454内接收由设备产生的事件,
●设备线程457和464为虚拟机450发射事件,●模拟管理在一个表中保存的事件的删除。
等待由虚拟机450接入线程的事件在一个链接表中管理,也就是说,在该表中的每一事件包括一个指向下一事件的指针。该表的开始由一个预先定义的指针标识。
然后在468把事件递交给虚拟机450。取决于配置,这或者可以通过事件管理器467中断虚拟机450并登记这些事件实现,或者通过虚拟机自身在事件管理器467内获得事件实现。
设备X和Y功能包含在库459和462中,它们对所关心的设备分别是特定的。功能的调用借助一个功能表进行。
设备的模拟可以按照特定设备的需要定制。例如可以请求多个线程模拟一个特定的设备。在大多数场合,使用一个线程模拟一个设备,该线程作为一个背景任务处理从其它模拟的功能接收到的请求。
为说明模拟器100的操作,图11表示在一个实际的DSTB中怎样可以产生一个为在电视屏幕上显示的图像的例子。该图像分为5层背景层350,视频层352,静止图像层354,图形层356,和指针层358。指针层加在图形层上,后者加在静止层上,等等。为允许观看者看见所有层的混合,而不只是顶层,为每一层设计一个透明因子。当透明因子是0时该层是不透明的,当透明因子是1时该层是透明的。在大多数场合,为在该层内的每一象素分配一个透明因子,例外是背景层(因为它后面没有层),视频层,对于它们,透明因子对播放视频的区域是共用的(该层的其余部分是透明的),和指针层,对它指针是不透明的,该层的其它部分是透明的。
指针、图形和背景层由应用程序360产生,而视频和静止图像层从传输的数字信号通过MPEG解码器362来。各层在混合器364中混合,混合器364是图3中的图形处理器的一部分。混合器由硬件芯片组成,硬件芯片执行这5层的混合。在任何时间,应用程序可以改变为每一层的透明因子(当允许时)。为进行这一点,对于视频层,应用程序调用一个视频设备命令,对于静止图像层,应用程序调用一个图像设备命令,对于图形层,应用程序调用图形库功能。混合的图像在用户的电视机366上显示。
为模拟图11所示情形,用工作站上的软件模拟代替应用程序与之反应的各种设备和相关硬件。这样,类似地,提供一个混合各图像层的软件混合器。这样混合的图像然后在工作站的屏幕上显示,而不是单独的电视屏幕。以这种方式,应用程序设计者可以测试他的应用程序的操作而不需下载该应用程序到DSTB。
在模拟器100中,上述混合的功能使用一个称为LAYERS库的低级库实现。为模拟各层的混合,不是直接在屏幕上写,而是每一模块调用LAYERS库。修改屏幕内容的每一模块计算要改变的区域的位置、尺寸、内容和透明因子,把这些信息提供给LAYERS库。LAYERS库管理分别为背景、视频、静止图像、和图形层的4个存储器块。每次在修改一层中的一个区域时,LAYERS库计算产生的屏幕区域,考虑其它层的内容和它们的透明因子。当显示视频序列时,这一工作为每一新图像重复(每秒的图像数取决于播放的文件)。用以混合层区域的算法于是尽可能优化,以便得到流畅的视频播放。
每一层借助一个象素图管理,在该象素图中给每一象素分配一组值。在一个例子中,对于静止图像和图形层,给每一象素分配32位给每一颜色红、绿和兰各分配8位,给透明级分配6位,保留2位,而对背景层,使用24位。取决于要模拟的TV标准,这为PAL标准给出720×576×4=1,658,880字节,对NTSC标准给出720×480×4=1,382,400字节。
因为指针层是顶层,并且对指针未应用透明因子,因此不需给指针层应用任何混合。指针形状可以由系统标准机构管理。
在模拟中,不是使用实际的MPEG解码器,而是提供一些包含一个实际MPEG解码器的输出类型的数据的文件。这些文件可以通过存储来自一个实际MPEG解码器的数据产生,或者通过使用模拟文件产生。模拟文件是这样的文件,它们已经产生并具有一定的特征,诸如子标题。
图12表示在一个模拟的接收器/解码器上运行的应用程序怎样在工作站屏幕上出现的例子。在所示例子中,应用程序运行一个视频设备的测试。使用工作站屏幕上的TV窗口以它在一个实际电视屏幕上出现的同样方式来显示该应用程序的输出。在图12中,该TV窗口收缩到总工作站屏幕的0.75%。
在模拟器上运行的一个应用程序的另一个例子示于图13。该例表示一个视频层,带有图形层,包括一个加在视频层上的足球员的图像。图形层具有一些透明的象素,使得通过足球员的头看见视频层。
在Windows NT和UNIX工作站上给出另外的实现特定设备模拟的例子。
WS设备串行串行设备允许应用程序与任何种类的设备通过一个串行链路通信(例如使用RS232标准)。这一设备使用UNIX/NT系统的标准的API模拟。它允许通过工作站的串行端口通信。
并行并行设备允许应用程序通过一个并行链路通信(例如使用IEEE1284标准)。这一设备使用UNIX/NT系统的标准的API模拟。它允许通过工作站的并行端口通信。
BUS_1394这一设备允许应用程序与任何种类的设备通过高性能串行总线使用IEC1883标准通信。该设备使用一个对1 394总线提供访问的扩展板模拟。
UNIMODEM这一设备允许应用程序控制一个内部的或外部的调制解调器(例如使用HAYES标准)。这一设备使用UNIX/NT系统的标准API实现。它允许通过工作站的一个实际串行端口控制一个外部的调制解调器或通过一个虚拟的串行端口(如果系统允许的话)控制一个内部的调制解调器。
网络这一设备允许应用程序配置和使用网络堆栈。支持几种协议TCP,UDP,IP,PPP,等。一旦配置该堆栈,则该设备给应用程序提供一个类BSD的套接字接口,允许它打开TCP连接,发送和接收UDP数据电报,连接多址通信组,等等。
该设备可以分成两部分配置部分和通信部分。配置部分不能在UNIX/NT系统中实现,因为配置只能在系统起动时间发生。这样,这一部分只是模拟。当前,对配置命令的NETWORK设备响应是硬编码的,但是它们以后可以在“配置”文件中编码。通信部分使用UNIX/NT系统的API标准实现。它允许与使用BSD套接字的其它设备通信。
时钟该设备允许应用程序访问一个实时时钟。应用程序可以获得和设定日期和时间信息和编程唤醒警报。该设备使用UNIX/NT系统的标准API实现。
键盘这一设备允许应用程序配置KEYBOARD设备(如果可用的话)和接收键盘和遥控事件。该设备使用UNIX/NT系统的标准API实现。遥控设备使用遥控软件模块模拟,该模块给KEYBOARD设备发送系统消息。虽然它们可能不以同样的方式通信(对机顶盒用红外线,对工作站用电缆),但是解码器和工作站的KEYBOARD设备是相似的。
指针这一设备允许应用程序配置指针(鼠标)设备(如果可用的话)和接收指针事件(鼠标移动,按钮按压等)。该设备使用X-Windows/Windows系统的标准API实现。POINTER设备定义屏幕上指针可以采取不同形状的区域。这些区域属于指针屏幕层。
图形这一设备允许应用程序解压缩来自不同格式的图像,诸如JPEG,MPEG,GIF和PNG。应用程序在一组存储器缓冲器中提供压缩的图像,该设备在另一组缓冲器中返回解压缩的图像。这些图像可以是固定的或动画的。一般说,图像缓冲器来自由MLOAD设备加载的DVB部分。该设备不访问硬件。它不需要系统API。
为显示用该设备解压缩的图像,应用程序使用GRAPHICS库功能。该程序库只修改图形屏幕层的内容。
非WS设备图像这一设备提供和图形设备同样的解压缩服务。然而,为显示用该设备解压缩的图像,应用程序使用图像设备自身。该设备修改背景和MPEG屏幕层的内容。
音频这一设备允许应用程序编程机顶盒的音频芯片。该设备能够播放音频流和改变音频参数(序曲,立体声等)。该设备使用UNIX/Windows系统的标准API实现。仅当目标系统允许时才可以改变系统音频参数。
视频这一设备允许应用程序编程MPEG解压缩芯片。该设备能够改变视频图像位置、尺寸、缩放,等等。因为MPEG芯片在UNIX/NT工作站中用SERVICE设备模拟,因此,只有VIDEO设备的任务通知给SERVICE设备新的视频图像参考。
服务这一设备通过指定它的PID(程序标识)例如视频,音频,子标题或智能用户电报PID允许应用程序选择一个给定的DVB服务(例如,TV频道)。然后该设备指导每一PID数据流到正确的硬件芯片以便被处理(解压缩)和播放。
服务设备在UNIX/NT工作站中如下模拟。当选择一个服务时,该设备除视频PID外忽略所有服务PID。它使用这一后面的PID作为对一个预先配置的存储有磁盘文件名的表的入口。这些文件包含从给定多媒体格式来的数据。该服务要么自身读取和播放这些数据,或者使用系统标准API执行该项任务。SERVICE设备使用由VIDEO设备提供的信息以决定显示的图像的尺寸、位置和缩放参数。
该设备修改视频屏幕层的内容。视频图像(内容,位置,和尺寸)一个一个计算并在视频屏幕层内显示每一结果图像。
显示器这一设备允许应用程序使用终端前的显示器。应用程序可以请求显示当前时间或任何专用消息。在UNIX/NT系统中,这一设备模拟使用TV窗口的状态行显示请求的消息。
SCTV,SCVCR,SCAUX这些设备允许应用程序分别检查和配置电视机、VCR和辅助设备的SCART出口。对SCTV,SCVCR和SCAUX命令的响应可以是硬编码的,或者它们可以在“配置”文件中编码。
电源使用该设备把机顶盒置于备用方式和检索电源打开的信息。该设备模拟允许应用程序停止所有设备和从UNIX/NT进程中跳出。
备份这一设备允许应用程序对EEPROM和闪存储器读或写。使用这些硬件在非易失存储器中存储信息。
在UNIX/Windows系统中,使用映射到磁盘文件的RAM(易失)存储器块模拟EEPROM和闪存储器。这给应用程序提供模拟EEPROM和闪存储器的稳定的存储器。在电源故障时,应用程序检索存储在磁盘文件中存储的数据,好像它们在稳定存储器中存储的一样。
MLOAD使用这一设备从传输的数据流下载DVB部分。应用程序提供包含要加载部分的PID(程序ID)和过滤以减少加载的部分的数目为只对应用程序感兴趣的部分。
在模拟环境中,在一个预配置表中给每一PID分配一个磁盘文件。当应用程序开始从一个给定的PID加载的部分时,该设备打开相关的磁盘文件,并周期地读取它。每次从该文件中加载一部分时,该设备对它应用过滤准则。如果该部分通过过滤,则把它传输给应用程序。
从应用程序的观点来看,该设备的行为好像这些部分从广播的位流中加载一样。
调谐器使用调谐器设备来请求关于机顶盒调谐器的信息,读调谐器状态(AGC,BER等)和设定和获得调谐参数。该设备还允许频率扫描操作。
在模拟环境中,这一设备从一个说明一个虚拟天线的文件中取它的数据。可以用虚拟天线检测到的每一频率都以其特征(速率符号,卷积码,AGC,BER等)登记在这一文件中。
对于每一频率,MLOAD设备的模拟文件的目录(PID数据)也被登记。这样,如果应用程序调谐到一个不同的频率,则像在实际情况中一样该组可加载的PID改变。
RCARD使用这一设备与右智能卡读卡机(如果可用的话)通信。该设备一般用于银行卡。为安全起见和因为银行卡代码和数据是受保护的,因此不模拟这一设备。
LCARD使用这一设备与左智能卡读卡机(如果可用的话)通信。该设备用于条件访问系统智能卡。为安全起见和因为CA卡代码和数据是受保护的,因此不模拟这一设备。
CA(条件访问)
这一设备允许应用程序获得关于条件访问系统的信息并控制它。为安全起见和因为CA机构是受保护的,因此不模拟这一设备。
应该理解,上面对本发明的说明纯粹仅是举例,可以在本发明的范围内对细节进行修改。
在说明书中公开的每一特征,和(只要合适的话)权利要求和附图可以独立地或以任何适当的组合提供。
权利要求中出现的参考号码仅为说明使用,对权利要求的范围无限制效果。
权利要求
1.一种为接收机/解码器测试应用程序的装置,包括为模拟接收机/解码器的功能的设备。
2.根据权利要求1的装置,其中,所述装置适用于运行应用程序。
3.根据权利要求1或2的装置,其中,所述装置适用于在第一进程中运行应用程序,和在第二进程中模拟接收机/解码器的功能。4.根据权利要求3的装置,其中,第一和第二进程彼此独立。
5.根据权利要求3或4的装置,其中,第一和第二进程运行在同一处理器上。
6.根据权利要求3到5中任何一个的装置,另外包括一个分区的存储器,用于允许在第一进程和第二进程之间传送数据。
7.根据权利要求1或2的装置,其中,所述装置适用于在第一线程中运行应用程序,在第二线程中模拟接收机/解码器的功能。
8.根据权利要求7的装置,其中,第一和第二线程形成一个单一进程的几部分。
9.根据权利要求7或8的装置,另外包括一个分区的存储器,用于允许在第一和第二线程之间传送数据。
10.根据前述权利要求中任何一个的装置,其中,接收机/解码器的功能至少部分用软件模拟。
11.根据前述权利要求中任何一个的装置,其中,接收机/解码器的功能使用硬件模拟,这些硬件相应于接收机/解码器中的硬件。
12.根据前述权利要求中任何一个的装置,包括存储设备,用于存储包含表示由在接收机/解码器中的一项硬件产生的数据的文件。
13.根据前述权利要求中任何一个的装置,其中,所述装置适用于产生一个为在屏幕上显示的输出,该输出模拟接收机/解码器的输出。
14.根据前述权利要求中任何一个的装置,其中,所述装置适用于接收表示应该由接收机/解码器接收的数据的输入数据。
15.根据前述权利要求中任何一个的装置,其中,所述装置适用于产生一个为在屏幕上显示的输出,该输出表示一个接收机/解码器可以与之反应的硬件。
16.一种用于编辑和测试一个应用程序的装置,包括一个用于编辑该应用程序的编辑器,和根据前述权利要求中任何一个权利要求用于测试该应用程序的装置。
17.根据权利要求16的装置,其中,编辑器适用于产生一个为在屏幕上显示的输出,和用于模拟接收机/解码器的功能的设备适用于产生一个为在同一屏幕上显示的输出。
18.根据权利要求16或17的装置,包括一个处理器,用于运行编辑器和用于模拟接收机/解码器的功能的设备两者。
19.根据权利要求16到18中任何一个的装置,其中,用于模拟接收机/解码器的功能的设备适用于运行已经由编辑器编辑的应用程序。
20.根据前述权利要求中任何一个的装置,其中,接收机/解码器的功能至少是下述功能之一,例如从遥控器、键盘或诸如调制解调器的通信设备接收和处理输入数据,解码视频数据,产生视频输出,调谐到广播信号,与智能卡通信,优选至少是下述设备的一个功能遥控器,串口,并口,总线1394,调制解调器,网络,堆栈,时钟,键盘,指针,图形设备,图像设备,音频设备,视频设备,服务设备,显示器,SCTV,SCVCR,SCAUX,电源,备份设备,MLOAD,调谐器,和智能卡。
21.一种工作站,包括一个用于编辑应用程序的编辑器,一个用于模拟接收机/解码器的功能的模拟器,和一个用于显示编辑器的输出和模拟器的输出的显示器。
22.根据权利要求21的工作站,其中,模拟器适用于运行已经由编辑器编辑的应用程序。
23.根据权利要求21或22的工作站,其中,模拟器的输出在显示器的一个窗口内显示。
24.根据权利要求21到23中任何一个的工作站,其中,在显示器的一个窗口中模拟为给应用程序输入数据的输入设备。
25.一种为接收机/解码器测试应用程序的方法,包括模拟该接收机/解码器的功能。
26.一种编辑和测试应用程序的方法,包括编辑应用程序和另外包括根据权利要求25测试应用程序的方法。
27.一种计算机可读介质,其上存储有为执行权利要求25或26的方法的程序。
28.一种计算机可读介质,其上存储有为执行为接收机/解码器测试应用程序的方法的程序,该方法包括模拟接收机/解码器的功能。
29.一种计算机程序产品,包括为执行权利要求25或26的方法的程序。
30.一种计算机程序产品,包括为执行为接收机/解码器测试应用程序的方法的程序,该方法另外包括模拟接收机/解码器的功能。
31.一种为接收机/解码器测试应用程序的方法,基本如这里参考

并由附图所表示。
32.为接收机/解码器测试应用程序的装置,基本如这里参考

并由附图所表示。
全文摘要
公开了一种为接收机/解码器例如电视系统测试应用程序的装置,该装置包括用于模拟接收机/解码器的功能的设备。还公开了为编辑和测试应用程序的装置和一个相关的工作站。还公开了一种测试应用程序的方法,用该方法模拟接收机/解码器的功能。
文档编号G06F11/28GK1373970SQ00812575
公开日2002年10月9日 申请日期2000年6月12日 优先权日1999年7月9日
发明者H·廖, B·马森, J·B·G·M·伯奎 申请人:卡纳尔股份有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1