CN104104680A - 一种采用形式化描述语言进行RapidIO协议解码的方法 - Google Patents
一种采用形式化描述语言进行RapidIO协议解码的方法 Download PDFInfo
- Publication number
- CN104104680A CN104104680A CN201410345168.6A CN201410345168A CN104104680A CN 104104680 A CN104104680 A CN 104104680A CN 201410345168 A CN201410345168 A CN 201410345168A CN 104104680 A CN104104680 A CN 104104680A
- Authority
- CN
- China
- Prior art keywords
- protocol
- decoding
- rapidio
- syntax rule
- carries out
- 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
Landscapes
- Computer And Data Communications (AREA)
Abstract
本发明提出了一种采用形式化描述语言进行RapidIO协议解码的方法,包括以下步骤:按照语法规则,以文本方式描述RapidIO协议格式,生成脚本文件;RapidIO协议解码程序读入脚本文件进行合法性检查,并生成中间文件;进行词法与语法分析,先分析主语句,再分析协议格式中的子语句,创建语法树的一个节点信息结构,以节点名为索引,节点信息为内容插入哈希表中,形成树状结构的协议信息单元哈希表;读入RapidIO原始数据帧,遍历协议信息单元哈希表,根据节点信息动态创建解码树;遍历解码树将RapidIO解码结果显示出来。当协议升级时,用户可以自己修改协议的脚本文件,无需更改任何其它程序,节省了成本。
Description
技术领域
本发明涉及协议测试分析领域,特别涉及一种RapidIO网络协议解码方法。
背景技术
RapidIO为一种高速串行总线,广泛应用于嵌入式系统内部芯片到芯片、板到板的互联。近年来,RapidIO成为电信、通讯以及嵌入式系统内的芯片与芯片之间,板与板之间的背板互连的主要技术。
RapidIO协议为二进制协议,在网络协议测试中,经常需要对接收到的RapidIO数据帧进行协议分析,对协议内容进行解码。由于RapidIO技术更新很快,伴随其协议格式会不断升级,因此协议解码程序的可扩展性是首要考虑的问题。
目前常用的协议解码技术为插件技术,将协议的解码程序做成插件,当协议更新时,需要重新更改相应的协议解码插件程序。此种方法具有一定的灵活性,无需更改主程序,只需更新插件即可。但是每当协议更新时,都需重新修改插件程序,并对用户进行软件升级服务。
而采用形式化语言描述协议帧,并以此为驱动脚本进行协议解码的方法更加灵活,可扩展性更好。每当协议升级时,用户根据简单的形式化语言的语法规则就可修改协议格式脚本,实现升级协议的解码,无需对任何程序进行修改,节省了软件升级的成本。
目前通信系统中常用ASN.1抽象语法标记语言及SDL语言进行通信协议的描述。现有的这些语言对于描述RapidIO协议而言,显得规则复杂、庞大,需要用户花费很多时间进行学习,也意味着协议的词法与语法分析过程会很繁琐。如何设计一种形式化语言,简单明了,用户一看就能掌握,又可充分描述RapidIO协议帧格式是一个需要解决的技术难题。
发明内容
为解决上述技术难题,本发明提出一种采用形式化描述语言进行RapidIO协议解码的方法。
本发明的技术方案是这样实现的:
一种采用形式化描述语言进行RapidIO协议解码的方法,包括以下步骤:
步骤(a),按照语法规则,以文本方式描述RapidIO协议格式,生成脚本文件;
步骤(b),RapidIO协议解码程序读入脚本文件进行合法性检查,并生成中间文件;
步骤(c),进行词法与语法分析,先分析主语句,再分析协议格式中的子语句,创建语法树的一个节点信息结构,以节点名为索引,节点信息为内容插入哈希表中,形成树状结构的协议信息单元哈希表;
步骤(d),读入RapidIO原始数据帧,遍历协议信息单元哈希表,根据节点信息动态创建解码树;
步骤(e),遍历解码树将RapidIO解码结果显示出来。
可选地,步骤(a)中的语法规则定义为:
语法规则1:
形式语言的单词种类有四种:基本字、标识符、常数与界符;
语法规则2:
帧协议格式由主语句构成,主语句又包括多个子语句;
语法规则3:
主语句有三种:CtrlSymbol、Header、Payload;CtlSymbol主语句描述RapdidIO的控制符;Header主语句描述RapidIO帧头;Payload主语句描述净荷;
以“//”开头的为注释语句;
子语句包括:value、state、case、flag、set语句。
可选地,所述语法规则1中,基本字、标识符、常数与界符具体为:
基本字:CtlSymbol,Header,Payload,value,state,flag,case,name,set;
标识符:用户定义的变量名;
常数:整数;
界符:{}、“”、//。
可选地,所述语法规则2中:子语句包括表达式、标识符、字符串。
可选地,所述表达式有name表达式、enum表达式、label表达式、字符串表达式、数学表达式。
可选地,所述步骤(c)中,节点信息包括:协议域的描述信息、起始位置、开始比特与结束比特位置、子节点名。
本发明的有益效果是:
(1)定义了一种易学、简单的形式化语言来描述RapidlO协议帧,并以文本方式形成脚本文件,以此脚本为驱动实现协议解码;
(2)当协议升级时,用户可以根据此形式化语言简单的语法规则,自己修改协议的脚本文件,即可实现新协议的解码,无需更改任何其它程序,节省了软件升级的成本。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明一种采用形式化描述语言进行RapidIO协议解码的方法的流程图;
图2主语句语法规则示意图;
图3子语句语法规则示意图;
图4表达式语法规则示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
目前通信系统中常用的ASN.1抽象语法标记语言及SDL语言,对于描述RapidIO协议而言,显得规则复杂、庞大,需要用户花费很多时间进行学习,也意味着协议的词法与语法分析过程会很繁琐。本发明对RapidIO协议格式进行形式化描述,形成文本化的脚本文件;协议解码程序以脚本文件为驱动,首先对其进行词法与语法分析,生成协议信息单元哈希表,通过此哈希表分析输入的数据帧,并生成协议解码树。采用这种方法进行协议解码,当协议升级时,只需修改协议的脚本文件即可,无须更改程序,此种方法使RapidIO协议的解码具有很好的扩展性与普适性。
下面结合附图对本发明的采用形式化描述语言进行RapidIO协议解码的方法进行详细说明。
如图1所示,本发明的采用形式化描述语言进行RapidIO协议解码的方法包括以下步骤:
步骤(a),按照语法规则,以文本方式描述RapidIO协议格式,生成脚本文件;
步骤(b),RapidIO协议解码程序读入脚本文件进行合法性检查,并生成中间文件;
步骤(c),进行词法与语法分析,先分析主语句,再分析协议格式中的子语句,创建语法树的一个节点信息结构,以节点名为索引,节点信息为内容插入哈希表中,节点信息包括:协议域的描述信息、起始位置、开始比特与结束比特位置、子节点名,形成树状结构的协议信息单元哈希表;
步骤(d),读入RapidIO原始数据帧,遍历协议信息单元哈希表,根据节点信息动态创建解码树;
步骤(e),遍历解码树将RapidIO解码结果显示出来。
RapidIO协议为二进制协议,为了对其进行协议解码,本发明的方法首先定义一种简单易学的形式化语言,充分描述RapidIO协议格式。语法规则定义如下:
语法规则1:
形式语言的单词种类有四种:基本字、标识符、常数与界符。
基本字:也称为保留字,为CtlSymbol,Header,Payload,value,state,flag,case,name,set。
标识符:用户定义的变量名,标记。
常数:如10,25,100等整数。
界符:{}、“”、//。
语法规则2:
帧协议格式由主语句构成,主语句又包括多个子语句。子语句包括表达式、标识符、字符串。
语法规则3:
主语句语法规则如图2所示,主语句有三种:CtrlSymbol、Header、Payload。此外以“//”开头的为注释语句。CtlSymbol主语句描述RapdidIO的控制符;Header主语句描述RapidIO帧头;Payload主语句描述净荷。
子语句语法规则如图3所示,子语句包括:value、state、case、flag、set语句。
value子语句用于描述下述协议格式域:在对其进行解码时,只需显示域名及值即可,例如RapidIO协议格域中的ackID域可表示成:“ackID:value0|2-7"ackID"”,“0”表示起始位置为第0字节,长度范围为第2至第7比特,含义为“ackID”。
state子语句用于描述下述协议格式域:在对其进行解码时,需显示域名,值,以及该值所表示的含义,这种域对于不同的值其含义不同,如RapidIO协议格域中的ftype域。对于不同的值,可以采用name表达式对不同的值进行名命名,以便用于条件选择。
case子语句用于描述下述协议格式域:在对其进行解码时,其含义依赖于其它格式域的值,需要进行条件选择。如RapidIO协议格域中的sourceID与destinationID域,它依赖于tt域的值。
flag子语句用于描述下述协议格式域:在对其进行解码时,其值中的每个比特具有不同的含义。
set子语句可对一个标识符赋值,用于可变的信息单元起始位置。
表达式语法规则如图4所示,表达式有name表达式、enum表达式、label表达式、字符串表达式、数学表达式等。
采用上述形式语言定义的RapidIO协议格式帧头部分举例如下:
本发明采用形式化描述语言进行RapidIO协议解码的方法,定义了一种易学、简单的形式化语言来描述RapidIO协议帧,并以文本方式形成脚本文件,以此脚本为驱动实现协议解码;当协议升级时,用户可以根据此形式化语言简单的语法规则,自己修改协议的脚本文件,即可实现新协议的解码,无需更改任何其它程序,节省了软件升级的成本。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (6)
1.一种采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,包括以下步骤:
步骤(a),按照语法规则,以文本方式描述RapidIO协议格式,生成脚本文件;
步骤(b),RapidIO协议解码程序读入脚本文件进行合法性检查,并生成中间文件;
步骤(c),进行词法与语法分析,先分析主语句,再分析协议格式中的子语句,创建语法树的一个节点信息结构,以节点名为索引,节点信息为内容插入哈希表中,形成树状结构的协议信息单元哈希表;
步骤(d),读入RapidIO原始数据帧,遍历协议信息单元哈希表,根据节点信息动态创建解码树;
步骤(e),遍历解码树将RapidIO解码结果显示出来。
2.如权利要求1所述的采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,步骤(a)中的语法规则定义为:
语法规则(1):
形式语言的单词种类有四种:基本字、标识符、常数与界符;
语法规则(2):
帧协议格式由主语句构成,主语句又包括多个子语句;
语法规则(3):
主语句有三种:CtrlSymbol、Header、Payload;CtlSymbol主语句描述RapdidIO的控制符;Header主语句描述RapidIO帧头;Payload主语句描述净荷;
以“//”开头的为注释语句;
子语句包括:value、state、case、flag、set语句。
3.如权利要求2所述的采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,所述语法规则(1)中,基本字、标识符、常数与界符具体为:
基本字:CtlSymbol,Header,Payload,value,state,flag,case,name,set;
标识符:用户定义的变量名;
常数:整数;
界符:{}、“”、//。
4.如权利要求2所述的采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,所述语法规则(2)中:子语句包括表达式、标识符、字符串。
5.如权利要求4所述的采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,所述表达式有name表达式、enum表达式、label表达式、字符串表达式、数学表达式。
6.如权利要求1所述的采用形式化描述语言进行RapidIO协议解码的方法,其特征在于,所述步骤(c)中,节点信息包括:协议域的描述信息、起始位置、开始比特与结束比特位置、子节点名。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410345168.6A CN104104680A (zh) | 2014-07-14 | 2014-07-14 | 一种采用形式化描述语言进行RapidIO协议解码的方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201410345168.6A CN104104680A (zh) | 2014-07-14 | 2014-07-14 | 一种采用形式化描述语言进行RapidIO协议解码的方法 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN104104680A true CN104104680A (zh) | 2014-10-15 |
Family
ID=51672481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201410345168.6A Pending CN104104680A (zh) | 2014-07-14 | 2014-07-14 | 一种采用形式化描述语言进行RapidIO协议解码的方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104104680A (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502851A (zh) * | 2016-11-11 | 2017-03-15 | 济南浪潮高新科技投资发展有限公司 | 一种生成功能验证中RapidIO二层协议解析模型的方法 |
CN110351321A (zh) * | 2018-04-08 | 2019-10-18 | 上海擎感智能科技有限公司 | 数据交互方法、数据交互系统、及电子终端 |
CN114924738A (zh) * | 2022-03-29 | 2022-08-19 | 宁德星云检测技术有限公司 | 一种基于Emit反射和表达式树的报文映射方法及系统 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1357981A (zh) * | 2000-12-04 | 2002-07-10 | 深圳黎明电脑网络有限公司 | 可进行多种应用协议测试的方法 |
US20030097433A1 (en) * | 2001-11-02 | 2003-05-22 | Park Ji Eun | Platform-independent apparatus and method for automatically searching, distributing and installing software |
CN101008954A (zh) * | 2007-01-30 | 2007-08-01 | 金蝶软件(中国)有限公司 | 联机分析处理系统中多维表达式数据缓存的方法和装置 |
CN102004639A (zh) * | 2010-09-28 | 2011-04-06 | 深圳市共进电子有限公司 | 嵌入式脚本生成模块以及嵌入式脚本生成的方法 |
CN102055770A (zh) * | 2011-01-17 | 2011-05-11 | 西安电子科技大学 | 一种基于xml描述的安全协议代码自动实现系统 |
CN103001971A (zh) * | 2012-12-25 | 2013-03-27 | 成都科来软件有限公司 | 一种网络数据包解析方法 |
CN103729580A (zh) * | 2014-01-27 | 2014-04-16 | 国家电网公司 | 一种检测软件抄袭的方法和装置 |
-
2014
- 2014-07-14 CN CN201410345168.6A patent/CN104104680A/zh active Pending
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1357981A (zh) * | 2000-12-04 | 2002-07-10 | 深圳黎明电脑网络有限公司 | 可进行多种应用协议测试的方法 |
US20030097433A1 (en) * | 2001-11-02 | 2003-05-22 | Park Ji Eun | Platform-independent apparatus and method for automatically searching, distributing and installing software |
CN101008954A (zh) * | 2007-01-30 | 2007-08-01 | 金蝶软件(中国)有限公司 | 联机分析处理系统中多维表达式数据缓存的方法和装置 |
CN102004639A (zh) * | 2010-09-28 | 2011-04-06 | 深圳市共进电子有限公司 | 嵌入式脚本生成模块以及嵌入式脚本生成的方法 |
CN102055770A (zh) * | 2011-01-17 | 2011-05-11 | 西安电子科技大学 | 一种基于xml描述的安全协议代码自动实现系统 |
CN103001971A (zh) * | 2012-12-25 | 2013-03-27 | 成都科来软件有限公司 | 一种网络数据包解析方法 |
CN103729580A (zh) * | 2014-01-27 | 2014-04-16 | 国家电网公司 | 一种检测软件抄袭的方法和装置 |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106502851A (zh) * | 2016-11-11 | 2017-03-15 | 济南浪潮高新科技投资发展有限公司 | 一种生成功能验证中RapidIO二层协议解析模型的方法 |
CN110351321A (zh) * | 2018-04-08 | 2019-10-18 | 上海擎感智能科技有限公司 | 数据交互方法、数据交互系统、及电子终端 |
CN114924738A (zh) * | 2022-03-29 | 2022-08-19 | 宁德星云检测技术有限公司 | 一种基于Emit反射和表达式树的报文映射方法及系统 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106991023B (zh) | 一种接口参数校验方法及组件 | |
CN106970820B (zh) | 代码存储方法及代码存储装置 | |
CN103942137B (zh) | 浏览器兼容性测试方法及装置 | |
CN111177184A (zh) | 基于自然语言的结构化查询语言转换方法、及其相关设备 | |
CN108563629B (zh) | 一种日志解析规则自动生成方法和装置 | |
CN103853650A (zh) | 一种模糊测试的测试用例生成方法及装置 | |
CN110333863A (zh) | 一种生成、显示小程序页面的方法及装置 | |
CN106407111B (zh) | 终端测试装置、终端测试设备及变量维护方法 | |
CN113051285A (zh) | Sql语句的转换方法、系统、设备及存储介质 | |
CN108737384A (zh) | 用编译器生成的句法树进行比特流解码的系统和方法 | |
CN104104680A (zh) | 一种采用形式化描述语言进行RapidIO协议解码的方法 | |
CN105700898A (zh) | 一种升级文件制作方法及装置和升级文件获取方法及装置 | |
CN108664546B (zh) | Xml数据结构转换方法和装置 | |
CN113778449A (zh) | 航空电子接口数据适配转换系统 | |
CN101794318A (zh) | Url解析方法及设备 | |
CN110460461B (zh) | Yang模式语言到命令行的映射方法及系统 | |
CN102508887A (zh) | 一种数字电视交互服务标记语言解析系统及方法 | |
CN111597801B (zh) | 一种基于自然语言处理的文本自动结构化方法和系统 | |
CN106599058B (zh) | 一种rcd文件模型校验方法和校验装置 | |
CN113949749B (zh) | Xml报文处理方法及装置 | |
CN118245050A (zh) | 前端框架组件自动转换方法、系统、电子设备及存储介质 | |
CN111708542B (zh) | 测试用例生成方法、系统、设备及存储介质 | |
CN105279032B (zh) | 一种同步接口报文与javaBean的方法及装置 | |
CN117008918A (zh) | 领域特定语言的处理方法、装置、介质及电子设备 | |
CN115794057A (zh) | 命令行函数代码生成方法、装置和计算机可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20141015 |
|
RJ01 | Rejection of invention patent application after publication |