一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种软件代码一键集成方法及系统与流程

2022-05-31 23:14:13 来源:中国专利 TAG:


1.本发明属于新能源汽车动力电池管理系统技术领域,具体涉及软件代码一键集成技术。


背景技术:

2.自从软件定义汽车的趋势开始出现,在新能源汽车内部软件变得越来越重要。随着软件的更新,性能的拓展升级,人软件定义汽车的发展方向越来越明晰,为了更好的服务客户,新能源汽车软件迭代更新非常频繁。
3.目前新能源汽车行业电池管理系统软件最常用的开发方式是基于matlab进行应用层程序的开发,然后将matlab自动生成的代码与已开发的底层软件通过编译器进行编译生成目标代码,同时还需通过a2l生成工具进行标定文件的生成,此过程涉及多个步骤,如果靠工程师手动操作,严重影响了开发效率,且不能保证在每个环节不出错。
4.公开号为cn107656731a的中国专利文献公开了名称为“一种matlab模型的一键编译方法”的技术,通过调用matlab的api函数,将标定量制作成matlab文件,在脚本调用此文件实现参数的加载,调用matlab的api函数rtwbuild检查编译模型以及actxserver函数调用其他工具完成特定的操作,该技术存在的问题为:第一,将参数加载及代码集成合成到同一个方法中,每次编译的时候都需要进行参数加载,当不需要修改参数时,造成重复加载参数,执行效率低;第二,工具在调用外部编译器的时候需要打开编译器工程并烤白c文件和h文件到工程中,调用过程比较复杂;第三,工具在编辑a2l文件时,调用了外部a2l生成软件(如vector)进行a2l的生成,调用过程比较复杂,实现难度大。


技术实现要素:

