代码文件的生成方法、装置、设备、车辆、介质及产品与流程
本公开涉及车辆,尤其涉及一种代码文件的生成方法、装置、设备、车辆、介质及产品。
背景技术:
1、在汽车电子控制开发领域,matlab/simulink 是基于模型设计开发平台(model-based design,mbd),依托图形化建模完成车辆控制算法设计,可将模型自动生成 c++工程代码,是车载算法开发的标准方案。当下汽车电子架构全面转向软件定义汽车,面向服务架构(service-oriented architecture ,soa)成为车载软件开发主流方案,依托可扩展面向服务中间件(scalable service-oriented middleware over ip,some/ip)通信协议拆解电子控制单元(electronic control unit,ecu)硬件功能为标准化服务接口,弱化软硬件绑定,提升整车软件迭代与扩展能力。但 soa 接口定义包含定长数组、变长数组、字符串等复杂数据类型,simulink 原生服务接口模块无法直接兼容三类类型,造成mbd代码与 soa代码存在数据类型映射壁垒,阻碍模型一键转换为可集成的车载服务代码。
2、相关技术中,通常仅选用 simulink 原生支持的基础数据类型定义 soa 服务接口,规避数组、字符串等复杂类型。该方式大幅限制 soa 接口设计自由度,需要人工拆分复杂数据、手动编写双向转换代码,导致开发工作量大、mbd代码与soa 代码之间转换效率低、模型与服务框架集成效率低下,难以适配当前整车大规模 soa 软件快速开发需求。
技术实现思路
1、为了解决上述技术问题,本公开提供了一种代码文件的生成方法、装置、设备、车辆、介质及产品,以解决mbd代码与soa 代码之间转换效率低的问题。
2、第一方面,本公开提供了一种代码文件的生成方法,该方法包括:获取待转换车载参数的参数类型信息和第一数据;其中,第一数据为待转换车载参数在第一代码文件中的参数取值,第一代码文件的类型为面向服务架构侧代码文件或模型设计开发平台侧代码文件;基于参数类型信息和第二代码文件,将第一数据转换为第二数据;其中,第二代码文件的类型为模型设计开发平台侧代码文件或面向服务架构侧代码文件,第二代码文件与第一代码文件的类型不同;将第二数据存储到第二代码文件,生成目标代码文件。
3、在一种可选的实施方式中,参数类型信息包括待转换车载参数的参数名称;获取第一数据,包括:基于参数名称,在第一代码文件中查询参数名称对应的第一代码段;在第一代码段中查询第一预设字段对应的数据,得到第一数据。
4、在一种可选的实施方式中,参数类型信息还包括待转换车载参数的参数类型和参数长度; 基于参数类型信息和第二代码文件,将第一数据转换为第二数据,包括:当待转换车载参数的参数类型为定长数组类型时,基于参数名称,在第二代码文件中查询参数名称对应的第二代码段;在第二代码段中查询第二预设字段对应的数据,得到待转换车载参数对应的预留存储空间,预留存储空间用于指示待转换车载参数在第二代码文件中预先分配的存储空间;若参数长度与预留存储空间相匹配,则将第一数据确定为第二数据。
5、在一种可选的实施方式中,基于参数类型信息和第二代码文件,将第一数据转换为第二数据,包括:当第一代码文件的类型为面向服务架构侧代码文件,且参数类型为预设类型时,获取待转换车载参数在模型设计开发平台侧的数组成员维度,预设类型为变长数组类型或字符串类型;若参数长度大于数组成员维度,则将第一数量的数据元素确定为第二数据;其中,第一数量的数据元素为第一数据中从起始位置开始截取的第一数量的数据,第一数量与数组成员维度一致;若参数长度小于或等于数组成员维度,则将第一数据确定为第二数据。
6、在一种可选的实施方式中,基于参数类型信息,基于参数类型信息和第二代码文件,将第一数据转换为第二数据,包括:当第一代码文件为模型设计开发平台侧代码文件,且参数类型为预设类型时,获取待转换车载参数在模型设计开发平台侧的数组成员维度和有效长度变量取值,预设类型为变长数组类型或字符串类型,有效长度变量取值用于指示待转换车载参数在模型设计开发平台侧的实际有效数据所占用的字节数;若有效长度变量取值大于数组成员维度,则将第一数据确定为第二数据;若有效长度变量取值小于或等于数组成员维度,则将第三数量的数据元素确定为第二数据,第三数量的数据元素为第一数据中从起始位置开始截取的第三数量的数据,第三数量与有效长度变量取值一致。
7、在一种可选的实施方式中,该方法还包括:获取服务接口配置文件,服务接口配置文件用于描述多个车载服务接口中每个车载服务接口对应的车载参数的元数据信息;基于服务接口配置文件,生成每个车载参数对应的模型设计开发平台侧结构体;基于模型设计开发平台侧结构体,生成多个车载服务接口对应的模型设计开发平台侧代码文件。
8、在一种可选的实施方式中,元数据信息包括每个车载参数的参数数据、参数类型、基础数据类型和预设长度信息;基于服务接口配置文件,生成每个车载参数对应的模型设计开发平台侧结构体,包括:当第一车载参数的参数类型为定长数组类型,且预设长度信息为预设数组成员维度时,根据第一车载参数的参数数据,构建第一结构体,第一结构体包括第一数组成员变量,第一数组成员变量用于存储参数数据,第一数组成员变量的数组成员维度与预设数组成员维度一致,第一数组成员变量的数据类型与基础数据类型匹配,第一车载参数为多个车载参数中的任意一个车载参数;当第一车载参数的参数类型为变长数组类型,且预设长度信息为服务接口配置文件中预设的最大存储长度时,根据第一车载参数的参数数据,构建第二结构体,第二结构体包括第二数组成员变量和第一有效长度变量;其中,第二数组成员变量的数组成员维度为最大存储长度,第一有效长度变量用于表示数组成员变量的有效长度;当第一车载参数的参数类型为字符串类型,且预设长度信息为服务接口配置文件中预设的字符串最大长度时,根据第一车载参数的参数数据,构建第三结构体,第三结构体包括第三数组成员变量和第二有效长度变量;其中,第三数组成员变量的数组成员维度为字符串最大长度,第三数组成员变量的数据类型为字符型,第二有效长度变量用于记录字符串实际有效字符长度。
9、第二方面,本发明提供了一种代码文件的生成装置,该装置包括:获取模块,用于获取待转换车载参数的参数类型信息和第一数据;其中,第一数据为待转换车载参数在第一代码文件中的参数取值,第一代码文件的类型为面向服务架构侧代码文件或模型设计开发平台侧代码文件;转换模块,用于基于参数类型信息和第二代码文件,将第一数据转换为第二数据;其中,第二代码文件的类型为模型设计开发平台侧代码文件或面向服务架构侧代码文件,第二代码文件与第一代码文件的类型不同;生成模块,用于将第二数据存储到第二代码文件,生成目标代码文件。
10、第三方面,本发明提供了一种电子设备,包括:存储器和处理器,存储器和处理器之间互相通信连接,存储器中存储有计算机指令,处理器通过执行计算机指令,从而执行上述第一方面或其对应的任一实施方式的代码文件的生成方法。
11、第四方面,本发明提供了一种车辆,包括上述电子设备,用于执行上述第一方面或其对应的任一实施方式的代码文件的生成方法。
12、第五方面,本发明提供了一种计算机可读存储介质,该计算机可读存储介质上存储有计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的代码文件的生成方法。
13、第六方面,本发明提供了一种计算机程序产品,包括计算机指令,计算机指令用于使计算机执行上述第一方面或其对应的任一实施方式的代码文件的生成方法。
14、本公开实施例提供的技术方案与现有技术相比具有如下优点:
15、本实施例提供的代码文件的生成方法,可以获取待转换车载参数的参数类型信息和第一数据;基于参数类型信息和第二代码文件,将第一数据转换为第二数据;将第二数据存储到第二代码文件,生成目标代码文件。即通过待转换车载参数的参数类型信息作为转换依据,实现 mbd 模型代码与车载 soa 服务代码之间车载参数数据的双向自动化适配转换,依靠参数类型信息区分定长数组、变长数组、字符串、标量等不同参数形态执行差异化转换逻辑,解决两类架构原生数据容器不兼容、无法直接互通的问题,无需人工手动修改、转换各类车载参数数据,避免人工操作引发的类型不匹配、数组长度超限、有效长度标识缺失等编译及运行故障,能够大幅降低整车软件跨架构集成的人工调试工作量,提升车载代码转换效率、数据传输准确性与整车软件开发自动化水平。
版权声明:本站专利文献数据主要来源于国家知识产权局等公开渠道,由 技术新讯 进行整理汇编。页面设计及数据汇编的著作权归本站所有。全部内容仅供个人学习、科研评估与技术交流参考,严禁用于任何商业用途(包括但不限于直接生产制造、技术转让、倒卖数据等)。
免责条款:专利技术具有时效性,本站不对资料的绝对准确性、完整性和可实施性提供任何明示或暗示的担保。因参考本站内容造成的直接或间接损失,本站不承担相关法律责任。若您认为本站内容有侵权问题,请及时提供权属证明与我们联系,本站将在核实后依法处理。反馈意见:yyfuon@163.com