一种通信协议代码的生成方法、装置、设备及存储介质与流程

文档序号:29973015发布日期:2022-05-11 11:47阅读:243来源:国知局
一种通信协议代码的生成方法、装置、设备及存储介质与流程

1.本技术涉及计算机技术领域,具体而言,涉及一种通信协议代码的生成方法、装置、设备及存储介质。


背景技术:

2.随着芯片在电子设备中的广泛应用,不同电子设备间的通信过程本质上可以看作是不同芯片间的通信过程。在芯片间通信的过程中,用户往往需要基于芯片自身的通信需求,来为通信双方制定符合通信需求的通信协议,以使芯片之间能够按照制定好的通信协议进行数据传输。
3.目前,通信协议代码主要是由软件开发人员在代码编写工具中通过人工编写的方式进行生成。这种人工编写的方式需要软件开发人员自行处理大量的源数据,导致通信协议代码的生成效率较低。


技术实现要素:

4.有鉴于此,本技术的目的在于提供一种通信协议代码的生成方法、装置、设备及存储介质,以通过excel文件与编程语言相结合的方式,实现芯片间通信协议代码的自动生成,提高通信协议代码的生成效率。
5.为使本技术的上述目的、特征和优点能更明显易懂,下文特举较佳实施例,并配合所附附图,作详细说明如下。
6.第一方面,本技术实施例提供了一种通信协议代码的生成方法,所述生成方法包括:读取目标excel文件;其中,所述目标excel文件中包括制定芯片间通信协议所需要的源数据;对所述目标excel文件进行解析处理,确定所述目标excel文件中包括的多个关键字符以及每个关键字符的字符位置;其中,所述关键字符用于表征与芯片类型或者芯片名称相关的字符;针对每一所述关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息;其中,每一所述结构体参数信息中至少包括:结构体的名称、结构体下包括的多个信号成员的成员名称、每个信号成员的成员类型以及成员数据;根据每一所述结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。
7.在一种可选的实施方式中,所述根据每一所述结构体参数信息,生成用于实现芯片间通信的通信协议代码文件,包括:从每一所述结构体参数信息中,获取每一所述结构体的名称以及该结构体下包括的多个信号成员的成员名称以及成员类型作为目标索引信息;将所述目标索引信息中包括的每一所述结构体的名称、成员名称以及成员类型分
别填充至第一组通信协议代码文件中的非固定代码部分,得到完整的第一组通信协议代码文件;其中,所述第一组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的检索;从每一所述结构体参数信息中,获取每个信号成员的成员数据,并按照每个信号成员在所述目标索引信息中的索引位置,将每个信号成员的成员数据存放至所述目标索引信息中,得到目标参数信息;将所述目标参数信息中包括的每一所述结构体的名称、成员名称、成员类型以及成员数据分别填充至第二组通信协议代码文件中的非固定代码部分,得到完整的第二组通信协议代码文件;其中,所述第二组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的解析与更新。
8.在一种可选的实施方式中,在所述对所述目标excel文件进行解析处理时,所述生成方法还包括:当检测到所述目标excel文件中不存在所述关键字符时,向用户展示关键字符报错提示信息,以提示用户根据所述关键字符报错提示信息,对所述目标excel文件的文件内容进行修正。
9.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,所述生成方法还包括:当检测到该结构体数据中信号成员的成员类型位于预设成员类型范围之外时,向用户展示成员类型报错提示信息,以提示用户在所述目标excel文件中,根据所述成员类型报错提示信息,对该结构体数据中信号成员的成员类型进行修正;其中,所述预设成员类型范围根据芯片间通信协议的制定需求确定。
10.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,所述生成方法还包括:当检测到该结构体数据中信号成员的成员数据位于该信号成员的正常取值范围之外时,向用户展示成员数据报错提示信息,以提示用户在所述目标excel文件中,根据所述成员数据报错提示信息,对该结构体数据中该信号成员的成员数据进行修正;其中,该信号成员的正常取值范围根据该信号成员的成员类型确定。
11.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,所述生成方法还包括:当检测到该结构体数据中协议通道标识的字段数值位于该协议通道标识的制定范围之外时,向用户展示协议通道报错提示信息,以提示用户在所述目标excel文件中,根据所述协议通道报错提示信息,对该结构体数据中该协议通道标识的字段数值进行修正;其中,所述协议通道标识用于表征目标芯片支持的物理通信通道;所述目标芯片是该关键字符表征的芯片。
12.在一种可选的实施方式中,所述结构体的名称以及所述成员名称均由一个主命令字段和一个子命令字段组合而成;在所述生成用于实现芯片间通信的通信协议代码文件之前,所述生成方法还包括:当检测到不同结构体参数信息中出现重复的结构体的名称时,向用户展示结构体名称报错提示信息,以提示用户在所述目标excel文件中,根据所述结构体名称报错提示信
息,对出现重复的结构体的名称进行修正;当检测到同一结构体参数信息中出现重复的成员名称时,向用户展示成员名称报错提示信息,以提示用户在所述目标excel文件中,根据所述成员名称报错提示信息,对出现重复的成员名称进行修正。
13.在一种可选的实施方式中,所述生成方法应用于目标可执行文件中,所述生成方法还包括:当检测到所述目标excel文件和/或所述目标可执行文件的存储路径与预先指定的项目工程路径不一致时,向用户展示路径报错提示信息,以提示用户根据所述路径报错提示信息,对所述目标excel文件和/或所述目标可执行文件的存储路径进行修正。
14.在一种可选的实施方式中,在所述生成用于实现芯片间通信的通信协议代码文件之后,所述生成方法还包括:当检测到通信双方中包括第一芯片时,将生成的所述第二组通信协议代码文件发送给所述第一芯片的维护终端;其中,所述第一芯片用于表征在芯片间通信的过程中,芯片自身能够针对所述信号成员进行检索的芯片;当检测到通信双方中包括第二芯片时,将生成的所述第一组通信协议代码文件以及所述第二组通信协议代码文件发送给所述第二芯片的维护终端;其中,所述第二芯片用于表征除所述第一芯片之外的其余类型的芯片。
15.第二方面,本技术实施例提供了一种通信协议代码的生成装置,所述生成装置包括:读取单元,用于读取目标excel文件;其中,所述目标excel文件中包括制定芯片间通信协议所需要的源数据;第一处理单元,用于对所述目标excel文件进行解析处理,确定所述目标excel文件中包括的多个关键字符以及每个关键字符的字符位置;其中,所述关键字符用于表征与芯片类型或者芯片名称相关的字符;第二处理单元,用于针对每一所述关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息;其中,每一所述结构体参数信息中至少包括:结构体的名称、结构体下包括的多个信号成员的成员名称、每个信号成员的成员类型以及成员数据;代码生成单元,用于根据每一所述结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。
16.第三方面,本技术实施例提供了一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述的通信协议代码的生成方法的步骤。
17.第四方面,本技术实施例提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器运行时执行上述的通信协议代码的生成方法的步骤。
18.本技术的实施例提供的技术方案可以包括以下有益效果:本技术实施例提供的一种通信协议代码的生成方法,通过读取目标excel文件;对目标excel文件进行解析处理,确定目标excel文件中包括的多个关键字符以及每个关键字
符的字符位置;针对每一关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息;根据每一结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。通过这种方式,本技术可以通过excel文件与编程语言相结合的方式,实现芯片间通信协议代码的自动生成,提高通信协议代码的生成效率。
附图说明
19.为了更清楚地说明本技术实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍, 应当理解,以下附图仅示出了本技术的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
20.图1示出了本技术实施例所提供的一种通信协议代码的生成方法的流程示意图;图2示出了本技术实施例所提供的一种生成通信协议代码文件的方法的流程示意图;图3示出了本技术实施例提供的一种通信协议代码的生成装置的结构示意图;图4为本技术实施例提供的一种计算机设备400的结构示意图。
具体实施方式
21.为使本技术实施例的目的、技术方案和优点更加清楚,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,应当理解,本技术中附图仅起到说明和描述的目的,并不用于限定本技术的保护范围。另外,应当理解,示意性的附图并未按实物比例绘制。本技术中使用的流程图示出了根据本技术的一些实施例实现的操作。 应该理解,流程图的操作可以不按顺序实现,没有逻辑的上下文关系的步骤可以反转顺序或者同时实施。 此外,本领域技术人员在本技术内容的指引下,可以向流程图添加一个或多个其他操作,也可以从流程图中移除一个或多个操作。
22.另外,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本技术实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本技术的实施例的详细描述并非旨在限制要求保护的本技术的范围,而是仅仅表示本技术的选定实施例。基于本技术的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本技术保护的范围。
23.需要说明的是,本技术实施例中将会用到术语“包括”,用于指出其后所声明的特征的存在,但并不排除增加其它的特征。
24.目前,通信协议代码主要是由软件开发人员在代码编写工具中通过人工编写的方式进行生成。这种人工编写的方式需要软件开发人员自行处理大量的源数据,导致通信协议代码的生成效率较低。
25.基于此,本技术实施例提供了一种通信协议代码的生成方法、装置、设备及存储介质,通过读取目标excel文件;对目标excel文件进行解析处理,确定目标excel文件中包括的多个关键字符以及每个关键字符的字符位置;针对每一关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解
析处理,得到该关键字符的结构体参数信息;根据每一结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。通过这种方式,本技术可以通过excel文件与编程语言相结合的方式,实现芯片间通信协议代码的自动生成,提高通信协议代码的生成效率。
26.下面对本技术实施例提供的一种通信协议代码的生成方法、装置、设备及存储介质进行详细介绍。
27.参照图1所示,图1示出了本技术实施例所提供的一种通信协议代码的生成方法的流程示意图,所述生成方法包括步骤s101-s104;具体的:s101,读取目标excel文件。
28.这里,目标excel文件中包括制定芯片间通信协议所需要的源数据,例如,通信过程中涉及的芯片名称、信号成员类型、信号成员名称等参数信息。
29.具体的,在本技术实施例中,对于通信双方各自对应的芯片类型并不进行限定,基于此,在一种可选的实施方式中,所述源数据还可以按照如下表1所示的规范格式,在目标excel文件中进行分类排布。
30.表1:芯片名称+执行命令信号成员类型信号成员数据1
……
信号成员数据n信号成员名称
……
信号成员名称芯片名称+执行命令信号成员名称
……
信号成员名称芯片名称+执行命令
…………………………
需要说明的是,在实际应用过程中,针对芯片间通信协议的不同制定需求,目标excel文件中的源数据内容可能存在不同,但是,在目标excel文件中,源数据仍然可以按照上述规范格式,进行分类排布,以便在出现数据错误时,方便用户对目标excel文件中出现错误的源数据内容进行维护与修正。
31.s102,对所述目标excel文件进行解析处理,确定所述目标excel文件中包括的多个关键字符以及每个关键字符的字符位置。
32.这里,所述关键字符用于表征与芯片类型或者芯片名称相关的字符,例如,关键字符可以是mcu(microcontroller unit,微控制单元)、mpu(microprocessor unit,微处理器)、soc(system on chip,系统级芯片)等。
33.具体的,以python(计算机编程语言)环境作为本技术实施例的开发环境为例,目标excel文件的文件类型格式为windows文件系统下的.xlsx文件,此时,python环境中的xlrd模块可以对导入的目标excel文件进行读取与解析处理,从而在解析处理的过程中,查询上述关键字符并锁定查询到的每个关键字符在目标excel文件中的字符位置(如,关键字符位于目标excel文件中的第6行)。
34.s103,针对每一所述关键字符,将该关键字符与相邻关键字符之间所夹的数据行
内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息。
35.这里,每一所述结构体参数信息中至少包括:结构体的名称、结构体下包括的多个信号成员的成员名称、每个信号成员的成员类型以及成员数据。
36.这里,以上述步骤s101中所示的表1为例,在表1所示的目标excel文件中,通过上述步骤s101与步骤s102的读取与解析处理,可以确定每个关键字符(如芯片名称)在目标excel文件中的字符位置(如表1中“芯片名称”所在的第1行、第5行、第9行等),此时,以每个关键字符对应一个结构体(如结构体名称可以是表1中的“芯片名称+执行命令”)的形式,即可通过确定出的每个关键字符,对目标excel文件中的源数据进行结构体划分,得到每个结构体数据。
37.示例性的说明,以表1中第1行的关键字符为例,第1行关键字符与第5行关键字符(即相邻关键字符)之间所夹的第2行-第4行的数据行内容即为第1行关键字符的结构体数据,该结构体数据中的结构体名称即为第1行中的“芯片名称+执行命令”。
38.s104,根据每一所述结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。
39.具体的,在本技术实施例中,仍以python环境为例,步骤s104可以通过python中内置的写操作函数完成。
40.这里,通信协议代码文件的生成可以分为以下两个部分:固定代码生成和非固定代码生成。其中,固定代码生成主要是把一些固定逻辑(即与目标excel文件的文件内容无关)的代码写入到脚本中(用于搭建出通信协议代码文件的基础程序架构),这部分固定代码主要是程序的架构逻辑代码(即当目标excel文件的文件内容进行更新时,也不需要进行变化的固定代码);而非固定代码生成主要是把上一个步骤s103中解析出来的结构体参数信息进行代码输出(即将解析出的结构体参数信息,对应填写到待生成的通信协议代码文件中的可变代码部分),这些非固定代码体现出上述固定代码构建的架构内每个结构体的详细逻辑内容。
41.下面针对上述各步骤在本技术实施例中的具体实施过程,分别进行详细说明:针对上述步骤s104的具体实施过程,在本技术实施例中,基于上述关于“固定代码生成和非固定代码生成”的说明内容可以看出,固定代码部分是写入到脚本中的,因此,在实际应用过程中,步骤s104的实施只需要根据当前解析出的各结构体参数信息,生成上述非固定代码部分,即可得到完整的通信协议代码文件。
42.这里,在一种可选的实施方式中,如图2所示,图2示出了本技术实施例所提供的一种生成通信协议代码文件的方法的流程示意图,其中,在执行步骤s104时,该方法包括步骤s201
‑ꢀ
s204;具体的:s201,从每一所述结构体参数信息中,获取每一所述结构体的名称以及该结构体下包括的多个信号成员的成员名称以及成员类型作为目标索引信息。
43.具体的,结合上述步骤s101
‑ꢀ
s104可知,通过对目标excel文件中的源数据进行解析处理,可以将源数据中的有效信息按照以结构体为单位的形式进行分类,得到多组结构体参数信息;其中,每组结构体参数信息对应一个结构体以及该结构体下包括的多个信号成员。
44.基于此,当目标excel文件中结构体的名称以及信号成员的成员名称属于无规则命名的情况时,在第一种可选的实施方式中,在步骤s201中,可以按照结构体的名称作为一级索引、信号成员的成员名称作为二级索引的形式,得到上述目标索引信息。
45.这里,除上述无规则命名的情况之外,为了提高对于目标excel文件中结构体的名称以及信号成员的成员名称进行错误排查的效率,所述结构体的名称以及所述成员名称还可以均由一个主命令字段和一个子命令字段组合而成,也即,每个结构体的名称以及每个信号成员的成员名称都可以看作是一个cmd(主命令字段)和一个smd(子命令字段)组合而成的唯一标识。
46.基于此,当目标excel文件中结构体的名称以及信号成员的成员名称属于上述有规则命名(即名称由一个主命令字段和一个子命令字段组合而成)的情况时,在第二种可选的实施方式中,还可以按照cmd主命令字段与smd子命令字段构成的二维数组的形式,来构建上述目标索引信息,此时,根据一个cmd主命令字段的具体值以及一个smd子命令字段的具体值,同样可以对目标索引信息中结构体的名称或者信号成员的成员名称进行检索与定位,以在芯片间通信的过程中,实现对于“结构体”或者“信号成员”的检索功能。
47.s202,将所述目标索引信息中包括的每一所述结构体的名称、成员名称以及成员类型分别填充至第一组通信协议代码文件中的非固定代码部分,得到完整的第一组通信协议代码文件。
48.这里,所述第一组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的检索。
49.具体的,在本技术实施例中,第一组通信协议代码文件中可以包括一个文件后缀名为.c的第一代码文件以及一个文件后缀名为.h的第二代码文件;其中,第一代码文件与第二代码文件实现的代码功能相同(即均用于在芯片间通信的过程中,帮助通信双方进行信号成员的检索),第一代码文件用于表征对内存储使用的源程序文件(即不对外公开的代码文件),第二代码文件用于表征对外调度使用的代码文件(即可以对外公开的代码文件)。
50.s203,从每一所述结构体参数信息中,获取每个信号成员的成员数据,并按照每个信号成员在所述目标索引信息中的索引位置,将每个信号成员的成员数据存放至所述目标索引信息中,得到目标参数信息。
51.具体的,结合上述步骤s201
‑ꢀ
s202可知,目标索引信息中并不包含每个信号成员具体的成员数据,因此,根据目标索引信息生成的第一组通信协议代码文件并不能帮助通信双方确定当前检索的信号成员的具体成员数据。
52.基于此,在目标索引信息搭建的索引架构的基础上,通过步骤s203的实施,可以将每个信号成员的成员数据适应性的存放至该信号成员在所述目标索引信息中的索引位置的目录下,以得到上述目标参数信息。
53.s204,将所述目标参数信息中包括的每一所述结构体的名称、成员名称、成员类型以及成员数据分别填充至第二组通信协议代码文件中的非固定代码部分,得到完整的第二组通信协议代码文件。
54.这里,所述第二组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的解析与更新。
55.具体的,在本技术实施例中,与第一组通信协议代码文件相似,第二组通信协议代
码文件中同样可以包括一个文件后缀名为.c的第三代码文件以及一个文件后缀名为.h的第四代码文件;其中,第三代码文件与第四代码文件实现的代码功能相同(即均用于在芯片间通信的过程中,帮助通信双方进行信号成员的解析与更新),第三代码文件用于表征对内存储使用的源程序文件(即不对外公开的代码文件),第四代码文件用于表征对外调度使用的代码文件(即可以对外公开的代码文件)。
56.需要说明的是,2个芯片在通信时会使用同一套自动生成的通信协议代码文件(即上述第一组通信协议代码文件以及第二组通信协议代码文件),通过宏定义区分2个芯片各自解析和发送协议接口函数,针对检索到的同一个信号成员(即成员名称相同)来说,当芯片a作为发送端时,则在芯片a一侧使用的是发送和更新数据接口函数来发送和更新该信号成员的成员数据,而芯片b作为接收端,则需要使用的是对应的解析接口函数来接收该信号成员的成员数据,反之亦然。
57.针对上述步骤s201
‑ꢀ
s204的实施过程,在执行步骤s104之后,本技术实施例可以得到两组用于实现不同功能的通信协议代码文件,此时,考虑到通信双方各自对应的芯片特点,在一种可选的实施方式中,可以直接向通信双方分别发送上述两组通信协议代码文件;在另一种可选的实施方式中,还可以按照以下检测方式,向不同类型的芯片进行有选择性的发送上述通信协议代码文件,具体的:(1)、当检测到通信双方中包括第一芯片时,将生成的所述第二组通信协议代码文件发送给所述第一芯片的维护终端。
58.这里,所述第一芯片用于表征在芯片间通信的过程中,芯片自身能够针对所述信号成员进行检索的芯片,例如,第一芯片可以是soc类型的系统级芯片。
59.(2)、当检测到通信双方中包括第二芯片时,将生成的所述第一组通信协议代码文件以及所述第二组通信协议代码文件发送给所述第二芯片的维护终端。
60.这里,所述第二芯片用于表征除所述第一芯片之外的其余类型的芯片,例如,第二芯片可以是mcu类型的芯片级芯片。
61.需要说明的是,对于上述第一芯片以及第二芯片的具体芯片类型以及具体芯片型号,本技术实施例不作任何限定。
62.针对上述步骤s101-s104的具体实施过程,在本技术实施例中,通信协议代码文件的生成过程中可能出现的报错情况可以分为以下三种类型,下面针对每种类型的报错情况分别进行详细说明,具体的:报错类型一、因文件路径与指定的项目工程路径不一致,导致的路径报错类型。
63.这里,上述步骤s101-s104所述生成方法应用于目标可执行文件(即用于生成上述通信协议代码文件的工具打包结果)中,上述报错类型一可以进一步拆分为以下两种情况,具体的:1、目标可执行文件没有存放到指定的项目工程路径下,此时,当用户错误地将目标可执行文件存放到非项目工程路径cdd_spi下时,会导致生成的通信协议代码文件不能直接替换原有的旧通信协议代码文件,此种情况容易引起无法编译最新通信协议代码文件的问题,因此,当生成通信协议代码文件时发现该问题时,则会提示路径出现异常。
64.2、目标excel文件没有存放到指定的项目工程路径下,此时,会导致目标可执行文
件无法对目标excel文件进行正常的读取与解析处理,因此,当检测到目标excel文件没有存放到指定的项目工程路径时,同样会提示路径出现异常。
65.具体的,在出现报错类型一时,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于出现异常的文件路径进行修正:当检测到所述目标excel文件和/或所述目标可执行文件的存储路径与预先指定的项目工程路径不一致时,向用户展示路径报错提示信息,以提示用户根据所述路径报错提示信息,对所述目标excel文件和/或所述目标可执行文件的存储路径进行修正。
66.报错类型二、因目标excel文件中部分源数据的内容错误,导致的数据报错类型。
67.这里,根据目标excel文件中包括的源数据的具体数据类型,上述报错类型二可以进一步拆分为以下六种情况,具体的:1、因目标excel文件中的关键字符出现异常,导致的数据报错。
68.这里,在目标excel文件中为了能够区分不同芯片使用的有效信息,用户一般需要在有规律的单元格上填写特定关键字符(即用于表征芯片类型或者芯片名称的字符),例如目标excel文件的第一行单元格中写入mcu_xxxx,则表示属于mcu需要发送出去的数据类型,此单元格中mcu就是关键字符,所以当没有检测到这些关键字符时,就需要向用户进行报错,以提示用户及时对目标excel文件的文件内容进行修正。
69.具体的,在执行步骤s102时,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于出现异常的目标excel文件进行修正:当检测到所述目标excel文件中不存在所述关键字符时,向用户展示关键字符报错提示信息,以提示用户根据所述关键字符报错提示信息,对所述目标excel文件的文件内容进行修正。
70.2、因目标excel文件中的信号成员的成员类型无法正确识别,导致的数据报错。
71.具体的,在执行步骤s103时,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于目标excel文件中成员类型出现异常的信号成员进行修正:当检测到该结构体数据中信号成员的成员类型位于预设成员类型范围之外时,向用户展示成员类型报错提示信息,以提示用户在所述目标excel文件中,根据所述成员类型报错提示信息,对该结构体数据中信号成员的成员类型进行修正。
72.这里,上述预设成员类型范围根据芯片间通信协议的制定需求确定,也即,预设成员类型范围内的成员类型即为目标excel文件中能够被正确识别的成员类型。
73.示例性的说明,作为一可选实施例,预设成员类型范围可以包括:位段类型(u8、u16、u32)、字符串类型以及动态字符串类型;其中,位段的含义为:c语言允许在一个结构体中以位为单位来指定其成员所占内存长度,这种以位为单位的成员称为“位段”;此时,上述位段类型中的u8即用于表示该信号成员所占内存长度不超过 ,u16即用于表示该信号成员所占内存长度不超过,u32即用于表示该信号成员所占内存长度不超过;以上述预设成员类型范围为例,在执行步骤s103时,当检测到当前结构体a中信号成员a1的成员类型是u64时,则确定目标excel文件中信号成员a1的成员类型出现错误,向用户展示结构体a中信号成员a1的成员类型出现错误的成员类型报错提示信息,以提示用户根据该成员类型报错提示信息,对目标excel文件中信号成员a1的成员类型进行修正。
74.3、因目标excel文件中的信号成员的成员数据与成员类型规定的正常取值范围不
符,导致的数据报错。
75.这里,结合上述成员类型部分的分析内容可知,不同的成员类型对于成员数据具有不同的数值约束条件,因此,当同一个信号成员的成员数据与成员类型规定的正常取值范围不符时,则可以确定该信号成员的成员数据出现异常,需要提示用户对目标excel文件的文件内容进行相应的修正。
76.具体的,在执行步骤s103时,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于目标excel文件中成员数据出现异常的信号成员进行修正:当检测到该结构体数据中信号成员的成员数据位于该信号成员的正常取值范围之外时,向用户展示成员数据报错提示信息,以提示用户在所述目标excel文件中,根据所述成员数据报错提示信息,对该结构体数据中该信号成员的成员数据进行修正;其中,该信号成员的正常取值范围根据该信号成员的成员类型确定。
77.示例性的说明,以结构体a中信号成员a2的成员类型是上述位段类型中的u8为例,若检测到信号成员a2的成员数据所占的内存长度超过256(即),则可以确定信号成员a2的成员数据出现异常,向用户展示结构体a中信号成员a2的成员数据出现错误的成员数据报错提示信息,以提示用户根据该成员数据报错提示信息,对目标excel文件中信号成员a2的成员数据进行修正。
78.4、当目标excel文件中包含芯片支持的物理通信通道信息时,因信号成员的成员数据与芯片支持的物理通信通道不匹配,导致的数据报错。
79.这里,在本技术实施例中,为了代码生成工具(即上述目标可执行文件)可以匹配多个物理通信方式,用户还可以在目标excel文件中每个结构体数据中添加上述物理通信通道信息,例如,芯片a的结构体数据中添加有:同时支持2路spi(serial peripheral interface,串行外设接口)协议,或者1路uart(universal asynchronous receiver/transmitter,异步收发传输器),1路spi等物理通信通道信息。
80.此时,根据添加的上述物理通信通道信息,可以区分目标excel文件中结构体数据是属于哪个物理通信通道,所以,当检测到该结构体数据不在其所属的物理通信通道的制定范围内时就会向用户进行错误提示。
81.具体的,在执行步骤s103时,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于目标excel文件中成员数据与芯片支持的物理通信通道不匹配的信号成员进行修正:当检测到该结构体数据中协议通道标识的字段数值位于该协议通道标识的制定范围之外时,向用户展示协议通道报错提示信息,以提示用户在所述目标excel文件中,根据所述协议通道报错提示信息,对该结构体数据中该协议通道标识的字段数值进行修正;其中,所述协议通道标识用于表征目标芯片支持的物理通信通道;所述目标芯片是该关键字符表征的芯片。
82.示例性的说明,以目标芯片是关键字符mcu表征的芯片为例,关键字符mcu的结构体数据中的协议通道标识为:同时支持2路spi协议;当检测到关键字符mcu的结构体数据中协议通道标识的字段数值位于“同时支持2路spi协议
”ꢀ
的制定范围之外时,则向用户展示协议通道报错提示信息,以提示用户在目标excel文件中,根据协议通道报错提示信息,对关键字符mcu的结构体数据中该协议通道标识的字段数值进行修正。
83.5、因目标excel文件中的信号成员的成员名称或者结构体的名称出现异常,导致的数据报错。
84.这里,在目标excel文件中,不同结构体的名称之间是互不相同的,同一结构体下不同的信号成员之间的信号名称也是互不相同的,也即,根据一个具体的结构体的名称,可以从目标excel文件中确定出唯一的一个结构体;根据一个具体的成员名称,可以从同一结构体数据中,确定出唯一的一个信号成员。
85.具体的,在执行步骤s103之后,作为一可选实施例,可以按照以下步骤,生成相应的报错提示信息,以提示用户对于目标excel文件中出现错误的成员名称或者结构体的名称进行修正:步骤(1)、当检测到不同结构体参数信息中出现重复的结构体的名称时,向用户展示结构体名称报错提示信息,以提示用户在所述目标excel文件中,根据所述结构体名称报错提示信息,对出现重复的结构体的名称进行修正。
86.步骤(2)、当检测到同一结构体参数信息中出现重复的成员名称时,向用户展示成员名称报错提示信息,以提示用户在所述目标excel文件中,根据所述成员名称报错提示信息,对出现重复的成员名称进行修正。
87.6、因目标excel文件中单元格数据出现乱码或者空白,导致的数据报错。
88.此时,当检测到目标excel文件中单元格数据出现乱码或者空白时,可以向用户展示单元格错误提示信息,以提示用户在所述目标excel文件中,根据所述单元格错误提示信息,对出现乱码或者空白的异常单元格数据进行修正。
89.报错类型三、因软件编译出现错误,导致的编译报错类型。
90.这里,在生成通信协议代码文件的过程中,若检测到目标可执行文件出现软件编译错误,则向用户展示编译错误提示信息,以提示用户根据编译错误提示信息,对目标excel文件的文件内容重新进行校验。
91.基于本技术实施例提供的上述通信协议代码的生成方法,通过读取目标excel文件;对目标excel文件进行解析处理,确定目标excel文件中包括的多个关键字符以及每个关键字符的字符位置;针对每一关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息;根据每一结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。通过这种方式,本技术可以通过excel文件与编程语言相结合的方式,实现芯片间通信协议代码的自动生成,提高通信协议代码的生成效率。
92.基于同一发明构思,本技术实施例中还提供了与上述实施例中通信协议代码的生成方法对应的生成装置,由于本技术实施例中的生成装置解决问题的原理与本技术上述实施例中的生成方法相似,因此,生成装置的实施可以参见前述生成方法的实施,重复之处不再赘述。
93.参照图3所示,图3示出了本技术实施例提供的一种通信协议代码的生成装置的结构示意图;所述生成装置包括:读取单元301,用于读取目标excel文件;其中,所述目标excel文件中包括制定芯片间通信协议所需要的源数据;第一处理单元302,用于对所述目标excel文件进行解析处理,确定所述目标excel
文件中包括的多个关键字符以及每个关键字符的字符位置;其中,所述关键字符用于表征与芯片类型或者芯片名称相关的字符;第二处理单元303,用于针对每一所述关键字符,将该关键字符与相邻关键字符之间所夹的数据行内容作为该关键字符的结构体数据,并对该结构体数据进行解析处理,得到该关键字符的结构体参数信息;其中,每一所述结构体参数信息中至少包括:结构体的名称、结构体下包括的多个信号成员的成员名称、每个信号成员的成员类型以及成员数据;代码生成单元304,用于根据每一所述结构体参数信息,生成用于实现芯片间通信的通信协议代码文件。
94.在一种可选的实施方式中,代码生成单元304,具体用于:从每一所述结构体参数信息中,获取每一所述结构体的名称以及该结构体下包括的多个信号成员的成员名称以及成员类型作为目标索引信息;将所述目标索引信息中包括的每一所述结构体的名称、成员名称以及成员类型分别填充至第一组通信协议代码文件中的非固定代码部分,得到完整的第一组通信协议代码文件;其中,所述第一组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的检索;从每一所述结构体参数信息中,获取每个信号成员的成员数据,并按照每个信号成员在所述目标索引信息中的索引位置,将每个信号成员的成员数据存放至所述目标索引信息中,得到目标参数信息;将所述目标参数信息中包括的每一所述结构体的名称、成员名称、成员类型以及成员数据分别填充至第二组通信协议代码文件中的非固定代码部分,得到完整的第二组通信协议代码文件;其中,所述第二组通信协议代码文件用于在芯片间通信的过程中,帮助通信双方进行信号成员的解析与更新。
95.在一种可选的实施方式中,在所述对所述目标excel文件进行解析处理时,第一处理单元302,还用于:当检测到所述目标excel文件中不存在所述关键字符时,向用户展示关键字符报错提示信息,以提示用户根据所述关键字符报错提示信息,对所述目标excel文件的文件内容进行修正。
96.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,第二处理单元303,还用于:当检测到该结构体数据中信号成员的成员类型位于预设成员类型范围之外时,向用户展示成员类型报错提示信息,以提示用户在所述目标excel文件中,根据所述成员类型报错提示信息,对该结构体数据中信号成员的成员类型进行修正;其中,所述预设成员类型范围根据芯片间通信协议的制定需求确定。
97.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,第二处理单元303,还用于:当检测到该结构体数据中信号成员的成员数据位于该信号成员的正常取值范围之外时,向用户展示成员数据报错提示信息,以提示用户在所述目标excel文件中,根据所述成员数据报错提示信息,对该结构体数据中该信号成员的成员数据进行修正;其中,该信号成员的正常取值范围根据该信号成员的成员类型确定。
98.在一种可选的实施方式中,在所述对该结构体数据进行解析处理时,第二处理单元303,还用于:当检测到该结构体数据中协议通道标识的字段数值位于该协议通道标识的制定范围之外时,向用户展示协议通道报错提示信息,以提示用户在所述目标excel文件中,根据所述协议通道报错提示信息,对该结构体数据中该协议通道标识的字段数值进行修正;其中,所述协议通道标识用于表征目标芯片支持的物理通信通道;所述目标芯片是该关键字符表征的芯片。
99.在一种可选的实施方式中,所述结构体的名称以及所述成员名称均由一个主命令字段和一个子命令字段组合而成;在所述生成用于实现芯片间通信的通信协议代码文件之前,代码生成单元304,还用于:当检测到不同结构体参数信息中出现重复的结构体的名称时,向用户展示结构体名称报错提示信息,以提示用户在所述目标excel文件中,根据所述结构体名称报错提示信息,对出现重复的结构体的名称进行修正;当检测到同一结构体参数信息中出现重复的成员名称时,向用户展示成员名称报错提示信息,以提示用户在所述目标excel文件中,根据所述成员名称报错提示信息,对出现重复的成员名称进行修正。
100.在一种可选的实施方式中,所述生成装置应用于目标可执行文件中,所述生成装置还包括:路径检测单元,用于当检测到所述目标excel文件和/或所述目标可执行文件的存储路径与预先指定的项目工程路径不一致时,向用户展示路径报错提示信息,以提示用户根据所述路径报错提示信息,对所述目标excel文件和/或所述目标可执行文件的存储路径进行修正。
101.在一种可选的实施方式中,在所述生成用于实现芯片间通信的通信协议代码文件之后,代码生成单元304,还用于:当检测到通信双方中包括第一芯片时,将生成的所述第二组通信协议代码文件发送给所述第一芯片的维护终端;其中,所述第一芯片用于表征在芯片间通信的过程中,芯片自身能够针对所述信号成员进行检索的芯片;当检测到通信双方中包括第二芯片时,将生成的所述第一组通信协议代码文件以及所述第二组通信协议代码文件发送给所述第二芯片的维护终端;其中,所述第二芯片用于表征除所述第一芯片之外的其余类型的芯片。
102.如图4所示,本技术实施例提供了一种计算机设备400,用于执行本技术中的通信协议代码的生成方法,该设备包括存储器401、处理器402及存储在该存储器401上并可在该处理器402上运行的计算机程序,其中,上述处理器402执行上述计算机程序时实现上述通信协议代码的生成方法的步骤。
103.具体地,上述存储器401和处理器402可以为通用的存储器和处理器,这里不做具体限定,当处理器402运行存储器401存储的计算机程序时,能够执行上述通信协议代码的生成方法。
104.对应于本技术中的通信协议代码的生成方法,本技术实施例还提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机程序,该计算机程序被处理器运行
时执行上述通信协议代码的生成方法的步骤。
105.具体地,该存储介质能够为通用的存储介质,如移动磁盘、硬盘等,该存储介质上的计算机程序被运行时,能够执行上述通信协议代码的生成方法。
106.在本技术所提供的实施例中,应该理解到,所揭露系统和方法,可以通过其它的方式实现。以上所描述的系统实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,又例如,多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些通信接口,系统或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。
107.所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
108.另外,在本技术提供的实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。
109.所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本技术各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read-only memory, rom)、随机存取存储器(random access memory ,ram)、磁碟或者光盘等各种可以存储程序代码的介质。
110.应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释,此外,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
111.最后应说明的是:以上所述实施例,仅为本技术的具体实施方式,用以说明本技术的技术方案,而非对其限制,本技术的保护范围并不局限于此,尽管参照前述实施例对本技术进行了详细的说明,本领域的普通技术人员应当理解:任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,其依然可以对前述实施例所记载的技术方案进行修改或可轻易想到变化,或者对其中部分技术特征进行等同替换;而这些修改、变化或者替换,并不使相应技术方案的本质脱离本技术实施例技术方案的精神和范围。都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1