首页 / 一种基于AUTOSAR的模块验证方法及其系统

一种基于AUTOSAR的模块验证方法及其系统公开 发明

技术领域

[0001] 本发明涉及一种数据输入验证技术,尤其是一种基于AUTOSAR的模块验证方法及其系统。

相关背景技术

[0002] 随着汽车电子化水平的提升和车辆功能的增加,现代汽车正经历着一场技术革命。汽车的电子控制单元ECU(Electronic Control Unit),又称"行车电脑"、"车载电脑"等,一般由微控制器和及其外围电路组成。ECU和普通的电脑一样,由微处理器(MCU)、存储器(ROM、RAM)、输入/输出接口(I/O)、模数转换器(A/D)以及整形、驱动等大规模集成电路组成。通常将ECU比喻为汽车的大脑。
[0003] 自2003年起,汽车行业公司携手合作,致力于为汽车工业开发一个开放的、标准化的软件架构。因此,AUTOSAR(AUTomotive Open System ARchitecture,汽车开放系统架构)标准被提出并得到了广泛认同。AUTOSAR是由全球汽车制造商、部件供应商及其他电子、半导体和软件系统公司联合建立,各成员保持开发合作伙伴关系。AUTOSAR这个架构有利于车辆电子系统软件的交换与更新,并为高效管理愈来愈复杂的车辆电子、软件系统提供了一个基础。
[0004] ECU配置是AUTOSAR的重要步骤之一,ECU配置需集成不同基础软件提供商的软件实现,将所需配置的内容提供给用户,并记录用户的配置信息,经过一致性和完整性验证后生成代码,因此验证代码在ECU配置过程中非常重要。尤其是模块相关验证,它决定了生成的代码是否可以正常的使用。
[0005] 现有技术中,浙江大学所研发的SmartSAR内核是基于AUTOSAR标准的汽车电子基础软件,具有标准化、可移植和代码可重用等特点。SmartSAR依托OSGi模块化系统构建,选择了Java语言来打造其基础设施Bundle组,旨在实现模块相关性的验证。
[0006] 然而,在分析Java的适用场景后,尽管Java在处理高性能要求的项目中表现出色,但在规则编写的环节上,其优势并不明显。Java的语法结构相对复杂,对于嵌入式领域的专业人员来说无疑增加了一定的学习门槛。在编写模块验证规则的过程中,涉及到大量的数据处理工作。而Java虽然提供了数据处理的功能,但其数据处理库并不是最丰富的。
[0007] 在科学计算领域,Python拥有强大的NumPy库,可以高效地进行多维数组的运算和处理,而Java在这方面的库相对较弱。NumPy提供了丰富的数学函数和线性代数运算,能够极大地提高科学计算的效率。在数据分析方面,Python的Pandas库是一个非常强大的工具,它可以方便地进行数据的读取、清洗、转换和分析。
[0008] Java中虽然也有一些数据分析的库,但在功能的全面性和易用性上与Pandas有一定差距。Pandas可以轻松处理表格型数据,进行数据的切片、索引、聚合等操作。显然,使用Java来编写模块验证规则并不是最好的方式。
[0009] Vector公司的Configurator Pro提供了给予AUTOSAR规范的验证和配置内容的一致性校验。然而,Configurator Pro的解决方案在开发流程中很大程度上受到了自身原有开发工具结构的限制,与AUTOSAR对开发方法的定义并不完全一致。并且在面对复杂多变的开发任务时,可能难以进行灵活的调整和优化。当需要添加新的验证规则或功能模块时,Configurator Pro 可能需要进行复杂的配置和定制开发。同时,其配置内容仅支持MICROSAR源代码,不能针对其他的基础软件实现参数验证的功能,增加了开发和维护的成本。

具体实施方式