5.本发明的目的是提供一种软件代码一键集成方法及系统,解决的技术问题:第一,目前没有一键代码集成方法可以完成重复而又频繁的代码集成工作;第二,现有技术中存在一键编译方法,但是存在以下问题:a、将参数加载及代码集成合成到同一个方法中,每次编译的时候都需要进行参数加载,当不需要修改参数时,造成重复加载参数,执行效率低;b、工具在调用外部编译器的时候需要打开编译器工程并拷贝c文件和h文件到工程中,调用过程比较复杂;c、工具在编辑a2l文件时,调用了外部a2l生成软件(如vector)进行a2l的生成,调用过程比较复杂,实现难度大。
6.为解决上述技术问题,本发明采用的技术方案为:一种电池管理系统软件代码一键集成方法,包括的步骤为:s01:更新编译环境中的应用层软件源代码及底层软件源代码;s02:调用所述编译环境中的预设好的build文件;s03:编译过程中判断是否已编译完成或者编译报错,如已经完成编译或者中止编
译,执行下一步;s04:判断所述编译环境中是否存在目标文件,如果存在,执行下一步;s05:进行标定接口a2l文件的生成;s06:基于所述目标文件及a2l文件匹配a2l文件中每个变量及参数的地址;s07:将匹配地址后的所述a2l文件及所有目标文件拷贝至指定地址;s08:完成目标文件生成。
7.优选地,在所述s01中,所述编译环境是预先建立的,所述编译环境基于windriver编译器,所述编译环境包括编译生成目标代码的编译选项文件makefile、编译调用批处理文件build.bat及应用层软件源代码,所述编译环境还包括底层软件源代码或obj文件,所述应用层软件源代码和底层软件源代码分文件夹存放;所述应用层软件源代码由matlab自动生成,所述matlab生成代码时配置同时生成接口a2l文件;所述更新的流程为:首先将编译环境中的应用层软件源代码文件夹和底层软件源代码文件夹下的所有文件删除,然后调用批处理文件将所有生成的应用层软件源代码和底层软件源代码拷贝到编译环境的应用层软件源代码文件夹和底层软件源代码文件夹。
8.优选地,在所述s02中,所述build文件根据配置的编译选项对所述编译环境下的应用层软件源代码及底层软件源代码进行编译,生成目标文件elf文件、map文件。
9.优选地,在所述s03中,如否,则一直等待编译结果。
10.优选地,在所述s04中,所述目标文件为烧录在硬件中的机器代码,包括elf文件、s19文件、map文件;如否,则提示目标文件生成失败。
11.优选地,在所述s05中,调用rtw.asap2mergemdlrefs函数将模型自动生成代码时生成的多个a2l文件合并为一个a2l文件。
12.优选地,在所述s06中,调用rtw.asap2setaddress函数匹配所述a2l文件中每个变量及参数的地址。
13.本发明还提供一种软件代码一键集成系统,包括:更新模块,用于更新编译环境中的应用层软件源代码及底层软件源代码;调用模块,用于调用所述编译环境中的预设好的build文件;第一判断模块,用于编译过程中判断是否已编译完成或者编译报错,如已经完成编译或者中止编译,执行第二判断模块;第二判断模块,用于判断所述编译环境中是否存在目标文件,如果存在,执行生成模块;生成模块,用于进行标定接口a2l文件的生成;
匹配模块,用于基于所述目标文件及a2l文件匹配a2l文件中每个变量及参数的地址;拷贝模块,用于将匹配地址后的所述a2l文件及所有目标文件拷贝至指定地址。
14.优选地,在所述更新模块中,所述编译环境是预先建立的,所述编译环境基于windriver编译器,所述编译环境包括编译生成目标代码的编译选项文件makefile、编译调用批处理文件build.bat及应用层软件源代码,所述编译环境还包括底层软件源代码或obj文件,所述应用层软件源代码和底层软件源代码分文件夹存放;所述应用层软件源代码由matlab自动生成,所述matlab生成代码时配置同时生成接口a2l文件;所述更新的流程为:首先将编译环境中的应用层软件源代码文件夹和底层软件源代码文件夹下的所有文件删除,然后调用批处理文件将所有生成的应用层软件源代码和底层软件源代码拷贝到编译环境的应用层软件源代码文件夹和底层软件源代码文件夹;在所述调用模块中,所述build文件根据配置的编译选项对所述编译环境下的应用层软件源代码及底层软件源代码进行编译,生成目标文件elf文件、map文件;在所述第一判断模块中,如否,则一直等待编译结果;在所述第二判断模块中,所述目标文件为烧录在硬件中的机器代码,包括elf文件、s19文件、map文件;在所述第二判断模块中,如否,则目标文件生成失败。
15.优选地,在所述生成模块中,调用rtw.asap2mergemdlrefs函数将模型自动生成代码时生成的多个a2l文件合并为一个a2l文件;在所述匹配模块中,调用rtw.asap2setaddress函数匹配所述a2l文件中每个变量及参数的地址。
16.通过采用上述技术方案,本发明可达到的有益技术效果为:第一,本发明未包含模型参数修改及自动生成代码功能,该部分功能可由matlab软件自动实现,当不需要进行参数修改及代码生成时,减少了函数调用,提高代码集成效率;第二,本发明首先建立好通用的代码集成编译环境,在一键代码集成时将更新后的文件拷贝到编译环境里,不需要每次调用时再重新建立集成编译环境,提高代码集成效率;第三,本发明在编译过程中,实时判断编译是否完成或者编译是否中止,在编译完成或者编译中止时,立即进入下一步骤,提升编译效率;第四,本发明在编译完成后对是否编译成功进行了判断,并通过消息的方式提示用户编译结果,用户可直接观测编译结果;第五,本发明在生成 a2l接口文件时,使用了matlab自带的函数进行a2l文件编辑,不需要调用外部进行,操作简单,便于实现。
17.第六,本发明在完成编译后,将生成的a2l文件及目标文件拷贝到软件发布路径下(指定地址),并提示目标文件已生成(即完成目标文件生成),方便用户直接使用目标文件。
18.第七,通过使用本发明提供的方法,工程师不用做重复而又频繁的代码集成工作,节省人力资源。
附图说明
19.图1为本发明流程图。
具体实施方式
20.下面结合附图对本发明作进一步说明。
21.如图1所示,为本发明的流程图,本发明提供了软件代码一键集成方法。
22.本实施例以电池系统的软件代码为集成对象进行说明。
23.电池系统软件包括底层软件和应用层软件,底层软件和应用层软件分别由不同的部门进行开发,最后由应用层软件开发部门进行代码集成。应用层开发实用的工具为matlab,代码集成所使用的编译器为windriver。
24.首先必须由底层开发人员建立代码编译环境。基于windriver编译器的编译环境通过批处理文件的方式调用build相关选项,其中包括编译生成目标代码的编译选项文件makefile以及编译调用批处理文件build.bat等,同时编译环境里还包括应用层软件源代码、底层软件源代码或obj文件,应用层软件代码及底层软件源代码分文件夹存放,方便代码编译时对代码进行分类更新,该编译环境建立好后,可供一键代码集成工具直接调用,后期多次频繁的代码集成,无需每次都重新建立编译环境。
25.基于上述建立的代码编译环境,本发明提出了一种电池管理系统软件代码一键集成方法,包括的步骤为:第一步,更新编译环境中的应用层软件源代码及底层软件源代码。
26.具体地,执行第一步时,底层软件源代码文件或obj文件已经准备好,应用层软件源代码已经由matlab自动生成代码,值得注意的是,matlab自动生成代码时需要在模型设置-》代码生成-》接口文件路径下将asap2接口复选框勾上,目的是在生成代码的同时生成a2l接口文件,先将编译环境中应用层软件源代码文件夹和底层软件源代码文件夹下的所有文件删除,然后调用批处理文件将所有生成的应用层代码和底层软件源代码拷贝到编译环境的应用层软件源代码文件夹和底层软件源代码文件夹。
27.第二步,调用编译环境中的预设好的build文件。
28.具体地,调用预设的编译环境中的build文件,build文件会根据之前配置号的编译选项等对编译环境下的源文件进行编译,生成目标文件elf文件、map文件等。
29.第三步,编译过程中判断是否已编译完成或者编译报错,如已经完成编译或者中止编译,执行下一步。
30.具体地,编译过程中,根据build文件的返回结果,判断是否已经完成编译或者出现错误中止编译,如果已经完成编译或者中止编译,执行下一步,否则一直等待编译结果。
31.第四步,判断编译环境中是否存在目标文件,如果存在,执行下一步。
32.具体地,目标文件为可以直接烧录到硬件中的机器代码,包括elf文件、s19文件、map文件等。如果存在目标文件就证明编译器正常编译完成,,执行下一步,否则就是编译过程中出错导致编译中止,提示“目标文件生成错误”(即目标文件生成失败)。
33.第五步,进行标定接口a2l文件的生成。
34.具体地,在模型自动生成代码时,使用模型引用的方式会使得每个被引用的子模型都会生成一个独立的a2l文件,本实施例中,电池管理系统软件被引用的模型有5个,就会生成5个模型对应的a2l文件,调用rtw.asap2mergemdlrefs函数将模型自动生成代码时生成的5个a2l文件合并为一个a2l文件。
35.第六步,基于目标文件及a2l文件匹配a2l文件中每个变量及参数的地址。
36.具体地,调用rtw.asap2setaddress函数匹配a2l文件中每个变量及参数的地址。
37.第七步,将匹配地址后的a2l文件及所有目标文件拷贝至指定地址。
38.具体地,通过copy函数拷贝到软件发布的路径下。
39.第八步,提示“目标文件生成成功”(即完成目标文件生成)。
40.具体地,提示“目标文件生成成功”的同时并提示目标文件存放地址,方便用户直接使用。
41.本发明适用于基于matlab工具开发的应用层软件及底层软件的集成,旨在使用标准的工具完成重复而又频繁的代码集成工作,提高代码集成效率。
42.本发明还提供一种软件代码一键集成系统,其中,集成对象为电池管理系统的软件代码,该集成系统包括:更新模块,用于更新编译环境中的应用层软件源代码及底层软件源代码;调用模块,用于调用编译环境中的预设好的build文件;第一判断模块,用于编译过程中判断是否已编译完成或者编译报错,如已经完成编译或者中止编译,执行第二判断模块;第二判断模块,用于判断编译环境中是否存在目标文件,如果存在,执行生成模块;生成模块,用于进行标定接口a2l文件的生成;匹配模块,用于基于目标文件及a2l文件匹配a2l文件中每个变量及参数的地址;拷贝模块,用于将匹配地址后的a2l文件及所有目标文件拷贝至指定地址;提示模块,用于提示“目标文件生成成功”(即完成目标文件生成)。
43.优选地,在更新模块中,编译环境是预先建立的,编译环境基于windriver编译器,编译环境包括编译生成目标代码的编译选项文件makefile、编译调用批处理文件build.bat及应用层软件源代码,编译环境还包括底层软件源代码或obj文件,应用层软件源代码和底层软件源代码分文件夹存放;应用层软件源代码由matlab自动生成,matlab生成代码时配置同时生成接口a2l文件;更新的流程为:首先将编译环境中的应用层软件源代码文件夹和底层软件源代码文件夹下的所有文件删除,然后调用批处理文件将所有生成的应用层软件源代码和底层软件源代码拷贝到编译环境的应用层软件源代码文件夹和底层软件源代码文件夹;在调用模块中,build文件根据配置的编译选项对编译环境下的应用层软件源代码及底层软件源代码进行编译,生成目标文件elf文件、map文件;在第一判断模块中,如否,则一直等待编译结果;
在第二判断模块中,目标文件为烧录在硬件中的机器代码,包括elf文件、s19文件、map文件;在第二判断模块中,如否,则提示“目标文件生成错误”(即目标文件生成失败)。
44.具体地,在生成模块中,调用rtw.asap2mergemdlrefs函数将模型自动生成代码时生成的多个a2l文件合并为一个a2l文件;在匹配模块中,调用rtw.asap2setaddress函数匹配a2l文件中每个变量及参数的地址。
45.需要说明的是在没有脱离本发明构思的前提下任何显而易见的替换均在本发明的保护范围之内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献