CN115048108A - 一种代码自动生成的方法、系统、设备及存储介质 - Google Patents
一种代码自动生成的方法、系统、设备及存储介质 Download PDFInfo
- Publication number
- CN115048108A CN115048108A CN202210737659.XA CN202210737659A CN115048108A CN 115048108 A CN115048108 A CN 115048108A CN 202210737659 A CN202210737659 A CN 202210737659A CN 115048108 A CN115048108 A CN 115048108A
- Authority
- CN
- China
- Prior art keywords
- file
- layer
- module
- message signal
- signal information
- 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
- G06F8/00—Arrangements for software engineering
- G06F8/40—Transformation of program code
- G06F8/41—Compilation
- G06F8/44—Encoding
- G06F8/447—Target code generation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种代码自动生成的方法、系统、设备及存储介质,方法包括对DBC文件进行解析,获取报文信号信息;分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;根据报文信号信息和各层次文件进行Autosar模块的功能配置;生成各层次的目标代码文件。通过对客户的DBC文件进行解析,获取报文信号信息,分别结合Autosar架构中的ECU抽象层、服务层以及RTE层中的实际需求,自动生成各个层次的目标代码文件,将原本需要通过人工大量进行配置和构建的基础代码,实现自动生成,提高了基础软件的开发和集成速度,有效的降低了软件的开发周期或者变更周期。
Description
技术领域
本发明属于Autosar技术领域,涉及一种代码自动生成的方法、系统、设备及存储介质。
背景技术
Autosar架构拥有层次化、模块化、配置化、接口标准化的优点,目前越来越多的控制器采用Autosar架构进行控制器软件框架的构建。从结构流程简单的原开发模式升级为Autosar架构,对其输入和输出的文件内容要求不变,增强了软件的可移植性,但同时也增加了软件框架的复杂度。需要软件工程师投入更多的人力和时间进行软件的架构和功能开发。在进行基础软件的ECU抽象层、服务层以及RTE层开发时,软件工程师常常需要自行根据DBC文件等信息文件手动进行上千条模块选项的配置、调用接口的搭建、接口函数封装以及模型搭建等工作,不仅需要的软件开发或变更周期长,要求的技术门槛极高,而且由于工作量极大且存在机械性重复的操作,存在一定的开发失误的风险。
发明内容
本发明的目的在于解决现有技术中需要手动进行上千条模块选项的配置、调用接口的搭建和接口函数封装等工作,使软件的开发或者变更周期长的问题,提供一种代码自动生成的方法、系统、设备及存储介质。
为达到上述目的,本发明采用以下技术方案予以实现:
一种代码自动生成的方法,包括以下步骤:
对DBC文件进行解析,获取报文信号信息;
分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
根据报文信号信息和各层次文件进行Autosar模块的功能配置;
分别生成ECU抽象层、服务层和RTE层的目标代码文件。
本发明的进一步改进在于:
所述ECU抽象层中目标代码文件为目标配置文件,目标配置文件的生成包括以下步骤:
获取并解析CANIF模块的CAN通道配置文件;
获取CAN通道配置文件格式要求;
根据CAN通道配置文件格式要求匹配报文信号信息与CAN通道配置文件;
生成目标配置文件,实现CAN通道的自动配置。
所述服务层中的目标代码文件为回调函数实体文件和目标arxml文件,具体包括以下步骤:
获取arxml文件格式结构;
获取arxml文件中回调函数实体的函数名信息;
配置函数体返回类型和参数等选项;
创建回调函数实体文件;
对服务层中各模块的功能进行配置或更改;
根据arxml文件格式结构和各模块功能配置或更改的内容生成目标arxml文件。
所述目标arxml文件和回调函数实体文件是基于Autosar工具生成的基础软件实现的。
所述RTE层中的目标代码文件为接口函数文件,接口函数文件的生成包括以下步骤:
获取基础软件层变量;
根据报文信号信息,声明RTE层信号变量;
对报文信号信息进行处理,实现基础软件层变量与RTE层信号变量的数据转换;
创建接口函数文件。
所述报文信号信息包括报文ID、报文信号名称、信号长度、位置、系数、偏移量和周期。
所述目标模型的生成采用MATLAB实现。
一种代码自动生成的系统,包括:
数据解析模块,所述数据解析模块用于对DBC文件进行解析,获取报文信号信息;
数据获取模块,所述数据获取模块用于分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
数据配置模块,所述数据配置模块用于根据报文信号信息和各层次文件进行Autosar模块的功能配置;
目标代码生成模块,所述目标代码生成模块用于分别生成ECU抽象层、服务层和RTE层的目标代码文件。
一种设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如前项任一项所述方法的步骤。
一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如前项任一项所述方法的步骤。
与现有技术相比,本发明具有以下有益效果:
通过对客户的DBC文件进行解析,获取报文信号信息,分别结合Autosar架构中的ECU抽象层、服务层以及RTE层中的实际需求,自动生成各个层次的目标代码文件,将原本需要通过人工大量进行配置和构建的基础代码,实现自动生成,提高了基础软件的开发和集成速度,有效的降低了软件的开发周期或者变更周期。
附图说明
为了更清楚的说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。
图1为本发明的代码自动生成的方法流程示意图;
图2为本发明的ECU抽象层目标代码文件生成示意图;
图3为本发明的服务层目标代码文件生成示意图;
图4为本发明的RTE层目标代码文件生成示意图;
图5为本发明中一种代码自动生成的系统示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。
因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。
在本发明实施例的描述中,需要说明的是,若出现术语“上”、“下”、“水平”、“内”等指示的方位或位置关系为基于附图所示的方位或位置关系,或者是该发明产品使用时惯常摆放的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。此外,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
此外,若出现术语“水平”,并不表示要求部件绝对水平,而是可以稍微倾斜。如“水平”仅仅是指其方向相对“竖直”而言更加水平,并不是表示该结构一定要完全水平,而是可以稍微倾斜。
在本发明实施例的描述中,还需要说明的是,除非另有明确的规定和限定,若出现术语“设置”、“安装”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以根据具体情况理解上述术语在本发明中的具体含义。
下面结合附图对本发明做进一步详细描述:
参见图1,为本发明中一种代码自动生成的方法流程示意图,具体包括以下步骤:
S1,对DBC文件进行解析,获取报文信号信息;
S2,分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
S3,根据报文信号信息和各层次文件进行Autosar模块的功能配置;
S4,分别生成ECU抽象层、服务层和RTE层的目标代码文件。
参见图2,在ECU抽象层中,CAN通道配置是变更需求量最大的模块,ECU抽象层中目标配置文件的生成包括以下步骤:
S1,获取并解析CANIF模块的CAN通道配置文件;
S2,获取CAN通道配置文件格式要求;
S3,根据CAN通道配置文件格式要求匹配报文信号信息与CAN通道配置文件;
S4,生成目标配置文件,实现CAN通道的自动配置。
参见图3,在服务层中包含多个功能模块,由于每一个功能模块中都包含有数百个配置选项,这些配置选项的内容信息体现在与模块相对应的arxml文件中,因此需要将arxml文件中的内容与配置项信息一一对应。与报文相关的配置,将应用层变量填充至arxml文件中。与报文无关的配置内容,将配置项按照实际使用情况分为默认配置选项、通用配置选项以及重点配置选项,进行配置后生成最终的arxml文件。针对模块之间的调用关系,服务层中的目标代码文件为回调函数实体文件和目标arxml文件,具体包括以下步骤:
S1,获取arxml文件格式结构;
S2,获取arxml文件中回调函数实体的函数名信息;
S3,配置函数体返回类型和参数等选项;
S4,创建回调函数实体文件;
S5,对服务层中各模块的功能进行配置或更改;
S6,根据arxml文件格式结构和各模块功能配置或更改的内容生成目标arxml文件。
参见图4,RTE层中的目标代码文件为接口函数文件,接口函数文件的生成包括以下步骤:
S1,获取基础软件层变量;
S2,对报文信号信息进行处理,生成RTE层信号变量;
S3,对报文信号信息进行处理,实现基础软件层变量与RTE层信号变量的数据转换;
S4,创建接口函数文件。
通过解析DBC文件得到的报文ID、报文信号名称、信号长度、位置、系数、偏移量和周期等信息,在函数文件中创建每一条报文的接口函数,实现接收或发送报文中信号量的解析或者报文数据域的组合,即基础软件层变量与RTE层信号变量值的数据转换,并同时创建接口函数文件的头文件。数据转换的逻辑在接收和发送报文中不同,在接收报文中,是将一组有顺序的数据组合,根据字节的排序,进行数据的分割、取舍、移位、乘除、加减等操作的组合转换为信号量。计算得到的信号量为RTE层信号变量,这便实现了接收报文在基础软件层与RTE之间的数据转换。发送报文则是反向的类似操作。这些操作以代码的形式,将其中的逻辑实现在接口函数文件中。以接收报文为例,在RTE层将解析得到的信号量(即应RTE层信号变量)传给应用层时,应用层同样需要创建与之对应的变量对象进行接洽,simulink模型和变量声明文件就是起到这个作用。通过自动创建的方式,帮助工程师将根据RTE层传递上来的变量在应用层进行变量的创建和声明。这样应用工程师在应用层就可以直接使用变量进行逻辑开发。发送报文同样,simulink模型和变量声明文件定义了应用层要传递给RTE层的信号变量,实现两个层次之间的接洽。simulink模型主要根据应用层与RTE层之间传递的信号量进行搭建,信号的名称和数目则可以通过解析DBC得到。变量声明文件则是对应用层与RTE层之间传递的变量进行的变量声明作用,包含了信号量的名称、界限值、收发类型、数据类型等信息。
参见图5,为本发明中一种代码自动生成的系统,包括:
数据解析模块,所述数据解析模块用于对DBC文件进行解析,获取报文信号信息;
数据获取模块,所述数据获取模块用于分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
数据配置模块,所述数据配置模块用于根据报文信号信息和各层次文件进行Autosar模块的功能配置;
目标代码生成模块,所述目标代码生成模块用于分别生成ECU抽象层、服务层和RTE层的目标代码文件。
本发明一实施例提供一种终端设备。该实施例的终端设备包括:处理器、存储器以及存储在所述存储器中并可在所述处理器上运行的计算机程序。所述处理器执行所述计算机程序时实现上述各个代码自动生成方法实施例中的步骤。或者,所述处理器执行所述计算机程序时实现上述各装置实施例中各模块/单元的功能。
所述计算机程序可以被分割成一个或多个模块/单元,所述一个或者多个模块/单元被存储在所述存储器中,并由所述处理器执行,以完成本发明。
所述代码自动生成装置/终端设备可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。所述代码自动生成装置/终端设备可包括,但不仅限于,处理器、存储器。
所述处理器可以是中央处理单元(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
所述存储器可用于存储所述计算机程序和/或模块,所述处理器通过运行或执行存储在所述存储器内的计算机程序和/或模块,以及调用存储在存储器内的数据,实现所述代码自动生成装置/终端设备的各种功能。
所述代码自动生成装置/终端设备集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-OnlyMemory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
Claims (10)
1.一种代码自动生成的方法,其特征在于,包括以下步骤:
对DBC文件进行解析,获取报文信号信息;
分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
根据报文信号信息和各层次文件进行Autosar模块的功能配置;
分别生成ECU抽象层、服务层和RTE层的目标代码文件。
2.如权利要求1所述的一种代码自动生成的方法,其特征在于,所述ECU抽象层中目标代码文件为目标配置文件,目标配置文件的生成包括以下步骤:
获取并解析CANIF模块的CAN通道配置文件;
获取CAN通道配置文件格式要求;
根据CAN通道配置文件格式要求匹配报文信号信息与CAN通道配置文件;
生成目标配置文件,实现CAN通道的自动配置。
3.如权利要求1所述的一种代码自动生成的方法,其特征在于,所述服务层中的目标代码文件为回调函数实体文件和目标arxml文件,具体包括以下步骤:
获取arxml文件格式结构;
获取arxml文件中回调函数实体的函数名信息;
配置函数体返回类型和参数等选项;
创建回调函数实体文件;
对服务层中各模块的功能进行配置或更改;
根据arxml文件格式结构和各模块功能配置或更改的内容生成目标arxml文件。
4.如权利要求3所述的一种代码自动生成的方法,其特征在于,所述目标arxml文件和回调函数实体文件是基于Autosar工具生成的基础软件实现的。
5.如权利要求1所述的一种代码自动生成的方法,其特征在于,所述RTE层中的目标代码文件为接口函数文件,接口函数文件的生成包括以下步骤:
获取基础软件层变量;
根据报文信号信息,声明RTE层信号变量;
对报文信号信息进行处理,实现基础软件层变量与RTE层信号变量的数据转换;
创建接口函数文件。
6.如权利要求1所述的一种代码自动生成的方法,其特征在于,所述报文信号信息包括报文ID、报文信号名称、信号长度、位置、系数、偏移量和周期。
7.如权利要求1所述的一种代码自动生成的方法,其特征在于,所述目标模型的生成采用MATLAB实现。
8.一种代码自动生成的系统,其特征在于,包括:
数据解析模块,所述数据解析模块用于对DBC文件进行解析,获取报文信号信息;
数据获取模块,所述数据获取模块用于分别获取ECU抽象层中的CAN通道配置文件、服务层中各模块的arxml文件;
数据配置模块,所述数据配置模块用于根据报文信号信息和各层次文件进行Autosar模块的功能配置;
目标代码生成模块,所述目标代码生成模块用于分别生成ECU抽象层、服务层和RTE层的目标代码文件。
9.一种设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-7任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-7任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210737659.XA CN115048108A (zh) | 2022-06-27 | 2022-06-27 | 一种代码自动生成的方法、系统、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210737659.XA CN115048108A (zh) | 2022-06-27 | 2022-06-27 | 一种代码自动生成的方法、系统、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115048108A true CN115048108A (zh) | 2022-09-13 |
Family
ID=83163173
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210737659.XA Pending CN115048108A (zh) | 2022-06-27 | 2022-06-27 | 一种代码自动生成的方法、系统、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115048108A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301881A (zh) * | 2023-02-01 | 2023-06-23 | 浙江万里扬新能源驱动有限公司杭州分公司 | 一种基于dbc的协议层代码生成方法及生成工具 |
-
2022
- 2022-06-27 CN CN202210737659.XA patent/CN115048108A/zh active Pending
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116301881A (zh) * | 2023-02-01 | 2023-06-23 | 浙江万里扬新能源驱动有限公司杭州分公司 | 一种基于dbc的协议层代码生成方法及生成工具 |
CN116301881B (zh) * | 2023-02-01 | 2024-05-10 | 浙江万里扬新能源驱动有限公司杭州分公司 | 一种基于dbc的协议层代码生成方法及生成工具 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113065656B (zh) | 一种规则引擎配置方法、装置、服务器及可读存储介质 | |
CN109460223B (zh) | 一种api网关管理系统及其方法 | |
CN114331416A (zh) | 数据处理的方法、装置、电子设备及存储介质 | |
CN115048108A (zh) | 一种代码自动生成的方法、系统、设备及存储介质 | |
CN109062906B (zh) | 程序语言资源的翻译方法及装置 | |
CN110955715A (zh) | Erp系统和目标平台的数据转换方法、装置以及电子设备 | |
CN112631649A (zh) | 智能合约管理方法、装置、终端设备及介质 | |
CN103425692A (zh) | 数据导出方法和装置 | |
CN113485939A (zh) | 软件系统错误码管理方法、装置、电子设备及存储介质 | |
CN110941463B (zh) | 一种遥感卫星数据预处理多级产品自驱动系统 | |
CN103914304B (zh) | 一种基于sap平台的不同结构类型参数转换方法 | |
CN115695589A (zh) | 一种自动生成can报文解析代码的方法、系统、装置及介质 | |
CN115712411A (zh) | 一种自定义流水号的生成方法及装置 | |
CN115114321A (zh) | 一种动态查询方法及系统 | |
CN114090074A (zh) | 运行环境的配置方法和装置、存储介质及电子装置 | |
CN109614656B (zh) | 一种用于OpenGL显示列表调用的TLM系统 | |
CN114564925A (zh) | 报表生成方法、装置、电子设备及可读存储介质 | |
CN110837537B (zh) | 订单数据同步方法、装置、计算机可读存储介质及服务器 | |
CN116560722B (zh) | 运维流程处理方法、装置、电子设备及存储介质 | |
CN111258844B (zh) | 基于Lua脚本的动态复杂报警实现方法 | |
CN116594960B (zh) | 描述性文件格式转换方法、装置、计算机设备及存储介质 | |
CN113129049B (zh) | 用于模型训练和应用的文件配置方法和系统 | |
CN110018458B (zh) | 星载sar成像接收通道数据转复数据功能模块设计方法 | |
CN116185848A (zh) | 开发系统的功能测试方法及装置 | |
CN116029349A (zh) | 模型的部署方法、装置及电子设备 |
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 |