[0033] 参见图1~图4,本发明的一种基于AUTOSAR的模块验证方法,包括如下步骤:步骤1:数据加载步骤;对ECU配置过程中涉及的每个功能模块,从配置器中加载当前所有功能模块的配置信息;
步骤2:数据输入步骤;接收用户输入的模块配置数据;
步骤3:输入验证步骤;通过JEP接口调用Python验证文件,对输入的模块配置数据进行实时验证;
步骤4:如果实时验证失败,则将数据配置失败的通知反馈给用户;然后返回步骤
2,用户重新输入数据,继续验证;
步骤5:如果实时验证成功,则将数据配置成功的通知反馈给用户,结束验证。
[0034] 如图1所示,本发明的一种基于AUTOSAR的模块验证方法,采用基于AUTOSAR的模块划分方式对ECU进行划分。AUTOSAR将微控制器在软件高度抽象为三层:应用层Application、实时运行环境层和基础软件层BSW。基础软件层BSW包括服务层、ECU抽象层、微控制器抽象层以及复杂驱动层。ECU抽象层、微控制器抽象层以及复杂驱动层分出许多抽象模块,每个抽象模块包括有子模块。例如,在LIN COMM抽象模块中有许多子模块,linif子模块负责处理LIN接口。本发明基于AUTOSAR划分ECU配置过程中涉及的每个功能模块,对每个功能模块进行独立验证;验证的过程中,利用Python脚本灵活地处理各类配置数据,并通过调用不同的验证规则来保证各功能模块的正确性和一致性。
[0035] 如图2,本发明的基于AUTOSAR的模块验证方法的验证系统,包括ECU配置器验证模块和Python验证文件。配置器验证模块负责整个验证系统的验证数据处理和调用,包括验证模块配置管理、python方法分类以及验证结果返回等功能,用于在ECU配置过程中对涉及的各个功能模块进行验证。具体的验证逻辑则通过Python验证文件来实现。为了在Java环境中执行这些Python脚本,系统采用了JEP(Java Embedded Python)技术。
[0036] 具体实施时,所述步骤1中,所述配置信息存储于MongoDB 数据库中。
[0037] 从配置器中加载的配置信息被存储在MongoDB数据库中。所述配置信息定义了各个功能模块的参数及不同功能模块之间的相互引用关系。
[0038] 例如,LIN COMM抽象模块的linif子模块中定义了一系列容器。所述容器中存储着用户配置数据,包括实例的创建、参数配置、引用关系及子容器的嵌套。为了便于管理,不同功能模块的Python脚本被组织在相应的文件夹内。linif子模块的验证脚本则专门放在linif验证文件夹中。linif子模块的验证脚本中定义了linif子模块所需配置的参数、引用数量、大小以及实例数量等配置信息。在进行linif验证时,系统会调用JEP的invoke方法,将需要约束的名称及相应的模块配置数据输入。此时,Python方法会对输入的模块配置数据进行验证。如果输入的模块配置数据超出预设范围或未进行配置,系统会返回错误信息,提示输入的模块配置数据的预设范围以及是否缺少了某个配置参数。通过这一验证机制,确保了系统各模块配置数据的完整性和准确性。
[0039] 具体实施时,所述步骤2中,所述模块配置数据包括模块实例、参数设置以及引用的配置。
[0040] 所述模块配置数据包括模块实例、参数设置以及引用的配置。
[0041] 具体实施时,所述步骤2中,用户输入模块配置数据时,对数据类型、格式以及范围的正确性进行验证,并检查必需参数是否齐全。
[0042] 所述步骤2中,验证系统对实时输入的模块配置数据进行输入验证。通过输入验证确保数据类型、格式以及范围的正确性,并检查必需参数是否齐全。功能模块中输入验证是通过元模型来实现。在元模型中,初步定义了实例、参数、引用的个数以及参数的范围,以确保值模型符合通用的验证规则。
[0043] 具体实施时,所述步骤3中,所述对输入的模块配置数据进行实时验证,包括实例验证、参数验证和引用验证和自动计算。
[0044] 本发明中,通过JEP接口调用Python脚本来执行验证。JEP允许Java和Python代码在同一进程中运行,因此模块配置数据的参数传递给Python进行验证。在Python验证阶段,每个功能模块都有专门的方法来检查其参数是否符合规则,包括实例验证、参数验证和引用验证和自动计算,以确保ECU配置的合理性。
[0045] 具体实施时,所述步骤4中,将数据配置失败的通知反馈给用户的同时,发送错误和警告信息。
[0046] 具体实施时,所述步骤4中,所述错误和警告信息中,包括错误参数及该错误参数的修改建议。
[0047] 如果验证失败,Python会返回数据配置失败的通知,并附带详细的错误和警告信息。错误和警告信息会通过系统显示给用户,并指出具体的错误参数以及修改建议。例如,如linif子模块中,输入的某一参数配置为5,而Python脚本对应的参数范围是6~10,那么就会提醒该参数配置值不符合要求,范围应该在6~10。
[0048] 用户根据反馈进行修改,然后可以重新启动验证流程,直到所有验证通过为止。这样通过输入验证、模块实例化、JEP接口调用Python、反馈验证结果,再到用户修改和重新验证,整个验证流程形成了一个完整的闭环,确保系统的配置正确性和稳定性。
[0049] 如果验证成功,Python脚本会返回成功状态,系统会通知用户验证成功。
[0050] 本发明还公开了一种基于AUTOSAR的模块验证方法的验证系统,包括ECU配置器验证模块和Python验证文件;所述ECU配置器验证模块,用于验证数据处理和调用,包括验证模块配置管理、python方法分类以及验证结果返回;
所述Python验证文件包括一个主文件夹;所述主文件夹内包括不同的AUTOSAR标准版本的版本子文件夹。
[0051] 具体实施时,所述版本文件夹包括device核心子文件夹和device核心子文件夹。
[0052] 具体实施时,所述easysar核心子文件夹对应基础软件层BSW;所述device核心子文件夹对应微控制器抽象层MCAL。
[0053] 如图2,本发明的基于AUTOSAR的模块验证方法的验证系统,包括ECU配置器验证模块和Python验证文件。配置器验证模块负责整个验证系统的验证数据处理和调用,包括验证模块配置管理、python方法分类以及验证结果返回等功能,用于在ECU配置过程中对涉及的各个功能模块进行验证。具体的验证逻辑则通过Python验证文件来实现。为了在Java环境中执行这些Python脚本,系统采用了JEP(Java Embedded Python)技术。
[0054] Python验证文件结构如图3所示,包括一个主文件夹ANGHUI。主文件夹ANGHUI的子文件夹根据不同的AUTOSAR标准版本(如AUTOSAR 4.2.2和AUTOSAR 4.4.0)进行划分。在每个AUTOSAR标准版本的版本子文件夹中,包含了两个核心子文件夹,分别是easysar核心子文件夹和device核心子文件夹。
[0055] 所述两个核心子文件夹对应AUTOSAR架构的两个主要层次:基础软件层(Basic Software, BSW)和微控制器抽象层(Microcontroller Abstraction Layer, MCAL)。easysar核心子文件夹对应基础软件层BSW。基础软件层BSW是AUTOSAR架构的一个重要组成部分,包含了支持应用层和运行时环境(RTE)功能的基础软件模块。device核心子文件夹对应微控制器抽象层MCAL。微控制器抽象层MCAL位于AUTOSAR架构的最底层,直接与硬件进行交互。
[0056] 本发明中,采用JEP技术使得Java与Python能够在同一进程中运行。对ECU配置器进行功能模块的参数验证时,调用验证接口传入对应的功能模块的名称,通过JEP调用ANGHUI文件夹中的对应功能模块的验证Python文件,JEP调用python文件的原理图见图4。
[0057] 通过Python文件对功能模块的参数进行验证,然后返回验证成功或验证失败的提示。例如,如果linif子模块中的LinIf Schedule Table容器的实例normaltable缺少必要的参数LinIf ScheduleTable Index,则会报错,提示:“ERROR:LinIf Schedule Table Index参数未配置”。
[0058] 本发明中,JEP(Java Embedded Python)通过调用JNI(JavaNative Interface)和CPython的API,将Python解释器嵌入JVM中,使Java可以调用Python代码。
[0059] 所述Python解释器嵌入JVM的工作机制是:在JVM启动时初始化一个顶层的Python解释器,负责启动和管理Python环境。顶层解释器在JVM的整个生命周期内一直保持活动,直到JVM被销毁。每当在Java代码中创建一个JEP实例时,JEP会基于这个顶层解释器为该实例创建一个独立的子解释器。子解释器是与其他JEP实例隔离的独立环境,允许在多线程场景下安全地执行Python代码。
[0060] 由于JEP自身是线程安全的,不同的Java线程可以各自创建和使用自己的JEP实例,保证了多个Python环境的独立运行,并避免了不同Java线程之间的相互干扰。子解释器的生命周期与JEP实例绑定,当不再需要JEP实例时,可以通过调用jep.close()函数来关闭该实例对应的子解释器,释放其占用的资源。而顶层解释器会一直留存在JVM中,直到整个JVM进程终止。
[0061] JEP通过子解释器的设计,允许每个JEP实例在隔离的环境中运行。这种隔离避免了不同线程之间的干扰,确保了资源和状态不会相互影响。有效地确保了Java和Python之间的交互在单线程和多线程环境中的安全性。
[0062] 本发明的基于AUTOSAR的模块验证方法的验证系统,具有以下几个方面的特点。
[0063] 1、使用python脚本语言进行开发,其语法简洁明了,使得代码具有极高的可读性。同时,Python 内置了丰富的数据结构,如列表、字典、集合等,为开发人员提供了极大的便利,节约了学习成本。此外,Python拥有大量的数据科学库作为支撑,为数据处理、分析等工作提供了强大的工具。
[0064] 2、Python 的解释器可以在多种操作系统上运行,包括但不限于 Windows、macOS、Linux,具有良好的可移植性。
[0065] 3、通过基于AUTOSAR的模块划分,对每个模块进行独立验证从而提高了系统的可维护性。
[0066] 对于本领域技术人员而言,显然本发明不限于上述示范性实施例的细节,而且在不背离本发明的精神或基本特征的情况下,能够以其他的具体形式实现本发明。因此,无论从哪一点来看,均应将实施例看作是示范性的,而且是非限制性的,本发明的范围由所附权利要求而不是上述说明限定,因此旨在将落在权利要求的等同要件的含义和范围内的所有变化囊括在本发明内。不应将权利要求中的任何附图标记视为限制所涉及的权利要求。
[0067] 此外,应当理解,虽然本说明书按照实施方式加以描述,但并非每个实施方式仅包含一个独立的技术方案,说明书的这种叙述方式仅仅是为清楚起见,本领域技术人员应当将说明书作为一个整体,各实施例中的技术方案也可以经适当组合,形成本领域技术人员可以理解的其他实施方式。

当前第1页 第1页 第2页 第3页