CN113253993A - 一种实现命令序列和事件管理的CFlex脚本语言的使用方法 - Google Patents

一种实现命令序列和事件管理的CFlex脚本语言的使用方法 Download PDF

Info

Publication number
CN113253993A
CN113253993A CN202110323793.0A CN202110323793A CN113253993A CN 113253993 A CN113253993 A CN 113253993A CN 202110323793 A CN202110323793 A CN 202110323793A CN 113253993 A CN113253993 A CN 113253993A
Authority
CN
China
Prior art keywords
cflex
event
language
target device
block
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.)
Granted
Application number
CN202110323793.0A
Other languages
English (en)
Other versions
CN113253993B (zh
Inventor
布拉欣·拉明
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Newcast Electronics Shanghai Co ltd
Original Assignee
Newcast Electronics Shanghai Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Newcast Electronics Shanghai Co ltd filed Critical Newcast Electronics Shanghai Co ltd
Priority to CN202110323793.0A priority Critical patent/CN113253993B/zh
Publication of CN113253993A publication Critical patent/CN113253993A/zh
Application granted granted Critical
Publication of CN113253993B publication Critical patent/CN113253993B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/40Transformation of program code
    • G06F8/41Compilation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/54Interprogram communication
    • G06F9/542Event management; Broadcasting; Multicasting; Notifications

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Multimedia (AREA)
  • Stored Programmes (AREA)

Abstract

本发明公开了一种实现命令序列和事件管理的CFlex脚本语言的使用方法,包括系统实施、CFlex基础设施、目标设备、CFlex脚本语言、目标程序设计语言、环境系统、序列块、事件块、运行时监控和测试框架、驱动程序、实时调度程序、软件工具,本发明结合命令序列和事件驱动算法可以降低软件复杂度。

Description

一种实现命令序列和事件管理的CFlex脚本语言的使用方法
技术领域
本发明涉及软件领域,具体为一种实现命令序列和事件管理的CFlex脚本语言的使用方法。
背景技术
传统的编译语言与脚本是通用的,因此无法针对特定目的,例如更加易于执行实时命令序列或降低算法复杂度。常用的程序或命令语言(如Java, C/C++, Python…)允许任何执行,但需依赖于支持方法(UML, SysML,…)或附加的组织工作流程或专用库才能获得高质量和代码有效率。因此,传统的编程语言不重视提供一个简化解决方案来达到高效编码。
有一些专门的语言注重于简化的需求,我们可以引用领域专用语言(DSL)如Labview, CAPL, Matlab/Simulink。这些领域专用语言专用于特殊用途(例如测试或数学算法)或来自于制造商的一套特殊工具。Labview和Simulink是已在多钟情况下中成功使用的通用工具。我们的解决方案接近于这两种语言,但Labview和Simulink没有层次结构,及时复杂的设计可以通过图形语言简化,但算法复杂度仍然存在,所以还是会产生一些问题。例如上述语言/工具的使用者。
通常,软件脚本语言的目标是便于开发,用于测试、网络或嵌入式系统等特殊目的,并且开发用于减少缺陷。
我们可以将脚本语言分为两类:通用语言如Python、Javascript、Lua、TCL和专用语言。
为了构建相同的系统,现有脚本语言具有与它们的等价编译语言(C/C++、Pascal、java)等价的复杂性。
为了开发效率高、缺陷少的软件,有许多方法可以降低软件的复杂性,并优化执行以实现实时或资源利用。
本专利描述了CFlex脚本语言,它是一种解决方案,可以设计一个比现有脚本语言更简单的系统。该方案基于两个部分的设计:一个简单的命令时间序列,无需任何算法,结合条件处理块,通过构造具有较低的复杂度。
现有的过程语言和脚本语言都是面向函数的:代码是围绕一组函数构造的,这些函数可以在其他函数中调用。
因此功能设计非常重要,但是在运行时软件工程师很少关注系统行为。尤其是忽略异步或并行行为,因为函数设计假设每个函数在被调用时立即执行。
硬件设计如VHDL或使用实时操作系统RTOS的嵌入式系统软件设计都通过管理信号或事件集中在异步和并行执行模块或任务。这种类型设计的复杂性在于它混合了硬件和软件或专门用于实时操作系统。在嵌入式系统设计中,软件工程师必须掌握消息传递的实时设计方法,甚至需要更接近硬件。因此,当设计者使用这些工具进行设计或测试时,传统语言/脚本工具可能会遇到不便。因此,需要一种新的方法来提高编程效率,增强用户体验和设计/验证环境。
为了解决上述问题,提供能实现具有层次结构的复杂系统行为的方法、研发环境和工具。
因此,我们提出一种实现命令序列和事件管理的CFlex脚本语言的使用方法。
发明内容
本发明的目的在于提供一种实现命令序列和事件管理的CFlex脚本语言的使用方法,包括系统实施、CFlex基础设施、目标设备、CFlex脚本语言、目标程序设计语言、环境系统、序列块、事件块、运行时监控和测试框架、驱动程序、实时调度程序、软件工具,所述系统实施根据系统规范文档或需要,设计一个或多个使用CFlex脚本语言的脚本,且每个脚本都是一个扩展名为.nge的文件;所述CFlex基础设施为使用构建或交叉构建系统实现所需的一组工具、库、配置文件和源代码;
所述目标设备是一个硬件系统,它使用在CFlex基础设施的构建步骤之后,实现可执行系统的运行;所述目标设备可以是运行Windows或Linux的PC,在PC操作系统上运行一个独立的应用程序;所述目标设备也可以是板上基于ARM或任何带集成内存的16/32位MCU的系统或是带外部SD-RAM、DDR的MPU系统;
所述CFlex脚本语言是一种标准语言之上的宏语言,是一组用于实现序列块或事件块的指令、循环、条件和宏指令的语言;
所述目标程序设计语言来自CFlex基础设施工具链的编译器,将目标语言转换为机器代码;
所述环境系统是目标设备和CFlex基础设施之外的任何外部设备或系统,所述环境系统可以是一个专用的HMI终端,所述环境系统也可以是被测试的系统,使用在目标设备中,为CFlex系统的指定测试序列进行测试;
所述序列块为一系列命令,带有时间戳和关联的数据结构,以及执行指令,其中数据结构可以是原始字节数组,也可以是使用C类型的符号名,所述序列块能够调度程序执行事件块或重播行中发送的每一行进程指令;
所述事件块由Infrastructure Scheduler作为独立任务进行管理,且事件块是钩子机制和方括号内的语句的关联,所述钩子机制是由驱动程序管理的事件为变量结构的一组或一组变量,其中驱动程序管理的事件可以是由目标设备操作系统生成的软件事件,也可以是中断之类的硬件事件;
所述运行时监控和测试框架被视为SUT的环境系统;所述运行时监控和测试框架与目标设备之间的连接通过通信协议、电源控制或输入/输出信号完成;在系统实现CFlex脚本执行期间,测试执行是实时的;且CFlex还提供了一个完整的框架,用于通过HMI客户端进行监控;
所述驱动程序用于CFlex基础设施,具有与实时调度器兼容的API,能够通过CFlex脚本命令和指令来控制目标设备,所驱动程序可以是输入/输出驱动程序、通信协议驱动程序、内存管理驱动程序或目标设备中的任何其他驱动程序,且所述驱动程序与条件事件和命令序列相耦合,这是由软件工具链生成的代码的结果;
所述实时调度程序能够根据CFlex脚本实现控制目标设备的上述操作;并提供实时指令来同步任务,通过事件传递确保进程间通信,所述实时调度程序还允许CFlex系统基础设施任务的伪并行执行;
所述软件工具是一组用于代码生成和构建工具的可执行程序, CFlex基础设施在编译时启动软件工具的工具链,以生成目标设备可执行的机器语言文件,这些文件符合目标设备硬件及其操作系统。
优选的,所述软件工具的工具链具有描述的工具层次结构。
优选的,CFlex实现进程间通信机制,允许从给定的事件块向另一个事件块发送事件。
优选的所述目标设备是作为独立设备运行系统实现的嵌入式系统,或者是用于运行时监视和测试独立环境系统的测试系统。
优选的,所述事件块由系统、子系统和相关状态标识组成,所述事件块可以通过中继指令控制序列块。
优选的,所述目标设备还提供了一个测试服务器特性。
优选的,所述软件工具的工具链包括预处理器、编译器和链接器。
与现有技术相比,本发明的有益效果是:
本发明结合命令序列和事件驱动算法可以降低软件复杂度。
命令序列可以覆盖许多用例到必须无条件、无分支地完成任务列表的设计。
在定义的条件组合上触发的算法部分有助于避免将多个条件组合在同一个算法中,可优化算法,该算法是用参数调用的函数中实现的。
这种解决方案具有简化代码复杂性的优点,也适用于大型系统设计
CFlex不是面向功能。CFlex是面向事件。CFlex要关注于并行条件处理,比如实时系统。
CFlex引入系统的条件事件模块和无条件命令的时间序列,从而简化了异步系统的设计,且无需考虑实时性。
附图说明
图1为本发明的定义示意图一;
图2为本发明的定义示意图二;
图3为本发明实现命令序列和事件管理的CFlex脚本语言的使用方法不同用例结构图。
图4为本发明重放与事件驱动的关联结构图。
图5为本发明条件事件触发结构图。
图6为本发明并行处理结构图。
图7为本发明模块化系统设计结构图。
图8为本发明用预处理器编译的脚本结构图。
图9为本发明监控和动态运行时测试框架结构图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
如附图1、2所示,一种实现命令序列和事件管理的CFlex脚本语言的使用方法,包括系统实施、CFlex基础设施、目标设备、CFlex脚本语言、目标程序设计语言、环境系统、序列块、事件块、运行时监控和测试框架、驱动程序、实时调度程序、软件工具,所述系统实施根据系统规范文档或需要,设计一个或多个使用CFlex脚本语言的脚本,且每个脚本都是一个扩展名为.nge的文件;所述CFlex基础设施为使用构建或交叉构建系统实现所需的一组工具、库、配置文件和源代码;
所述目标设备是一个硬件系统,它使用在CFlex基础设施的构建步骤之后,实现可执行系统的运行;所述目标设备可以是运行Windows或Linux的PC,因此系统实施在PC操作系统上运行一个独立的应用程序;所述目标设备也可以是板上基于ARM或任何带集成内存的16/32位MCU的系统或是带外部SD-RAM、DDR的MPU系统;
所述CFlex脚本语言是一种标准语言之上的宏语言,是一组用于实现序列块或事件块的指令、循环、条件和宏指令的语言;
所述目标程序设计语言来自CFlex基础设施工具链的编译器,将目标语言转换为机器代码;
所述环境系统是目标设备和CFlex基础设施之外的任何外部设备或系统,所述环境系统可以是一个专用的HMI终端,所述环境系统也可以是被测试的系统,使用在目标设备中,为CFlex系统的指定测试序列进行测试;
所述序列块也称为重播块,它是一系列命令,带有时间戳和关联的数据结构,以及执行指令,其中数据结构可以是原始字节数组,也可以是使用C类型的符号名,所述序列块能够调度程序执行事件块或重播行中发送的每一行进程指令;
所述事件块由Infrastructure Scheduler作为独立任务进行管理,允许从给定的事件块向另一个事件块发送事件,且事件块是钩子机制和方括号内的语句的关联,所述钩子机制是由驱动程序管理的事件为变量结构的一组或一组变量,其中驱动程序管理的事件可以是由目标设备操作系统生成的软件事件,也可以是中断之类的硬件事件;
所述运行时监控和测试框架被视为SUT的环境系统;所述运行时监控和测试框架与目标设备之间的连接通过通信协议、电源控制或输入/输出信号完成;在系统实现CFlex脚本执行期间,测试执行是实时的;且CFlex还提供了一个完整的框架,用于通过HMI客户端进行监控;
所述驱动程序用于CFlex基础设施,具有与实时调度器兼容的API,能够通过CFlex脚本命令和指令来控制目标设备,所驱动程序可以是输入/输出驱动程序、通信协议驱动程序、内存管理驱动程序或目标设备中的任何其他驱动程序,且所述驱动程序与条件事件和命令序列相耦合,这是由软件工具链生成的代码的结果;
所述实时调度程序能够根据CFlex脚本实现控制目标设备的上述操作;并提供实时指令来同步任务,通过事件传递确保进程间通信,所述实时调度程序还允许CFlex系统基础设施任务的伪并行执行;
所述软件工具是一组用于代码生成和构建工具的可执行程序, CFlex基础设施在编译时启动软件工具的工具链,所述软件工具的工具链具有描述的工具层次结构,包括预处理器、编译器和链接器,以生成目标设备可执行的机器语言文件,这些文件符合目标设备硬件及其操作系统。
如附图3所示,图示中在用例1中,为如何使用本发明的不同用例。
在用例1中,目标设备是一个运行CFlex基础设施和系统实现的完整系统。例如,目标设备可以是运行Windows或Linux的PC。目标设备可以链接到环境系统。
在用例2中,目标设备只有在交叉构建系统编译为可执行文件之后才运行系统实现。在这种情况下,目标设备可以是运行Android的移动电话、板上具有MCU/MPU的系统或任何具有CPU和内存的独立设备。交叉构建系统可以是运行Windows或Linux的PC。它也可以运行一个可选的HMI客户端。
在用例3中,HMI客户端是将HMI作为终端运行的独立系统,例如运行Android的移动电话或运行Windows的PC。
“链路A”是目标设备和系统环境之间的双向通信和控制信道。例如,它可以是通信协议(CAN、LIN、USB、以太网等)、电源控制(可变电压源或电流源)或输入/输出信号。
“链接B”包括将可执行文件从构建系统闪存或复制到目标系统。
“Link C”是一个双向链接,允许最终用户通过读取或写入LogVar值、文本显示、数据流解释、记录和过滤数据流来监视和交互CFlex脚本的执行。
本申请涉及软件脚本语言,是一种更为简易的鲁棒系统编译,优化软件开发、相关设备及相关计算机程序产品
本发明实施例还提供了一种硬件设备,用于在通信系统上运行脚本,并使其通过消息CAN网络、LIN网络、串行RS232以及通过输入/输出数字和模拟信号与环境交互。该硬件设备是基于16位MCU的,这表明我们的解决方案能够适应任何资源小或大的系统。
本发明实施在通信系统上进一步提供一个硬件运行脚本,并使其通过信息CAN网络、LIN网络、串行RS232以及通过输入/输出数字和模拟信号与其环境交互。该硬件是基于一个能表明我们的解决方案能适应任何大或小资源系统的16位的MCU。考虑到这个目标系统,CFlex脚本实施是基于Replay模块实施复杂行为在CAN网络、LIN网络、RS232链路上定期或不定期地向触发定时器发送多帧,或者与接收到的输入/输出信号和接收到的帧进行交互。为了获得可执行的二进制文件,将详细介绍GCC工具链的使用方法。
本发明的方法、语言和设备可以提高用户体验和优化开发/验证的环境。
系统CFlex实施可包含前述子系统的一部分,更具体地,至少要有一个状态图来描述其部分或全部行为。在另一个例子中系统CFlex实施可以是整个上述所需的系统。在另一个例子中,系统CFlex实施可以是一个纯软件系统,如客户端/服务器应用程序、中间件、数据库系统。这种情况下,系统CFlex基础设施可以是任何现有的标准机器,移动电话(例如多功能移动电话)、个人数字助理(PDA)、工作站和个人计算机比如笔记本电脑或台式机。该标准机器可以运行的操作系统有Linux、Windows、Android、IOS。系统CFlex基础设施可以是定制的电子设备或任何嵌入式系统。
如附图4所示,图4中方法可用于实现整个系统或其部分行为以及远程系统的动态单元测试,其中目标设备由于在CFlex中的系统实现而成为测试处理设备。
拆分为子系统:分析系统规范以细化为并行的独立组件,这些组件作为将在目标设备内运行的系统实现的系统子级实现,
定义子系统状态图:使用状态图语言(状态/转换)分别定义每个子系统行为
识别重放块为根据本实施例,CFlex脚本语言允许简单的命令序列实现,可以定义一个或多个REPLAY块,将从事件组驱动每个组启动、暂停。
识别事件:通过分析目标设备环境,设计者可以识别所需的事件
事件条件:要触发事件块,除了标识适当的事件外,还可以将一组多个条件关联到事件块定义,只有当从驱动程序接收到事件并且布尔事件条件集为真时,该定义才会激活。
更简单算法体:在定义了非算法命令的命令序列块REPLAY块后,事件块内的算法变得更简单,算法复杂度更低,因为它只与给定的子系统、给定的状态、给定的事件和给定的一组条件相关。
图5显示了生成的CFlexInfrastrutre的序列图,其中包括基础设施驱动程序、计时器驱动程序和实现系统实现脚本的用户脚本任务,CFlex语言允许为每个事件块定义一组触发条件作为参数。这使得算法复杂度降低成为可能,因为在事件块中,我们允许用户避免“如果”和其他条件。
与定时器不同的驱动器情况:
CFlex基础设施将在构建期间生成一个“if”条件,以便在收到系统事件后向脚本任务发送事件。
匹配条件为a,条件1到条件N的操作:
匹配条件=(条件1)和(条件2)…和(条件N)
定时器驱动程序的情况:
定时器触发允许实现一个时间序列,该时间序列在每个StartTimer只能播放一次,或者可以定期播放。
如果Tn>0,则在播放从T1到Tn的所有序列时重新触发时间ris。要停止计时器,需要停止计时器。
如果Tn=0,则在播放所有序列时计时器停止。要在T1处重试,需要一个“启动计时器”命令
图6是CFlex脚本系统实现的并行执行的序列图,CFlex脚本语言的这一特性允许健壮的系统实现和降低算法复杂性,事实上,事件块和重放块被视为并行运行的独立子系统。生成的CFlex基础设施和RTOS的使用使得CFlex块的任务实现成为可能。
调度器角色是将事件分派到事件块,并执行CFlex脚本中定义的重播块步骤。CFlex块的执行是伪并行的,因为调度器可以在某些情况下抢占一个块,例如,在图5中,重播块1和重播块2在调度器创建的Init事件(1)上启动。在重播块1和重播块2的并行执行期间,调度器向事件块1队列添加了一个事件,它将立即触发事件块1的执行,而前面提到的重播块正在并行执行。重播块可以通过事件块算法来控制,例如在(3)中事件块1已经开始重播块N,或者在(5)中事件块N停止重播块N的执行。在(4)中,事件块1通过ADD_Event指令向添加了一个事件,ADD_Event指令是进程间通信机制的实现。
NGE-CFlex基础设施基于一个专门的RTOS,该RTOS关注事件,其中消息不是事件本身,消息只是属于事件的信息,或者是许多通过指针访问它的事件之间的共享资源。
这种方法中的任务是执行支持或调度程序。事件定义时间管理模型(周期、延迟、超时…)、处理模型(消息类型、状态更改…)和数据(消息指针或嵌入事件中的完整消息结构)
除了生成的CFLex基础结构代码外,CFLex语言还提供了利用RTOS在EVENT块和REPLAY块之间传递消息的宏。
ADD_EVENT(DESTINATION_BLOCK,MESSAGE):进程间通信机制的基本实现。它提供将MESSAGE(一种预定义的数据结构)发送到任何以其名称DESTINATION_block寻址的EV块,如EVENT块声明中定义的那样。
然后将MESSAGE添加到目标块生成的任务事件队列中。然后,RTOS将使任务处理消息。
如附图7所示,根据本发明的一个实施例的用于描述多个系统的层次结构的方法的流程图,包括对每个系统的子系统组成的描述和每个子系统的状态图。
根据本实施例,CFlex语言为自顶向下的设计方法提供了易于实现系统架构和系统行为的指令。更具体地说,CFlex SYSTEM和SUBSYSTEM指令通过将系统描述拆分为子系统来定义系统体系结构层次结构。和CFlexAT_STATE,NEXT_STATE指令使用状态图形式实现每个子系统行为。CFlex脚本语言基于系统描述或规范文档,可以直接用CFlex脚本语言编写系统实现,更具体地说,CFlex中的系统实现是系统分析的直接图像。
定义子系统和状态特性在编程上等同于为其他语言中的数据和函数定义作用域和名称空间。
例如,图7中提供的系统定义可以实现如下:
SYSTEM(S1)
SUBSYSTEM(SS1)
AT_STATE (SS1_1)
NEXT_STATE(SS1_2)
AT_STATE (SS1_2)
AT_STATE (SS1_3)
ADD_EVENT()
AT_STATE (SS1_4)
SUBSYSTEM(SS2)
AT_STATE (SS2_1)
AT_STATE (SS2_2)
AT_STATE (SS2_3)
所述重放块CFlex定义提供了宏指令,使编写复杂序列更容易。特别是,CFlex基础设施的设计是基于最小更新机制的,该机制只包含需要的信息作为重放数据定义。例如,如果一条重播线与一个具有许多字段的复杂数据结构相关,并且这些数据结构是周期性地发送的,那么只有要更改的参数才会以符号形式写入它们的新值。这种最小的更新机制使编写重播块更容易。提供其他指令:
UPDATE:仅刷新命令重播行(如Send)中使用的给定结构中定义的参数
STOP停止重播块的执行
RESTART: 从头重新启动重播块
REPEAT: 重复重放块的子序列
PLAY: 激活重放块并开始播放或在暂停位置继续播放
PAUSE: 在给定位置暂停重放块
GOTO: 跳转到回放块中的给定位置
CALL: 向指定的事件块发送消息
需要注意的是,可以从重播块和事件块调用这些指令。
该方法允许描述多个系统和子系统:每个系统都有自己的模块(扩展名为.nge的文件),每个模块可以嵌套多个子系统,每个子系统可以有多个状态。
如附图8所示,系统实现文件(.nge)可以包括如C-ANSI预处理#include的外部纯C文件,也可以链接到外部库。每个系统实现文件(.nge)都有其子系统、状态和块(重放块、事件块)的结构。支持编译和工具链环境提供操作系统、驱动程序、通用任务,并提供预处理、编译和链接基础设施,将.nge文件转换为可执行语言机器文件。
软件工具链预处理器提供代码生成和构建工具。CFlex基础设施的优点是编译CFlex脚本,而不是在运行时解释它们。更具体地说,CFlex系统基础设施软件工具链使用预处理器代码生成和编译机制,将任何CFlex脚本完全转换为目标设备可执行的运行时机器语言文件(如果定义了目标设备硬件及其操作系统)。
系统CFlex实现软件工具链可以是一组运行在目标设备上的可执行程序(本机编译)或运行在主机系统上(交叉编译)。
例如,软件工具链可以运行在Linux英特尔CPU主机系统(PC)上,而目标设备是不运行操作系统的ARM MCU板。
最小的工具链由预处理器、编译器和链接器组成。
编译工具链:
第一步:使用C预处理器生成代码。CFlex模块将被转化成可注入驱动程序和脚本管理任务模块中的C代码段。
第2步:用可生成代码的编辑基础设备来获得可在目标系统上运行的可执行脚本
如果使用本机GCC编译工具链,将创建一个Makefile,将调用(1)GCC预处理器,该预处理器将把重播块和事件块转换为C数据结构,并转换为有条件的条件驱动程序(硬件中断)事件。然后,根据CFlex中描述的回放块和事件块的内容生成的C代码将(2)使用GCC编译器进行编译,得到目标文件,这些文件将与CFlex基础设施库相链接,得到(3)可直接在可选操作系统上的目标设备上运行的可执行文件,或者,如果目标系统是板上的一个设备,则可以将其闪存到MCU。
CFlex脚本语言提供了一些机制,可以轻松实现系统实现的动态统一测试(白盒测试),也可以实现黑盒测试用例来测试远程系统。
客户端终端提供HMI实现,允许测试工程师进行监控。客户端终端运行由CFlex基础设施生成的可执行文件或实现CFlex监控协议的可执行文件。
测试服务器是作为单一测试或黑盒测试用例的适当的CFlex系统实现。因此,测试服务器目标是图1中定义的目标设备。
被测系统是实施黑盒测试时可选的远程系统。
根据本实施例的其他变体,测试服务器可以在与客户端终端相同的设备目标中运行。
另外,如附图9所示, CFlex提供了一组宏来实现客户端更容易的监视和控制。
测试宏ASSERT(Text,Cond1,…,CondN):其中“Text”是指向要发送到HMI客户端的字符字符串的指针,如果N个布尔条件中的每一个都为真。
LogVarVar:定义CFlex提供的特殊类型LogVar的Var,以允许远程HMI客户端测试服务器。
WriteTx(文本):向HMI客户端发送文本
WriteVar(Var,NewValue):刷新定义为LogVar的Var的值。HMI客户端将显示Var的新值。
WriteValList():发送事件块中定义的日志变量的列表。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。
尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

Claims (7)

1.一种实现命令序列和事件管理的CFlex脚本语言的使用方法,包括系统实施、CFlex基础设施、目标设备、CFlex脚本语言、目标程序设计语言、环境系统、序列块、事件块、运行时监控和测试框架、驱动程序、实时调度程序、软件工具,其特征在于:所述系统实施根据系统规范文档或需要,设计一个或多个使用CFlex脚本语言的脚本,且每个脚本都是一个扩展名为.nge的文件;所述CFlex基础设施为使用构建或交叉构建系统实现所需的一组工具、库、配置文件和源代码;
所述目标设备是一个硬件系统,它使用在CFlex基础设施的构建步骤之后,实现可执行系统的运行;所述目标设备可以是运行Windows或Linux的PC,因此系统实施在PC操作系统上运行一个独立的应用程序;所述目标设备也可以是板上基于ARM或任何带集成内存的16/32位MCU的系统或是带外部SD-RAM、DDR的MPU系统;
所述CFlex脚本语言是一种标准语言之上的宏语言,是一组用于实现序列块或事件块的指令、循环、条件和宏指令的语言;
所述目标程序设计语言来自CFlex基础设施工具链的编译器,将目标语言转换为机器代码;
所述环境系统是目标设备和CFlex基础设施之外的任何外部设备或系统,所述环境系统可以是一个专用的HMI终端,所述环境系统也可以是被测试的系统,使用在目标设备中,为CFlex系统的指定测试序列进行测试;
所述序列块也称为重播块,它是一系列命令,带有时间戳和关联的数据结构,以及执行指令,其中数据结构可以是原始字节数组,也可以是使用C类型的符号名,所述序列块能够调度程序执行事件块或重播行中发送的每一行进程指令;
所述事件块由Infrastructure Scheduler作为独立任务进行管理,且事件块是钩子机制和方括号内的语句的关联,所述钩子机制是由驱动程序管理的事件为变量结构的一组或一组变量,其中驱动程序管理的事件可以是由目标设备操作系统生成的软件事件,也可以是中断之类的硬件事件;
所述运行时监控和测试框架被视为SUT的环境系统;所述运行时监控和测试框架与目标设备之间的连接通过通信协议、电源控制或输入/输出信号完成;在系统实现CFlex脚本执行期间,测试执行是实时的;且CFlex还提供了一个完整的框架,用于通过HMI客户端进行监控;
所述驱动程序用于CFlex基础设施,具有与实时调度器兼容的API,能够通过CFlex脚本命令和指令来控制目标设备,所驱动程序可以是输入/输出驱动程序、通信协议驱动程序、内存管理驱动程序或目标设备中的任何其他驱动程序,且所述驱动程序与条件事件和命令序列相耦合,这是由软件工具链生成的代码的结果;
所述实时调度程序能够根据CFlex脚本实现控制目标设备的上述操作;并提供实时指令来同步任务,通过事件传递确保进程间通信,所述实时调度程序还允许CFlex系统基础设施任务的伪并行执行;
所述软件工具是一组用于代码生成和构建工具的可执行程序, CFlex基础设施在编译时启动软件工具的工具链,以生成目标设备可执行的机器语言文件,这些文件符合目标设备硬件及其操作系统。
2.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:所述软件工具的工具链具有描述的工具层次结构。
3.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:CFlex实现进程间通信机制,允许从给定的事件块向另一个事件块发送事件。
4.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:所述目标设备是作为独立设备运行系统实现的嵌入式系统,或者是用于运行时监视和测试独立环境系统的测试系统。
5.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:所述事件块由系统、子系统和相关状态标识组成,所述事件块可以通过中继指令控制序列块。
6.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:所述目标设备还提供了一个测试服务器特性。
7.根据权利要求1所述的一种实现命令序列和事件管理的CFlex脚本语言的使用方法,其特征在于:所述软件工具的工具链包括预处理器、编译器和链接器。
CN202110323793.0A 2021-03-26 2021-03-26 一种实现命令序列和事件管理的CFlex脚本语言的使用方法 Active CN113253993B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110323793.0A CN113253993B (zh) 2021-03-26 2021-03-26 一种实现命令序列和事件管理的CFlex脚本语言的使用方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110323793.0A CN113253993B (zh) 2021-03-26 2021-03-26 一种实现命令序列和事件管理的CFlex脚本语言的使用方法

Publications (2)

Publication Number Publication Date
CN113253993A true CN113253993A (zh) 2021-08-13
CN113253993B CN113253993B (zh) 2023-11-28

Family

ID=77181463

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110323793.0A Active CN113253993B (zh) 2021-03-26 2021-03-26 一种实现命令序列和事件管理的CFlex脚本语言的使用方法

Country Status (1)

Country Link
CN (1) CN113253993B (zh)

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123390A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and apparatus to implement adaptive scripting tool
US20100083223A1 (en) * 2008-09-30 2010-04-01 Ics Triplex Isagraf Inc. Compilation model
US20100275180A1 (en) * 2009-04-27 2010-10-28 Vmware, Inc. Method and Apparatus for Automatically Generating Source Code Files in a File Storage Unit
CN106155755A (zh) * 2015-06-03 2016-11-23 上海红神信息技术有限公司 程序编译方法和程序编译器

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060123390A1 (en) * 2004-12-02 2006-06-08 International Business Machines Corporation Method and apparatus to implement adaptive scripting tool
US20100083223A1 (en) * 2008-09-30 2010-04-01 Ics Triplex Isagraf Inc. Compilation model
US20100275180A1 (en) * 2009-04-27 2010-10-28 Vmware, Inc. Method and Apparatus for Automatically Generating Source Code Files in a File Storage Unit
CN106155755A (zh) * 2015-06-03 2016-11-23 上海红神信息技术有限公司 程序编译方法和程序编译器

Also Published As

Publication number Publication date
CN113253993B (zh) 2023-11-28

Similar Documents

Publication Publication Date Title
Devine et al. MakeCode and CODAL: Intuitive and efficient embedded systems programming for education
Bagherzadeh et al. Model-level, platform-independent debugging in the context of the model-driven development of real-time systems
Jagadeesan et al. A formal approach to reactive systems software: A telecommunications application in Esterel
US20090265719A1 (en) Application macro recording utilizing method interception
Navet et al. CPAL: High-level abstractions for safe embedded systems
Yip et al. The ForeC synchronous deterministic parallel programming language for multicores
Benyahia et al. Extending the standard execution model of UML for real-time systems
Sotnik et al. Modern Integrated Software Development Environments
Bouraqadi et al. Test-driven development for generated portable Javascript apps
Schulz-Rosengarten et al. Polyglot modal models through Lingua Franca
Bagherzadeh et al. Live modeling in the context of state machine models and code generation
Colombo et al. Runtime verification using LARVA
Restuccia et al. ARTe: Providing real-time multitasking to Arduino
CN113253993B (zh) 一种实现命令序列和事件管理的CFlex脚本语言的使用方法
Schulz-Rosengarten et al. Modal reactors
Obster et al. Development and execution of PLC programs on real-time capable mobile devices
Wood et al. Triton: a domain specific language for cyber-physical systems
Bambagini et al. A code generation framework for distributed real-time embedded systems
Jeon et al. SP-Fuzz: Fuzzing Soft PLC with Semi-automated Harness Synthesis
Orjala Unit testing methods for Internet of Things Mbed OS operating system
Rodríguez et al. GCS component development cycle
Morelli Automated generation of robotics applications from simulink and sysml models
Brzeziński Tiny TTCN-inspired testing tools for experimenting with hybrid IoT systems
Starkman The robot operating system in transition: experiments and tutorials
Restuccia et al. The Journal of Systems & Software

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant